DXGL r377 - Code Review

Jump to navigation Jump to search
Repository:DXGL
Revision:r376‎ | r377 | r378 >
Date:22:18, 15 May 2013
Author:admin
Status:new
Tags:
Comment:
Add GL_ARB_sampler_objects functions.
Detect ARB extensions that become core features by GL version in case extension string is not present.
Modified paths:
  • /ddraw/glExtensions.cpp (modified) (history)
  • /ddraw/glExtensions.h (modified) (history)

Diff [purge]

Index: ddraw/glExtensions.cpp
@@ -95,6 +95,13 @@
9696 void (APIENTRY *glMatrixLoadfEXT)(GLenum mode, const GLfloat *m) = NULL;
9797 void (APIENTRY *glMatrixMultfEXT)(GLenum mode, const GLfloat *m) = NULL;
9898
 99+void (APIENTRY *glBindSampler)(GLuint unit, GLuint sampler) = NULL;
 100+void (APIENTRY *glDeleteSamplers)(GLsizei n, const GLuint *samplers) = NULL;
 101+void (APIENTRY *glGenSamplers)(GLsizei n, GLuint *samplers) = NULL;
 102+void (APIENTRY *glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param) = NULL;
 103+void (APIENTRY *glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param) = NULL;
 104+void (APIENTRY *glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *params) = NULL;
 105+void (APIENTRY *glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *params) = NULL;
99106
100107 int GLEXT_ARB_framebuffer_object = 0;
101108 int GLEXT_EXT_framebuffer_object = 0;
@@ -106,6 +113,7 @@
107114 int GLEXT_ATI_meminfo = 0;
108115 int GLEXT_ARB_ES2_compatibility = 0;
109116 int GLEXT_EXT_direct_state_access = 0;
 117+int GLEXT_ARB_sampler_objects = 0;
110118 int glver_major, glver_minor = 0;
111119 bool atimem = false;
112120
@@ -173,7 +181,7 @@
174182 ExitProcess(-1);
175183 }
176184 const GLubyte *glextensions = glGetString(GL_EXTENSIONS);
177 - if(strstr((char*)glextensions,"GL_ARB_framebuffer_object")) GLEXT_ARB_framebuffer_object = 1;
 185+ if(strstr((char*)glextensions,"GL_ARB_framebuffer_object") || (glver_major >= 3)) GLEXT_ARB_framebuffer_object = 1;
178186 else GLEXT_ARB_framebuffer_object = 0;
179187 if(strstr((char*)glextensions,"GL_EXT_framebuffer_object")) GLEXT_EXT_framebuffer_object = 1;
180188 else GLEXT_EXT_framebuffer_object = 0;
@@ -181,18 +189,23 @@
182190 else GLEXT_NV_packed_depth_stencil = 0;
183191 if(strstr((char*)glextensions,"GL_EXT_packed_depth_stencil")) GLEXT_EXT_packed_depth_stencil = 1;
184192 else GLEXT_EXT_packed_depth_stencil = 0;
185 - if(strstr((char*)glextensions,"GL_ARB_depth_buffer_float")) GLEXT_ARB_depth_buffer_float = 1;
 193+ if(strstr((char*)glextensions,"GL_ARB_depth_buffer_float") || (glver_major >= 3)) GLEXT_ARB_depth_buffer_float = 1;
186194 else GLEXT_ARB_depth_buffer_float = 0;
187 - if(strstr((char*)glextensions,"GL_ARB_depth_texture")) GLEXT_ARB_depth_texture = 1;
 195+ if(strstr((char*)glextensions,"GL_ARB_depth_texture") || (glver_major >= 2)
 196+ || ((glver_major >= 1) && (glver_minor >= 4))) GLEXT_ARB_depth_texture = 1;
188197 else GLEXT_ARB_depth_texture = 0;
189198 if(strstr((char*)glextensions,"GL_NVX_gpu_memory_info")) GLEXT_NVX_gpu_memory_info = 1;
190199 else GLEXT_NVX_gpu_memory_info = 0;
191200 if(strstr((char*)glextensions,"GL_ATI_meminfo")) GLEXT_ATI_meminfo = 1;
192201 else GLEXT_ATI_meminfo = 0;
193 - if(strstr((char*)glextensions,"GL_ARB_ES2_compatibility")) GLEXT_ARB_ES2_compatibility = 1;
 202+ if(strstr((char*)glextensions,"GL_ARB_ES2_compatibility") || (glver_major >= 5)
 203+ || ((glver_major >= 4) && (glver_minor >= 1))) GLEXT_ARB_ES2_compatibility = 1;
194204 else GLEXT_ARB_ES2_compatibility = 0;
195205 if(strstr((char*)glextensions,"GL_EXT_direct_state_access")) GLEXT_EXT_direct_state_access = 1;
196206 else GLEXT_EXT_direct_state_access = 0;
 207+ if(strstr((char*)glextensions,"GL_ARB_sampler_objects") || (glver_major >= 4)
 208+ || ((glver_major >= 3) && (glver_minor >= 3))) GLEXT_ARB_sampler_objects = 1;
 209+ else GLEXT_ARB_sampler_objects = 0;
197210 bool broken_fbo = true;
198211 if(GLEXT_ARB_framebuffer_object)
199212 {
@@ -229,6 +242,16 @@
230243 glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)wglGetProcAddress("glMatrixLoadfEXT");
231244 glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)wglGetProcAddress("glMatrixMultfEXT");
232245 }
 246+ if(GLEXT_ARB_sampler_objects)
 247+ {
 248+ glBindSampler = (PFNGLBINDSAMPLERPROC)wglGetProcAddress("glBindSampler");
 249+ glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)wglGetProcAddress("glDeleteSamplers");
 250+ glGenSamplers = (PFNGLGENSAMPLERSPROC)wglGetProcAddress("glGenSamplers");
 251+ glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)wglGetProcAddress("glSamplerParameterf");
 252+ glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)wglGetProcAddress("glSamplerParameteri");
 253+ glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)wglGetProcAddress("glSamplerParameterfv");
 254+ glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)wglGetProcAddress("glSamplerParameteriv");
 255+ }
233256 if(broken_fbo)
234257 {
235258 MessageBox(NULL,_T("DXGL requires support for OpenGL Framebuffer Objects to function. \
Index: ddraw/glExtensions.h
@@ -36,6 +36,7 @@
3737 extern int GLEXT_ATI_meminfo;
3838 extern int GLEXT_ARB_ES2_compatibility;
3939 extern int GLEXT_EXT_direct_state_access;
 40+extern int GLEXT_ARB_sampler_objects;
4041 extern int glver_major;
4142 extern int glver_minor;
4243 #define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
@@ -124,6 +125,14 @@
125126 GLAPI void (APIENTRY *glMatrixLoadfEXT)(GLenum mode, const GLfloat *m);
126127 GLAPI void (APIENTRY *glMatrixMultfEXT)(GLenum mode, const GLfloat *m);
127128
 129+GLAPI void (APIENTRY *glBindSampler)(GLuint unit, GLuint sampler);
 130+GLAPI void (APIENTRY *glDeleteSamplers)(GLsizei n, const GLuint *samplers);
 131+GLAPI void (APIENTRY *glGenSamplers)(GLsizei n, GLuint *samplers);
 132+GLAPI void (APIENTRY *glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param);
 133+GLAPI void (APIENTRY *glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param);
 134+GLAPI void (APIENTRY *glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *params);
 135+GLAPI void (APIENTRY *glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *params);
 136+
128137 void InitGLExt();
129138
130139 #endif //_GLEXTENSIONS_H