]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_shared.c
removed GL_NV_blend_square detection because it is no longer used
[xonotic/darkplaces.git] / vid_shared.c
index 6b8501bd5f746300334b82569fb5fb837f3ffea2..54d63291b7dbbe4f88e40b4f944b6ca580bed91a 100644 (file)
@@ -16,65 +16,6 @@ qboolean in_client_mouse = true;
 float in_mouse_x, in_mouse_y;
 float in_windowmouse_x, in_windowmouse_y;
 
-// value of GL_MAX_TEXTURE_<various>_SIZE
-int gl_max_texture_size = 0;
-int gl_max_3d_texture_size = 0;
-int gl_max_cube_map_texture_size = 0;
-int gl_max_rectangle_texture_size = 0;
-// GL_ARB_multitexture
-int gl_textureunits = 1;
-// GL_ARB_texture_env_combine or GL_EXT_texture_env_combine
-int gl_combine_extension = false;
-// GL_EXT_compiled_vertex_array
-int gl_supportslockarrays = false;
-// 3D textures available
-int gl_texture3d = false;
-// GL_ARB_texture_cubemap
-int gl_texturecubemap = false;
-// GL_ARB_texture_rectangle
-int gl_texturerectangle = false;
-// GL_ARB_texture_non_power_of_two
-int gl_support_arb_texture_non_power_of_two = false;
-// GL_ARB_texture_env_dot3
-int gl_dot3arb = false;
-// GL_ARB_depth_texture
-int gl_depthtexture = false;
-// GL_ARB_shadow
-int gl_support_arb_shadow = false;
-// GL_SGIS_texture_edge_clamp
-int gl_support_clamptoedge = false;
-// GL_EXT_texture_filter_anisotropic
-int gl_support_anisotropy = false;
-int gl_max_anisotropy = 1;
-// OpenGL2.0 core glStencilOpSeparate, or GL_ATI_separate_stencil
-int gl_support_separatestencil = false;
-// GL_EXT_stencil_two_side
-int gl_support_stenciltwoside = false;
-// GL_EXT_blend_minmax
-int gl_support_ext_blend_minmax = false;
-// GL_EXT_blend_subtract
-int gl_support_ext_blend_subtract = false;
-// GL_ARB_shader_objects
-int gl_support_shader_objects = false;
-// GL_ARB_shading_language_100
-int gl_support_shading_language_100 = false;
-// GL_ARB_vertex_shader
-int gl_support_vertex_shader = false;
-// GL_ARB_fragment_shader
-int gl_support_fragment_shader = false;
-//GL_ARB_vertex_buffer_object
-int gl_support_arb_vertex_buffer_object = false;
-//GL_EXT_framebuffer_object
-int gl_support_ext_framebuffer_object = false;
-//GL_ARB_texture_compression
-int gl_support_texture_compression = false;
-//GL_ARB_occlusion_query
-int gl_support_arb_occlusion_query = false;
-//GL_AMD_texture_texture4
-int gl_support_amd_texture_texture4 = false;
-//GL_ARB_texture_gather
-int gl_support_arb_texture_gather = false;
-
 // LordHavoc: if window is hidden, don't update screen
 qboolean vid_hidden = true;
 // LordHavoc: if window is not the active window, don't hog as much CPU time,
