This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository ioquake3.

commit 716438168f160885fe1d8cc2e076e97901bd436c
Author: SmileTheory <smilethe...@gmail.com>
Date:   Tue Jul 26 00:41:31 2016 -0700

    OpenGL2: Use loader for all extension funcs.
---
 code/renderercommon/qgl.h        | 202 +++++++++++--------------------------
 code/renderergl2/tr_backend.c    |   2 +-
 code/renderergl2/tr_bsp.c        |   2 +-
 code/renderergl2/tr_extensions.c | 208 ++++++++++++++++-----------------------
 code/renderergl2/tr_image.c      |   7 +-
 code/renderergl2/tr_init.c       |   2 +-
 code/renderergl2/tr_local.h      |   1 -
 code/renderergl2/tr_shade.c      |   8 +-
 code/renderergl2/tr_vbo.c        |  14 +--
 9 files changed, 158 insertions(+), 288 deletions(-)

diff --git a/code/renderercommon/qgl.h b/code/renderercommon/qgl.h
index 6f27e13..6f70f64 100644
--- a/code/renderercommon/qgl.h
+++ b/code/renderercommon/qgl.h
@@ -438,14 +438,6 @@ extern void (APIENTRYP qglUnlockArraysEXT) (void);
        GLE(void, ValidateProgram, GLuint program) \
        GLE(void, VertexAttribPointer, GLuint index, GLint size, GLenum type, 
GLboolean normalized, GLsizei stride, const void *pointer) \
 
-#define GLE(ret, name, ...) typedef ret APIENTRY name##proc(__VA_ARGS__); 
extern name##proc * qgl##name;
-QGL_1_2_PROCS
-QGL_1_3_PROCS
-QGL_1_4_PROCS
-QGL_1_5_PROCS
-QGL_2_0_PROCS
-#undef GLE
-
 // GL_NVX_gpu_memory_info
 #ifndef GL_NVX_gpu_memory_info
 #define GL_NVX_gpu_memory_info
@@ -495,27 +487,18 @@ QGL_2_0_PROCS
 #endif
 
 // GL_EXT_framebuffer_object
-extern GLboolean (APIENTRY * qglIsRenderbufferEXT)(GLuint renderbuffer);
-extern void (APIENTRY * qglBindRenderbufferEXT)(GLenum target, GLuint 
renderbuffer);
-extern void (APIENTRY * qglDeleteRenderbuffersEXT)(GLsizei n, const GLuint 
*renderbuffers);
-extern void (APIENTRY * qglGenRenderbuffersEXT)(GLsizei n, GLuint 
*renderbuffers);
-extern void (APIENTRY * qglRenderbufferStorageEXT)(GLenum target, GLenum 
internalformat, GLsizei width, GLsizei height);
-extern void (APIENTRY * qglGetRenderbufferParameterivEXT)(GLenum target, 
GLenum pname, GLint *params);
-extern GLboolean (APIENTRY * qglIsFramebufferEXT)(GLuint framebuffer);
-extern void (APIENTRY * qglBindFramebufferEXT)(GLenum target, GLuint 
framebuffer);
-extern void (APIENTRY * qglDeleteFramebuffersEXT)(GLsizei n, const GLuint 
*framebuffers);
-extern void (APIENTRY * qglGenFramebuffersEXT)(GLsizei n, GLuint 
*framebuffers);
-extern GLenum (APIENTRY * qglCheckFramebufferStatusEXT)(GLenum target);
-extern void (APIENTRY * qglFramebufferTexture1DEXT)(GLenum target, GLenum 
attachment, GLenum textarget, GLuint texture,
-       GLint level);
-extern void (APIENTRY * qglFramebufferTexture2DEXT)(GLenum target, GLenum 
attachment, GLenum textarget, GLuint texture,
-       GLint level);
-extern void (APIENTRY * qglFramebufferTexture3DEXT)(GLenum target, GLenum 
attachment, GLenum textarget, GLuint texture,
-       GLint level, GLint zoffset);
-extern void (APIENTRY * qglFramebufferRenderbufferEXT)(GLenum target, GLenum 
attachment, GLenum renderbuffertarget,
-       GLuint renderbuffer);
-extern void (APIENTRY * qglGetFramebufferAttachmentParameterivEXT)(GLenum 
target, GLenum attachment, GLenum pname, GLint *params);
-extern void (APIENTRY * qglGenerateMipmapEXT)(GLenum target);
+#define QGL_EXT_framebuffer_object_PROCS \
+       GLE(void, BindRenderbufferEXT, GLenum target, GLuint renderbuffer) \
+       GLE(void, DeleteRenderbuffersEXT, GLsizei n, const GLuint 
*renderbuffers) \
+       GLE(void, GenRenderbuffersEXT, GLsizei n, GLuint *renderbuffers) \
+       GLE(void, RenderbufferStorageEXT, GLenum target, GLenum internalformat, 
GLsizei width, GLsizei height) \
+       GLE(void, BindFramebufferEXT, GLenum target, GLuint framebuffer) \
+       GLE(void, DeleteFramebuffersEXT, GLsizei n, const GLuint *framebuffers) 
\
+       GLE(void, GenFramebuffersEXT, GLsizei n, GLuint *framebuffers) \
+       GLE(GLenum, CheckFramebufferStatusEXT, GLenum target) \
+       GLE(void, FramebufferTexture2DEXT, GLenum target, GLenum attachment, 
GLenum textarget, GLuint texture, GLint level) \
+       GLE(void, FramebufferRenderbufferEXT, GLenum target, GLenum attachment, 
GLenum renderbuffertarget, GLuint renderbuffer) \
+       GLE(void, GenerateMipmapEXT, GLenum target) \
 
 #ifndef GL_EXT_framebuffer_object
 #define GL_EXT_framebuffer_object
@@ -572,19 +555,9 @@ extern void (APIENTRY * qglGenerateMipmapEXT)(GLenum 
target);
 #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT   0x0506
 #endif
 
-// GL_EXT_packed_depth_stencil
-#ifndef GL_EXT_packed_depth_stencil
-#define GL_EXT_packed_depth_stencil
-#define GL_DEPTH_STENCIL_EXT                              0x84F9
-#define GL_UNSIGNED_INT_24_8_EXT                          0x84FA
-#define GL_DEPTH24_STENCIL8_EXT                           0x88F0
-#define GL_TEXTURE_STENCIL_SIZE_EXT                       0x88F1
-#endif
-
 // GL_EXT_framebuffer_blit
-extern void (APIENTRY * qglBlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint 
srcX1, GLint srcY1,
-                            GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
-                            GLbitfield mask, GLenum filter);
+#define QGL_EXT_framebuffer_blit_PROCS \
+       GLE(void, BlitFramebufferEXT, GLint srcX0, GLint srcY0, GLint srcX1, 
GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield 
mask, GLenum filter) \
 
 #ifndef GL_EXT_framebuffer_blit
 #define GL_EXT_framebuffer_blit
@@ -595,8 +568,8 @@ extern void (APIENTRY * qglBlitFramebufferEXT)(GLint srcX0, 
GLint srcY0, GLint s
 #endif
 
 // GL_EXT_framebuffer_multisample
-extern void (APIENTRY * qglRenderbufferStorageMultisampleEXT)(GLenum target, 
GLsizei samples,
-       GLenum internalformat, GLsizei width, GLsizei height);
+#define QGL_EXT_framebuffer_multisample_PROCS \
+       GLE(void, RenderbufferStorageMultisampleEXT, GLenum target, GLsizei 
samples, GLenum internalformat, GLsizei width, GLsizei height) \
 
 #ifndef GL_EXT_framebuffer_multisample
 #define GL_EXT_framebuffer_multisample
@@ -605,31 +578,6 @@ extern void (APIENTRY * 
qglRenderbufferStorageMultisampleEXT)(GLenum target, GLs
 #define GL_MAX_SAMPLES_EXT                         0x8D57
 #endif
 
-#ifndef GL_EXT_texture_sRGB
-#define GL_EXT_texture_sRGB
-#define GL_SRGB_EXT                                       0x8C40
-#define GL_SRGB8_EXT                                      0x8C41
-#define GL_SRGB_ALPHA_EXT                                 0x8C42
-#define GL_SRGB8_ALPHA8_EXT                               0x8C43
-#define GL_SLUMINANCE_ALPHA_EXT                           0x8C44
-#define GL_SLUMINANCE8_ALPHA8_EXT                         0x8C45
-#define GL_SLUMINANCE_EXT                                 0x8C46
-#define GL_SLUMINANCE8_EXT                                0x8C47
-#define GL_COMPRESSED_SRGB_EXT                            0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA_EXT                      0x8C49
-#define GL_COMPRESSED_SLUMINANCE_EXT                      0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT                0x8C4B
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT                  0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT            0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT            0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT            0x8C4F
-#endif
-
-#ifndef GL_EXT_framebuffer_sRGB
-#define GL_EXT_framebuffer_sRGB
-#define GL_FRAMEBUFFER_SRGB_EXT                         0x8DB9
-#endif
-
 #ifndef GL_ARB_texture_compression_rgtc
 #define GL_ARB_texture_compression_rgtc
 #define GL_COMPRESSED_RED_RGTC1                       0x8DBB
@@ -657,91 +605,51 @@ extern void (APIENTRY * 
qglRenderbufferStorageMultisampleEXT)(GLenum target, GLs
 #endif
 
 // GL_ARB_vertex_array_object
-extern void (APIENTRY * qglBindVertexArrayARB)(GLuint array);
-extern void (APIENTRY * qglDeleteVertexArraysARB)(GLsizei n, const GLuint 
*arrays);
-extern void (APIENTRY * qglGenVertexArraysARB)(GLsizei n, GLuint *arrays);
-extern GLboolean (APIENTRY * qglIsVertexArrayARB)(GLuint array);
+#define QGL_ARB_vertex_array_object_PROCS \
+       GLE(void, BindVertexArray, GLuint array) \
+       GLE(void, DeleteVertexArrays, GLsizei n, const GLuint *arrays) \
+       GLE(void, GenVertexArrays, GLsizei n, GLuint *arrays) \
+
 #ifndef GL_ARB_vertex_array_object
 #define GL_ARB_vertex_array_object
 #define GL_VERTEX_ARRAY_BINDING_ARB                0x85B5
 #endif
 
 // GL_EXT_direct_state_access
-extern GLvoid(APIENTRY * qglBindMultiTexture)(GLenum texunit, GLenum target, 
GLuint texture);
-extern GLvoid(APIENTRY * qglTextureParameterf)(GLuint texture, GLenum target, 
GLenum pname, GLfloat param);
-extern GLvoid(APIENTRY * qglTextureParameteri)(GLuint texture, GLenum target, 
GLenum pname, GLint param);
-extern GLvoid(APIENTRY * qglTextureImage2D)(GLuint texture, GLenum target, 
GLint level, GLint internalformat,
-       GLsizei width, GLsizei height, GLint border, GLenum format, GLenum 
type, const GLvoid *pixels);
-extern GLvoid(APIENTRY * qglTextureSubImage2D)(GLuint texture, GLenum target, 
GLint level, GLint xoffset, GLint yoffset,
-       GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid 
*pixels);
-extern GLvoid(APIENTRY * qglCopyTextureImage2D)(GLuint texture, GLenum target, 
GLint level, GLenum internalformat,
-       GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-extern GLvoid(APIENTRY * qglCompressedTextureImage2D)(GLuint texture, GLenum 
target, GLint level, GLenum internalformat,
-       GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const 
GLvoid *data);
-extern GLvoid(APIENTRY * qglCompressedTextureSubImage2D)(GLuint texture, 
GLenum target, GLint level,
-       GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum 
format,
-       GLsizei imageSize, const GLvoid *data);
-extern GLvoid(APIENTRY * qglGenerateTextureMipmap)(GLuint texture, GLenum 
target);
-
-extern GLvoid(APIENTRY * qglProgramUniform1i)(GLuint program, GLint location, 
GLint v0);
-extern GLvoid(APIENTRY * qglProgramUniform1f)(GLuint program, GLint location, 
GLfloat v0);
-extern GLvoid(APIENTRY * qglProgramUniform2f)(GLuint program, GLint location,
-       GLfloat v0, GLfloat v1);
-extern GLvoid(APIENTRY * qglProgramUniform3f)(GLuint program, GLint location,
-       GLfloat v0, GLfloat v1, GLfloat v2);
-extern GLvoid(APIENTRY * qglProgramUniform4f)(GLuint program, GLint location,
-       GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-extern GLvoid(APIENTRY * qglProgramUniform1fv)(GLuint program, GLint location,
-       GLsizei count, const GLfloat *value);
-extern GLvoid(APIENTRY * qglProgramUniformMatrix4fv)(GLuint program, GLint 
location,
-       GLsizei count, GLboolean transpose,
-       const GLfloat *value);
-
-extern GLvoid(APIENTRY * qglNamedRenderbufferStorage)(GLuint renderbuffer,
-       GLenum internalformat, GLsizei width, GLsizei height);
-
-extern GLvoid(APIENTRY * qglNamedRenderbufferStorageMultisample)(GLuint 
renderbuffer,
-       GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-
-extern GLenum(APIENTRY * qglCheckNamedFramebufferStatus)(GLuint framebuffer, 
GLenum target);
-extern GLvoid(APIENTRY * qglNamedFramebufferTexture2D)(GLuint framebuffer,
-       GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-extern GLvoid(APIENTRY * qglNamedFramebufferRenderbuffer)(GLuint framebuffer,
-       GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-
-
-
-
-#if defined(WIN32)
-// WGL_ARB_create_context
-#ifndef WGL_ARB_create_context
-#define WGL_CONTEXT_MAJOR_VERSION_ARB             0x2091
-#define WGL_CONTEXT_MINOR_VERSION_ARB             0x2092
-#define WGL_CONTEXT_LAYER_PLANE_ARB               0x2093
-#define WGL_CONTEXT_FLAGS_ARB                     0x2094
-#define WGL_CONTEXT_PROFILE_MASK_ARB              0x9126
-#define WGL_CONTEXT_DEBUG_BIT_ARB                 0x0001
-#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB    0x0002
-#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB          0x00000001
-#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
-#define ERROR_INVALID_VERSION_ARB                 0x2095
-#define ERROR_INVALID_PROFILE_ARB                 0x2096
-#endif
+#define QGL_EXT_direct_state_access_PROCS \
+       GLE(GLvoid, BindMultiTexture, GLenum texunit, GLenum target, GLuint 
texture) \
+       GLE(GLvoid, TextureParameterf, GLuint texture, GLenum target, GLenum 
pname, GLfloat param) \
+       GLE(GLvoid, TextureParameteri, GLuint texture, GLenum target, GLenum 
pname, GLint param) \
+       GLE(GLvoid, TextureImage2D, GLuint texture, GLenum target, GLint level, 
GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum 
format, GLenum type, const GLvoid *pixels) \
+       GLE(GLvoid, TextureSubImage2D, GLuint texture, GLenum target, GLint 
level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum 
format, GLenum type, const GLvoid *pixels) \
+       GLE(GLvoid, CopyTextureImage2D, GLuint texture, GLenum target, GLint 
level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, 
GLint border) \
+       GLE(GLvoid, CompressedTextureImage2D, GLuint texture, GLenum target, 
GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint 
border, GLsizei imageSize, const GLvoid *data) \
+       GLE(GLvoid, CompressedTextureSubImage2D, GLuint texture, GLenum target, 
GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, 
GLenum format, GLsizei imageSize, const GLvoid *data) \
+       GLE(GLvoid, GenerateTextureMipmap, GLuint texture, GLenum target) \
+       GLE(GLvoid, ProgramUniform1i, GLuint program, GLint location, GLint v0) 
\
+       GLE(GLvoid, ProgramUniform1f, GLuint program, GLint location, GLfloat 
v0) \
+       GLE(GLvoid, ProgramUniform2f, GLuint program, GLint location, GLfloat 
v0, GLfloat v1) \
+       GLE(GLvoid, ProgramUniform3f, GLuint program, GLint location, GLfloat 
v0, GLfloat v1, GLfloat v2) \
+       GLE(GLvoid, ProgramUniform4f, GLuint program, GLint location, GLfloat 
v0, GLfloat v1, GLfloat v2, GLfloat v3) \
+       GLE(GLvoid, ProgramUniform1fv, GLuint program, GLint location, GLsizei 
count, const GLfloat *value) \
+       GLE(GLvoid, ProgramUniformMatrix4fv, GLuint program, GLint location, 
GLsizei count, GLboolean transpose, const GLfloat *value) \
+       GLE(GLvoid, NamedRenderbufferStorage, GLuint renderbuffer, GLenum 
internalformat, GLsizei width, GLsizei height) \
+       GLE(GLvoid, NamedRenderbufferStorageMultisample, GLuint renderbuffer, 
GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) \
+       GLE(GLenum, CheckNamedFramebufferStatus, GLuint framebuffer, GLenum 
target) \
+       GLE(GLvoid, NamedFramebufferTexture2D, GLuint framebuffer, GLenum 
attachment, GLenum textarget, GLuint texture, GLint level) \
+       GLE(GLvoid, NamedFramebufferRenderbuffer, GLuint framebuffer, GLenum 
attachment, GLenum renderbuffertarget, GLuint renderbuffer) \
 
-extern          HGLRC(APIENTRY * qwglCreateContextAttribsARB) (HDC hdC, HGLRC 
hShareContext, const int *attribList);
-#endif
-
-#if 0 //defined(__linux__)
-// GLX_ARB_create_context
-#ifndef GLX_ARB_create_context
-#define GLX_CONTEXT_DEBUG_BIT_ARB          0x00000001
-#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
-#define GLX_CONTEXT_MAJOR_VERSION_ARB      0x2091
-#define GLX_CONTEXT_MINOR_VERSION_ARB      0x2092
-#define GLX_CONTEXT_FLAGS_ARB              0x2094
-#endif
-
-extern GLXContext      (APIENTRY * qglXCreateContextAttribsARB) (Display *dpy, 
GLXFBConfig config, GLXContext share_context, Bool direct, const int 
*attrib_list);
-#endif
+#define GLE(ret, name, ...) typedef ret APIENTRY name##proc(__VA_ARGS__); 
extern name##proc * qgl##name;
+QGL_1_2_PROCS;
+QGL_1_3_PROCS;
+QGL_1_4_PROCS;
+QGL_1_5_PROCS;
+QGL_2_0_PROCS;
+QGL_EXT_framebuffer_object_PROCS;
+QGL_EXT_framebuffer_blit_PROCS;
+QGL_EXT_framebuffer_multisample_PROCS;
+QGL_ARB_vertex_array_object_PROCS;
+QGL_EXT_direct_state_access_PROCS;
+#undef GLE
 
 #endif
diff --git a/code/renderergl2/tr_backend.c b/code/renderergl2/tr_backend.c
index f9dcd03..b8ca113 100644
--- a/code/renderergl2/tr_backend.c
+++ b/code/renderergl2/tr_backend.c
@@ -1184,7 +1184,7 @@ const void        *RB_DrawSurfs( const void *data ) {
                        RB_DrawSun(0.1, tr.sunShader);
                }
 
-               if (r_drawSunRays->integer)
+               if (glRefConfig.framebufferObject && r_drawSunRays->integer)
                {
                        FBO_t *oldFbo = glState.currentFBO;
                        FBO_Bind(tr.sunRaysFbo);
diff --git a/code/renderergl2/tr_bsp.c b/code/renderergl2/tr_bsp.c
index 2b3f0a5..2feeddb 100644
--- a/code/renderergl2/tr_bsp.c
+++ b/code/renderergl2/tr_bsp.c
@@ -3526,7 +3526,7 @@ void RE_LoadWorldMap( const char *name ) {
        R_BindNullVao();
 
        // Render or load all cubemaps
-       if (r_cubeMapping->integer && tr.numCubemaps)
+       if (r_cubeMapping->integer && tr.numCubemaps && 
glRefConfig.framebufferObject)
        {
                R_LoadCubemaps();
                R_RenderMissingCubemaps();
diff --git a/code/renderergl2/tr_extensions.c b/code/renderergl2/tr_extensions.c
index e150079..3882434 100644
--- a/code/renderergl2/tr_extensions.c
+++ b/code/renderergl2/tr_extensions.c
@@ -36,6 +36,11 @@ QGL_1_3_PROCS;
 QGL_1_4_PROCS;
 QGL_1_5_PROCS;
 QGL_2_0_PROCS;
+QGL_EXT_framebuffer_object_PROCS;
+QGL_EXT_framebuffer_blit_PROCS;
+QGL_EXT_framebuffer_multisample_PROCS;
+QGL_ARB_vertex_array_object_PROCS;
+QGL_EXT_direct_state_access_PROCS;
 #undef GLE
 
 // GL_EXT_framebuffer_object
@@ -142,18 +147,23 @@ void GLimp_InitExtraExtensions()
        char *extension;
        const char* result[3] = { "...ignoring %s\n", "...using %s\n", "...%s 
not found\n" };
 
+       // Check OpenGL version
        sscanf(glConfig.version_string, "%d.%d", 
&glRefConfig.openglMajorVersion, &glRefConfig.openglMinorVersion);
        if (glRefConfig.openglMajorVersion < 2)
                ri.Error(ERR_FATAL, "OpenGL 2.0 required!");
        ri.Printf(PRINT_ALL, "...using OpenGL %s\n", glConfig.version_string);
 
-       // GL function loader, based on 
https://gist.github.com/rygorous/16796a0c876cf8a5f542caddb55bce8a
+       // set DSA fallbacks
+#define GLE(ret, name, ...) qgl##name = GLDSA_##name;
+       QGL_EXT_direct_state_access_PROCS;
+#undef GLE
 
+       // GL function loader, based on 
https://gist.github.com/rygorous/16796a0c876cf8a5f542caddb55bce8a
 #define GLE(ret, name, ...) qgl##name = (name##proc *) 
SDL_GL_GetProcAddress("gl" #name);
 
        // OpenGL 1.2, was GL_EXT_draw_range_elements
        QGL_1_2_PROCS;
-       glRefConfig.drawRangeElements = r_ext_draw_range_elements->integer ? 
qtrue : qfalse;
+       glRefConfig.drawRangeElements = !!r_ext_draw_range_elements->integer;
        ri.Printf(PRINT_ALL, result[glRefConfig.drawRangeElements], 
"glDrawRangeElements()");
 
        // OpenGL 1.3, was GL_ARB_texture_compression
@@ -161,8 +171,8 @@ void GLimp_InitExtraExtensions()
 
        // OpenGL 1.4, was GL_EXT_multi_draw_arrays
        QGL_1_4_PROCS;
-       glRefConfig.drawRangeElements = r_ext_multi_draw_arrays->integer ? 
qtrue : qfalse;
-       ri.Printf(PRINT_ALL, result[glRefConfig.drawRangeElements], 
"glMultiDrawElements()");
+       glRefConfig.multiDrawArrays = !!r_ext_multi_draw_arrays->integer;
+       ri.Printf(PRINT_ALL, result[glRefConfig.multiDrawArrays], 
"glMultiDrawElements()");
 
        // OpenGL 1.5, was GL_ARB_vertex_buffer_object and 
GL_ARB_occlusion_query
        QGL_1_5_PROCS;
@@ -171,8 +181,7 @@ void GLimp_InitExtraExtensions()
        // OpenGL 2.0, was GL_ARB_shading_language_100, GL_ARB_vertex_program, 
GL_ARB_shader_objects, and GL_ARB_vertex_shader
        QGL_2_0_PROCS;
 
-#undef GLE
-
+       // Determine GLSL version
        if (1)
        {
                char version[256];
@@ -186,23 +195,45 @@ void GLimp_InitExtraExtensions()
 
        glRefConfig.memInfo = MI_NONE;
 
-       if( GLimp_HaveExtension( "GL_NVX_gpu_memory_info" ) )
+       // GL_NVX_gpu_memory_info
+       extension = "GL_NVX_gpu_memory_info";
+       if( GLimp_HaveExtension( extension ) )
        {
                glRefConfig.memInfo = MI_NVX;
+
+               ri.Printf(PRINT_ALL, result[1], extension);
        }
-       else if( GLimp_HaveExtension( "GL_ATI_meminfo" ) )
+       else
        {
-               glRefConfig.memInfo = MI_ATI;
+               ri.Printf(PRINT_ALL, result[2], extension);
        }
 
-       extension = "GL_ARB_texture_non_power_of_two";
-       glRefConfig.textureNonPowerOfTwo = qfalse;
+       // GL_ATI_meminfo
+       extension = "GL_ATI_meminfo";
        if( GLimp_HaveExtension( extension ) )
        {
-               if(1) //(r_ext_texture_non_power_of_two->integer)
+               if (glRefConfig.memInfo == MI_NONE)
                {
-                       glRefConfig.textureNonPowerOfTwo = qtrue;
+                       glRefConfig.memInfo = MI_ATI;
+
+                       ri.Printf(PRINT_ALL, result[1], extension);
                }
+               else
+               {
+                       ri.Printf(PRINT_ALL, result[0], extension);
+               }
+       }
+       else
+       {
+               ri.Printf(PRINT_ALL, result[2], extension);
+       }
+
+       // GL_ARB_texture_non_power_of_two
+       extension = "GL_ARB_texture_non_power_of_two";
+       glRefConfig.textureNonPowerOfTwo = qfalse;
+       if( GLimp_HaveExtension( extension ) )
+       {
+               glRefConfig.textureNonPowerOfTwo = qtrue; // 
!!r_ext_texture_non_power_of_two->integer
 
                ri.Printf(PRINT_ALL, result[glRefConfig.textureNonPowerOfTwo], 
extension);
        }
@@ -216,10 +247,7 @@ void GLimp_InitExtraExtensions()
        glRefConfig.textureFloat = qfalse;
        if( GLimp_HaveExtension( extension ) )
        {
-               if( r_ext_texture_float->integer )
-               {
-                       glRefConfig.textureFloat = qtrue;
-               }
+               glRefConfig.textureFloat = !!r_ext_texture_float->integer;
 
                ri.Printf(PRINT_ALL, result[glRefConfig.textureFloat], 
extension);
        }
@@ -233,8 +261,7 @@ void GLimp_InitExtraExtensions()
        glRefConfig.halfFloatPixel = qfalse;
        if( GLimp_HaveExtension( extension ) )
        {
-               if( r_arb_half_float_pixel->integer )
-                       glRefConfig.halfFloatPixel = qtrue;
+               glRefConfig.halfFloatPixel = !!r_arb_half_float_pixel->integer;
 
                ri.Printf(PRINT_ALL, result[glRefConfig.halfFloatPixel], 
extension);
        }
@@ -248,29 +275,12 @@ void GLimp_InitExtraExtensions()
        glRefConfig.framebufferObject = qfalse;
        if( GLimp_HaveExtension( extension ) )
        {
+               glRefConfig.framebufferObject = 
!!r_ext_framebuffer_object->integer;
+
                glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE_EXT, 
&glRefConfig.maxRenderbufferSize);
                glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, 
&glRefConfig.maxColorAttachments);
 
-               qglIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC) 
SDL_GL_GetProcAddress("glIsRenderbufferEXT");
-               qglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) 
SDL_GL_GetProcAddress("glBindRenderbufferEXT");
-               qglDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) 
SDL_GL_GetProcAddress("glDeleteRenderbuffersEXT");
-               qglGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC) 
SDL_GL_GetProcAddress("glGenRenderbuffersEXT");
-               qglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC) 
SDL_GL_GetProcAddress("glRenderbufferStorageEXT");
-               qglGetRenderbufferParameterivEXT = 
(PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) 
SDL_GL_GetProcAddress("glGetRenderbufferParameterivEXT");
-               qglIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC) 
SDL_GL_GetProcAddress("glIsFramebufferEXT");
-               qglBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) 
SDL_GL_GetProcAddress("glBindFramebufferEXT");
-               qglDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) 
SDL_GL_GetProcAddress("glDeleteFramebuffersEXT");
-               qglGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) 
SDL_GL_GetProcAddress("glGenFramebuffersEXT");
-               qglCheckFramebufferStatusEXT = 
(PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) 
SDL_GL_GetProcAddress("glCheckFramebufferStatusEXT");
-               qglFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) 
SDL_GL_GetProcAddress("glFramebufferTexture1DEXT");
-               qglFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) 
SDL_GL_GetProcAddress("glFramebufferTexture2DEXT");
-               qglFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) 
SDL_GL_GetProcAddress("glFramebufferTexture3DEXT");
-               qglFramebufferRenderbufferEXT = 
(PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) 
SDL_GL_GetProcAddress("glFramebufferRenderbufferEXT");
-               qglGetFramebufferAttachmentParameterivEXT = 
(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) 
SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameterivEXT");
-               qglGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC) 
SDL_GL_GetProcAddress("glGenerateMipmapEXT");
-
-               if(r_ext_framebuffer_object->value)
-                       glRefConfig.framebufferObject = qtrue;
+               QGL_EXT_framebuffer_object_PROCS;
 
                ri.Printf(PRINT_ALL, result[glRefConfig.framebufferObject], 
extension);
        }