@@ -113,7 +54,6 @@ cvar_t vid_mouse = {CVAR_SAVE, "vid_mouse", "1", "whether to use the mouse in wi
 cvar_t vid_grabkeyboard = {CVAR_SAVE, "vid_grabkeyboard", "0", "whether to grab the keyboard when mouse is active (prevents use of volume control keys, music player keys, etc on some keyboards)"};
 cvar_t vid_minwidth = {0, "vid_minwidth", "0", "minimum vid_width that is acceptable (to be set in default.cfg in mods)"};
 cvar_t vid_minheight = {0, "vid_minheight", "0", "minimum vid_height that is acceptable (to be set in default.cfg in mods)"};
-cvar_t gl_combine = {0, "gl_combine", "1", "enables faster rendering using GL_ARB_texture_env_combine extension (part of OpenGL 1.3 and above)"};
 cvar_t vid_gl13 = {0, "vid_gl13", "1", "enables faster rendering using OpenGL 1.3 features (such as GL_ARB_texture_env_combine extension)"};
 cvar_t vid_gl20 = {0, "vid_gl20", "1", "enables faster rendering using OpenGL 2.0 features (such as GL_ARB_fragment_shader extension)"};
 cvar_t gl_finish = {0, "gl_finish", "0", "make the cpu wait for the graphics processor at the end of each rendered frame (can help with strange input or video lag problems on some machines)"};
@@ -872,15 +812,14 @@ void VID_CheckExtensions(void)
        vid.support.ext_texture_3d = GL_CheckExtension("GL_EXT_texture3D", texture3dextfuncs, "-notexture3d", false);
        vid.support.ext_texture_edge_clamp = GL_CheckExtension("GL_EXT_texture_edge_clamp", NULL, "-noedgeclamp", false) || GL_CheckExtension("GL_SGIS_texture_edge_clamp", NULL, "-noedgeclamp", false);
        vid.support.ext_texture_filter_anisotropic = GL_CheckExtension("GL_EXT_texture_filter_anisotropic", NULL, "-noanisotropy", false);
-       vid.support.nv_blend_square = GL_CheckExtension("GL_NV_blend_square", NULL, "-noblendsquare", false);
 // COMMANDLINEOPTION: GL: -noanisotropy disables GL_EXT_texture_filter_anisotropic (allows higher quality texturing)
 // COMMANDLINEOPTION: GL: -noblendminmax disables GL_EXT_blend_minmax
-// COMMANDLINEOPTION: GL: -noblendsquare disables GL_NV_blend_square
 // COMMANDLINEOPTION: GL: -noblendsubtract disables GL_EXT_blend_subtract
 // COMMANDLINEOPTION: GL: -nocombine disables GL_ARB_texture_env_combine or GL_EXT_texture_env_combine (required for bumpmapping and faster map rendering)
 // COMMANDLINEOPTION: GL: -nocubemap disables GL_ARB_texture_cube_map (required for bumpmapping)
 // COMMANDLINEOPTION: GL: -nocva disables GL_EXT_compiled_vertex_array (renders faster)
 // COMMANDLINEOPTION: GL: -nodepthtexture disables use of GL_ARB_depth_texture (required for shadowmapping)
+// COMMANDLINEOPTION: GL: -nodot3 disables use of GL_ARB_texture_env_dot3
 // COMMANDLINEOPTION: GL: -nodrawrangeelements disables GL_EXT_draw_range_elements (renders faster)
 // COMMANDLINEOPTION: GL: -noedgeclamp disables GL_EXT_texture_edge_clamp or GL_SGIS_texture_edge_clamp (recommended, some cards do not support the other texture clamp method)
 // COMMANDLINEOPTION: GL: -nofbo disables GL_EXT_framebuffer_object (which accelerates rendering), only used if GL_ARB_fragment_shader is also available
@@ -942,7 +881,9 @@ void VID_CheckExtensions(void)
        }
 
        vid.texunits = vid.teximageunits = vid.texarrayunits = 1;
-       if (vid.support.arb_fragment_shader && vid_gl20.integer)
+       if (vid.support.arb_multitexture)
+               qglGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, (GLint*)&vid.texunits);
+       if (vid_gl20.integer && vid.support.arb_fragment_shader && vid.support.arb_vertex_shader && vid.support.arb_shader_objects)
        {
                qglGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, (GLint*)&vid.texunits);
                qglGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, (int *)&vid.teximageunits);CHECKGLERROR
@@ -964,8 +905,6 @@ void VID_CheckExtensions(void)
        }
        else
        {
-               if (vid.support.arb_multitexture)
-                       qglGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, (GLint*)&vid.texunits);
                vid.texunits = bound(1, vid.texunits, MAX_TEXTUREUNITS);
                vid.teximageunits = vid.texunits;
                vid.texarrayunits = vid.texunits;