@@ -279,26 +289,15 @@ void GLimp_InitExtraExtensions()
                ri.Printf(PRINT_ALL, result[2], extension);
        }
 
-       // GL_EXT_packed_depth_stencil
-       extension = "GL_EXT_packed_depth_stencil";
-       glRefConfig.packedDepthStencil = qfalse;
-       if( GLimp_HaveExtension(extension))
-       {
-               glRefConfig.packedDepthStencil = qtrue;
-               ri.Printf(PRINT_ALL, result[glRefConfig.packedDepthStencil], 
extension);
-       }
-       else
-       {
-               ri.Printf(PRINT_ALL, result[2], extension);
-       }
-
        // GL_EXT_framebuffer_blit
        extension = "GL_EXT_framebuffer_blit";
        glRefConfig.framebufferBlit = qfalse;
        if (GLimp_HaveExtension(extension))
        {
-               qglBlitFramebufferEXT = (void 
*)SDL_GL_GetProcAddress("glBlitFramebufferEXT");
                glRefConfig.framebufferBlit = qtrue;
+
+               QGL_EXT_framebuffer_blit_PROCS;
+
                ri.Printf(PRINT_ALL, result[glRefConfig.framebufferBlit], 
extension);
        }
        else
@@ -311,8 +310,10 @@ void GLimp_InitExtraExtensions()
        glRefConfig.framebufferMultisample = qfalse;
        if (GLimp_HaveExtension(extension))
        {
-               qglRenderbufferStorageMultisampleEXT = (void 
*)SDL_GL_GetProcAddress("glRenderbufferStorageMultisampleEXT");
                glRefConfig.framebufferMultisample = qtrue;
+
+               QGL_EXT_framebuffer_multisample_PROCS;
+
                ri.Printf(PRINT_ALL, 
result[glRefConfig.framebufferMultisample], extension);
        }
        else
@@ -326,10 +327,12 @@ void GLimp_InitExtraExtensions()
        extension = "GL_ARB_texture_compression_rgtc";
        if (GLimp_HaveExtension(extension))
        {
-               if (r_ext_compressed_textures->integer)
+               qboolean useRgtc = r_ext_compressed_textures->integer >= 1;
+
+               if (useRgtc)
                        glRefConfig.textureCompression |= TCR_RGTC;
 
-               ri.Printf(PRINT_ALL, result[r_ext_compressed_textures->integer 
? 1 : 0], extension);
+               ri.Printf(PRINT_ALL, result[useRgtc], extension);
        }
        else
        {
@@ -342,10 +345,12 @@ void GLimp_InitExtraExtensions()
        extension = "GL_ARB_texture_compression_bptc";
        if (GLimp_HaveExtension(extension))
        {
-               if (r_ext_compressed_textures->integer >= 2)
+               qboolean useBptc = r_ext_compressed_textures->integer >= 2;
+
+               if (useBptc)
                        glRefConfig.textureCompression |= TCR_BPTC;
 
-               ri.Printf(PRINT_ALL, result[(r_ext_compressed_textures->integer 
>= 2) ? 1 : 0], extension);
+               ri.Printf(PRINT_ALL, result[useBptc], extension);
        }
        else
        {
@@ -358,7 +363,8 @@ void GLimp_InitExtraExtensions()
        if( GLimp_HaveExtension( extension ) )
        {
                glRefConfig.depthClamp = qtrue;
-               ri.Printf(PRINT_ALL, result[1], extension);
+
+               ri.Printf(PRINT_ALL, result[glRefConfig.depthClamp], extension);
        }
        else
        {
@@ -370,8 +376,7 @@ void GLimp_InitExtraExtensions()
        glRefConfig.seamlessCubeMap = qfalse;
        if( GLimp_HaveExtension( extension ) )
        {
-               if (r_arb_seamless_cube_map->integer)
-                       glRefConfig.seamlessCubeMap = qtrue;
+               glRefConfig.seamlessCubeMap = 
!!r_arb_seamless_cube_map->integer;
 
                ri.Printf(PRINT_ALL, result[glRefConfig.seamlessCubeMap], 
extension);
        }
@@ -385,10 +390,12 @@ void GLimp_InitExtraExtensions()
        glRefConfig.packedNormalDataType = GL_BYTE;
        if( GLimp_HaveExtension( extension ) )
        {
-               if (r_arb_vertex_type_2_10_10_10_rev->integer)
+               qboolean useExt = !!r_arb_vertex_type_2_10_10_10_rev->integer;
+
+               if (useExt)
                        glRefConfig.packedNormalDataType = 
GL_INT_2_10_10_10_REV;
 
-               ri.Printf(PRINT_ALL, 
result[r_arb_vertex_type_2_10_10_10_rev->integer ? 1 : 0], extension);
+               ri.Printf(PRINT_ALL, result[useExt], extension);
        }
        else
        {
@@ -403,15 +410,11 @@ void GLimp_InitExtraExtensions()
        glRefConfig.vertexArrayObject = qfalse;
        if( GLimp_HaveExtension( extension ) )
        {
-               qglBindVertexArrayARB = (void *) 
SDL_GL_GetProcAddress("glBindVertexArray");
-               qglDeleteVertexArraysARB = (void *) 
SDL_GL_GetProcAddress("glDeleteVertexArrays");
-               qglGenVertexArraysARB = (void *) 
SDL_GL_GetProcAddress("glGenVertexArrays");
-               qglIsVertexArrayARB = (void *) 
SDL_GL_GetProcAddress("glIsVertexArray");
+               glRefConfig.vertexArrayObject = 
!!r_arb_vertex_array_object->integer;
 
-               if (r_arb_vertex_array_object->integer)
-                       glRefConfig.vertexArrayObject = qtrue;
+               QGL_ARB_vertex_array_object_PROCS;
 
-               ri.Printf(PRINT_ALL, result[glRefConfig.vertexArrayObject ? 1 : 
0], extension);
+               ri.Printf(PRINT_ALL, result[glRefConfig.vertexArrayObject], 
extension);
        }
        else
        {
@@ -426,7 +429,9 @@ void GLimp_InitExtraExtensions()
        glRefConfig.packedColorDataSize    = sizeof(float) * 4;
        if( GLimp_HaveExtension( extension ) )
        {
-               if (r_arb_half_float_vertex->integer)
+               qboolean useExt = !!r_arb_half_float_vertex->integer;
+
+               if (useExt)
                {
                        glRefConfig.packedTexcoordDataType = GL_HALF_FLOAT;
                        glRefConfig.packedTexcoordDataSize = sizeof(uint16_t) * 
2;
@@ -434,7 +439,7 @@ void GLimp_InitExtraExtensions()
                        glRefConfig.packedColorDataSize    = sizeof(uint16_t) * 
4;
                }
 
-               ri.Printf(PRINT_ALL, result[r_arb_half_float_vertex->integer ? 
1 : 0], extension);
+               ri.Printf(PRINT_ALL, result[useExt], extension);
        }
        else
        {
@@ -443,66 +448,23 @@ void GLimp_InitExtraExtensions()
 
        // GL_EXT_direct_state_access
        extension = "GL_EXT_direct_state_access";
-
-       qglBindMultiTexture = GLDSA_BindMultiTexture;
-       qglTextureParameterf = GLDSA_TextureParameterf;
-       qglTextureParameteri = GLDSA_TextureParameteri;
-       qglTextureImage2D = GLDSA_TextureImage2D;
-       qglTextureSubImage2D = GLDSA_TextureSubImage2D;
-       qglCopyTextureImage2D = GLDSA_CopyTextureImage2D;
-       qglCompressedTextureImage2D = GLDSA_CompressedTextureImage2D;
-       qglCompressedTextureSubImage2D = GLDSA_CompressedTextureSubImage2D;
-       qglGenerateTextureMipmap = GLDSA_GenerateTextureMipmap;
-
-       qglProgramUniform1i = GLDSA_ProgramUniform1i;
-       qglProgramUniform1f = GLDSA_ProgramUniform1f;
-       qglProgramUniform2f = GLDSA_ProgramUniform2f;
-       qglProgramUniform3f = GLDSA_ProgramUniform3f;
-       qglProgramUniform4f = GLDSA_ProgramUniform4f;
-       qglProgramUniform1fv = GLDSA_ProgramUniform1fv;
-       qglProgramUniformMatrix4fv = GLDSA_ProgramUniformMatrix4fv;
-
-       qglNamedRenderbufferStorage = GLDSA_NamedRenderbufferStorage;
-       qglNamedRenderbufferStorageMultisample = 
GLDSA_NamedRenderbufferStorageMultisample;
-       qglCheckNamedFramebufferStatus = GLDSA_CheckNamedFramebufferStatus;
-       qglNamedFramebufferTexture2D = GLDSA_NamedFramebufferTexture2D;
-       qglNamedFramebufferRenderbuffer = GLDSA_NamedFramebufferRenderbuffer;
-
        glRefConfig.directStateAccess = qfalse;
        if (GLimp_HaveExtension(extension))
        {
-               if (r_ext_direct_state_access->integer)
+               glRefConfig.directStateAccess = 
!!r_ext_direct_state_access->integer;
+
+               // QGL_*_PROCS becomes several functions, do not remove {}
+               if (glRefConfig.directStateAccess)
                {
-                       glRefConfig.directStateAccess = qtrue;
-                       qglBindMultiTexture = (void 
*)SDL_GL_GetProcAddress("glBindMultiTextureEXT");
-                       qglTextureParameterf = (void 
*)SDL_GL_GetProcAddress("glTextureParameterfEXT");
-                       qglTextureParameteri = (void 
*)SDL_GL_GetProcAddress("glTextureParameteriEXT");
-                       qglTextureImage2D = (void 
*)SDL_GL_GetProcAddress("glTextureImage2DEXT");
-                       qglTextureSubImage2D = (void 
*)SDL_GL_GetProcAddress("glTextureSubImage2DEXT");
-                       qglCopyTextureImage2D = (void 
*)SDL_GL_GetProcAddress("glCopyTextureImage2DEXT");
-                       qglCompressedTextureImage2D = (void 
*)SDL_GL_GetProcAddress("glCompressedTextureImage2DEXT");
-                       qglCompressedTextureSubImage2D = (void 
*)SDL_GL_GetProcAddress("glCompressedTextureSubImage2DEXT");
-                       qglGenerateTextureMipmap = (void 
*)SDL_GL_GetProcAddress("glGenerateTextureMipmapEXT");
-
-                       qglProgramUniform1i = (void 
*)SDL_GL_GetProcAddress("glProgramUniform1iEXT");
-                       qglProgramUniform1f = (void 
*)SDL_GL_GetProcAddress("glProgramUniform1fEXT");
-                       qglProgramUniform2f = (void 
*)SDL_GL_GetProcAddress("glProgramUniform2fEXT");
-                       qglProgramUniform3f = (void 
*)SDL_GL_GetProcAddress("glProgramUniform3fEXT");
-                       qglProgramUniform4f = (void 
*)SDL_GL_GetProcAddress("glProgramUniform4fEXT");
-                       qglProgramUniform1fv = (void 
*)SDL_GL_GetProcAddress("glProgramUniform1fvEXT");
-                       qglProgramUniformMatrix4fv = (void 
*)SDL_GL_GetProcAddress("glProgramUniformMatrix4fvEXT");
-
-                       qglNamedRenderbufferStorage = (void 
*)SDL_GL_GetProcAddress("glNamedRenderbufferStorageEXT");
-                       qglNamedRenderbufferStorageMultisample = (void 
*)SDL_GL_GetProcAddress("glNamedRenderbufferStorageMultisampleEXT");
-                       qglCheckNamedFramebufferStatus = (void 
*)SDL_GL_GetProcAddress("glCheckNamedFramebufferStatusEXT");
-                       qglNamedFramebufferTexture2D = (void 
*)SDL_GL_GetProcAddress("glNamedFramebufferTexture2DEXT");
-                       qglNamedFramebufferRenderbuffer = (void 
*)SDL_GL_GetProcAddress("glNamedFramebufferRenderbufferEXT");
+                       QGL_EXT_direct_state_access_PROCS;
                }
 
-               ri.Printf(PRINT_ALL, result[glRefConfig.directStateAccess ? 1 : 
0], extension);
+               ri.Printf(PRINT_ALL, result[glRefConfig.directStateAccess], 
extension);
        }
        else
        {
                ri.Printf(PRINT_ALL, result[2], extension);
        }
+
+#undef GLE
 }
diff --git a/code/renderergl2/tr_image.c b/code/renderergl2/tr_image.c
index 7f8f246..f267069 100644
--- a/code/renderergl2/tr_image.c
+++ b/code/renderergl2/tr_image.c
@@ -2763,11 +2763,8 @@ void R_CreateBuiltinImages( void ) {
                if (r_drawSunRays->integer)
                        tr.sunRaysImage = R_CreateImage("*sunRays", NULL, 
width, height, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE, rgbFormat);
 
-               if (glRefConfig.framebufferObject)
-               {
-                       tr.renderDepthImage  = R_CreateImage("*renderdepth",  
NULL, width, height, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE, GL_DEPTH_COMPONENT24_ARB);
-                       tr.textureDepthImage = R_CreateImage("*texturedepth", 
NULL, PSHADOW_MAP_SIZE, PSHADOW_MAP_SIZE, IMGTYPE_COLORALPHA, 
IMGFLAG_NO_COMPRESSION | IMGFLAG_CLAMPTOEDGE, GL_DEPTH_COMPONENT24_ARB);
-               }
+               tr.renderDepthImage  = R_CreateImage("*renderdepth",  NULL, 
width, height, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE, GL_DEPTH_COMPONENT24_ARB);
+               tr.textureDepthImage = R_CreateImage("*texturedepth", NULL, 
PSHADOW_MAP_SIZE, PSHADOW_MAP_SIZE, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION 
| IMGFLAG_CLAMPTOEDGE, GL_DEPTH_COMPONENT24_ARB);
 
                {
                        unsigned short sdata[4];
diff --git a/code/renderergl2/tr_init.c b/code/renderergl2/tr_init.c
index 73c1c55..60c62ab 100644
--- a/code/renderergl2/tr_init.c
+++ b/code/renderergl2/tr_init.c
@@ -974,7 +974,7 @@ void GL_SetDefaultState( void )
        GL_BindNullProgram();
 
        if (glRefConfig.vertexArrayObject)
-               qglBindVertexArrayARB(0);
+               qglBindVertexArray(0);
 
        qglBindBuffer(GL_ARRAY_BUFFER, 0);
        qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
diff --git a/code/renderergl2/tr_local.h b/code/renderergl2/tr_local.h
index 202e1af..e81f854 100644
--- a/code/renderergl2/tr_local.h
+++ b/code/renderergl2/tr_local.h
@@ -1402,7 +1402,6 @@ typedef struct {
        qboolean textureNonPowerOfTwo;
        qboolean textureFloat;
        qboolean halfFloatPixel;
-       qboolean packedDepthStencil;
        textureCompressionRef_t textureCompression;
        qboolean swizzleNormalmap;
        
diff --git a/code/renderergl2/tr_shade.c b/code/renderergl2/tr_shade.c
index 356f213..1cfc42d 100644
--- a/code/renderergl2/tr_shade.c
+++ b/code/renderergl2/tr_shade.c
@@ -1292,7 +1292,9 @@ static void RB_IterateStagesGeneric( shaderCommands_t 
*input )
 
                        if (r_sunlightMode->integer && (backEnd.viewParms.flags 
& VPF_USESUNLIGHT) && (pStage->glslShaderIndex & LIGHTDEF_LIGHTTYPE_MASK))
                        {
-                               GL_BindToTMU(tr.screenShadowImage, 
TB_SHADOWMAP);
+                               // FIXME: screenShadowImage is NULL if no 
framebuffers
+                               if (tr.screenShadowImage)
+                                       GL_BindToTMU(tr.screenShadowImage, 
TB_SHADOWMAP);
                                GLSL_SetUniformVec3(sp, 
UNIFORM_PRIMARYLIGHTAMBIENT, backEnd.refdef.sunAmbCol);
                                if (r_pbr->integer)
                                {
@@ -1404,7 +1406,9 @@ static void RB_IterateStagesGeneric( shaderCommands_t 
*input )
                        vec4_t vec;
                        cubemap_t *cubemap = &tr.cubemaps[input->cubemapIndex - 
1];
 
-                       GL_BindToTMU( cubemap->image, TB_CUBEMAP);
+                       // FIXME: cubemap image could be NULL if cubemap isn't 
renderer or loaded
+                       if (cubemap->image)
+                               GL_BindToTMU( cubemap->image, TB_CUBEMAP);
 
                        VectorSubtract(cubemap->origin, 
backEnd.viewParms.or.origin, vec);
                        vec[3] = 1.0f;
diff --git a/code/renderergl2/tr_vbo.c b/code/renderergl2/tr_vbo.c
index 61ede4e..b1ff3d6 100644
--- a/code/renderergl2/tr_vbo.c
+++ b/code/renderergl2/tr_vbo.c
@@ -262,8 +262,8 @@ vao_t *R_CreateVao(const char *name, byte *vertexes, int 
vertexesSize, byte *ind
 
        if (glRefConfig.vertexArrayObject)
        {
-               qglGenVertexArraysARB(1, &vao->vao);
-               qglBindVertexArrayARB(vao->vao);
+               qglGenVertexArrays(1, &vao->vao);
+               qglBindVertexArray(vao->vao);
        }
 
 
@@ -383,8 +383,8 @@ vao_t *R_CreateVao2(const char *name, int numVertexes, 
srfVert_t *verts, int num
 
        if (glRefConfig.vertexArrayObject)
        {
-               qglGenVertexArraysARB(1, &vao->vao);
-               qglBindVertexArrayARB(vao->vao);
+               qglGenVertexArrays(1, &vao->vao);
+               qglBindVertexArray(vao->vao);
        }
 
 
@@ -480,7 +480,7 @@ void R_BindVao(vao_t * vao)
 
                if (glRefConfig.vertexArrayObject)
                {
-                       qglBindVertexArrayARB(vao->vao);
+                       qglBindVertexArray(vao->vao);
 
                        // why you no save GL_ELEMENT_ARRAY_BUFFER binding, 
Intel?
                        if (1)
@@ -515,7 +515,7 @@ void R_BindNullVao(void)
        {
                if (glRefConfig.vertexArrayObject)
                {
-                       qglBindVertexArrayARB(0);
+                       qglBindVertexArray(0);
 
                        // why you no save GL_ELEMENT_ARRAY_BUFFER binding, 
Intel?
                        if (1) qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
@@ -654,7 +654,7 @@ void R_ShutdownVaos(void)
                vao = tr.vaos[i];
 
                if(vao->vao)
-                       qglDeleteVertexArraysARB(1, &vao->vao);
+                       qglDeleteVertexArrays(1, &vao->vao);
 
                if(vao->vertexesVBO)
                {

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/ioquake3.git

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to