@@ -973,38 +912,6 @@ void VID_CheckExtensions(void)
                vid.renderpath = RENDERPATH_GL11;
        }
 
-       gl_max_texture_size = vid.maxtexturesize_2d;
-       gl_max_3d_texture_size = vid.maxtexturesize_3d;
-       gl_max_cube_map_texture_size = vid.maxtexturesize_cubemap;
-       gl_textureunits = vid.texunits;
-       gl_max_anisotropy = vid.max_anisotropy;
-
-       gl_combine_extension = vid.support.arb_texture_env_combine;
-       gl_supportslockarrays = vid.support.ext_compiled_vertex_array;
-       gl_texture3d = vid.support.ext_texture_3d;
-       gl_texturecubemap = vid.support.arb_texture_cube_map;
-       gl_texturerectangle = vid.support.arb_texture_rectangle;
-       gl_support_arb_texture_non_power_of_two = vid.support.arb_texture_non_power_of_two;
-       gl_dot3arb = vid.support.arb_texture_env_dot3;
-       gl_depthtexture = vid.support.arb_depth_texture;
-       gl_support_arb_shadow = vid.support.arb_shadow;
-       gl_support_clamptoedge = vid.support.ext_texture_edge_clamp;
-       gl_support_anisotropy = vid.support.ext_texture_filter_anisotropic;
-       gl_support_separatestencil = vid.support.ati_separate_stencil;
-       gl_support_stenciltwoside = vid.support.ext_stencil_two_side;
-       gl_support_ext_blend_minmax = vid.support.ext_blend_minmax;
-       gl_support_ext_blend_subtract = vid.support.ext_blend_subtract;
-       gl_support_shader_objects = vid.support.arb_shader_objects;
-       gl_support_shading_language_100 = vid.support.arb_shading_language_100;
-       gl_support_vertex_shader = vid.support.arb_vertex_shader;
-       gl_support_fragment_shader = vid.support.arb_fragment_shader;
-       gl_support_arb_vertex_buffer_object = vid.support.arb_vertex_buffer_object;
-       gl_support_ext_framebuffer_object = vid.support.ext_framebuffer_object;
-       gl_support_texture_compression = vid.support.arb_texture_compression;
-       gl_support_arb_occlusion_query = vid.support.arb_occlusion_query;
-       gl_support_amd_texture_texture4 = vid.support.amd_texture_texture4;
-       gl_support_arb_texture_gather = vid.support.arb_texture_gather;
-
        // VorteX: set other info (maybe place them in VID_InitMode?)
        Cvar_SetQuick(&gl_info_vendor, gl_vendor);
        Cvar_SetQuick(&gl_info_renderer, gl_renderer);
@@ -1091,8 +998,16 @@ void VID_UpdateGamma(qboolean force, int rampsize)
                return;
 
        wantgamma = v_hwgamma.integer;
-       if(r_glsl.integer && v_glslgamma.integer)
-               wantgamma = 0;
+       switch(vid.renderpath)
+       {
+       case RENDERPATH_GL20:
+               if (v_glslgamma.integer)
+                       wantgamma = 0;
+               break;
+       case RENDERPATH_GL13:
+       case RENDERPATH_GL11:
+               break;
+       }
        if(!vid_activewindow)
                wantgamma = 0;
 #define BOUNDCVAR(cvar, m1, m2) c = &(cvar);f = bound(m1, c->value, m2);if (c->value != f) Cvar_SetValueQuick(c, f);
@@ -1263,7 +1178,6 @@ void VID_Shared_Init(void)
        Cvar_RegisterVariable(&vid_resizable);
        Cvar_RegisterVariable(&vid_minwidth);
        Cvar_RegisterVariable(&vid_minheight);
-       Cvar_RegisterVariable(&gl_combine);
        Cvar_RegisterVariable(&vid_gl13);
        Cvar_RegisterVariable(&vid_gl20);
        Cvar_RegisterVariable(&gl_finish);