From 477b95bb0bd3ee638ceefd2fc3251a43ff4212d0 Mon Sep 17 00:00:00 2001
From: havoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Tue, 10 Apr 2018 05:09:08 +0000
Subject: [PATCH] Remove v_glslgamma cvar (now assumed to be 1) and
 corresponding code like R_DrawGamma.

RENDERPATH_GL1* paths no longer support bloom.

Fix a bug in D3D9 renderpath where SHADERPERMUTATION_GAMMARAMPS would crash due to using the wrong variable for the texture unit.

Enable GL_ARB_texture_non_power_of_two on OSX again - the old OSX versions and corresponding hardware that had issues are long gone.


git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@12381 d7cf8633-e32d-0410-b094-e92efae38249
---
 cl_screen.c  |   7 ++--
 draw.h       |   2 -
 gl_draw.c    | 111 ---------------------------------------------------
 gl_rmain.c   |  12 +++---
 vid_shared.c |   7 +---
 5 files changed, 11 insertions(+), 128 deletions(-)

diff --git a/cl_screen.c b/cl_screen.c
index e59c6ef0..abde7491 100644
--- a/cl_screen.c
+++ b/cl_screen.c
@@ -112,7 +112,6 @@ cvar_t r_speeds_graph_maxdefault = {CVAR_SAVE, "r_speeds_graph_maxdefault", "100
 
 
 
-extern cvar_t v_glslgamma;
 extern cvar_t sbar_info_pos;
 extern cvar_t r_fog_clear;
 
@@ -2276,8 +2275,6 @@ static void SCR_DrawScreen (void)
 
 	DrawQ_Finish();
 
-	R_DrawGamma();
-
 	R_Mesh_Finish();
 }
 
@@ -2602,6 +2599,10 @@ void SCR_UpdateLoadingScreen (qboolean clear, qboolean startup)
 		loadingscreen_lastupdate = t;
 	}
 
+	// set up the r_texture_gammaramps texture which we need for rendering the loadingscreenpic
+	VID_UpdateGamma();
+	R_UpdateVariables();
+
 	if(!scr_loadingscreen_background.integer)
 		clear = true;
 	
diff --git a/draw.h b/draw.h
index 316a696d..6ac5c39b 100644
--- a/draw.h
+++ b/draw.h
@@ -199,8 +199,6 @@ void DrawQ_RecalcView(void); // use this when changing r_refdef.view.* from e.g.
 
 rtexture_t *Draw_GetPicTexture(cachepic_t *pic);
 
-void R_DrawGamma(void);
-
 extern rtexturepool_t *drawtexturepool; // used by ft2.c
 
 #endif
diff --git a/gl_draw.c b/gl_draw.c
index 66f6de4f..77c873c3 100644
--- a/gl_draw.c
+++ b/gl_draw.c
@@ -45,8 +45,6 @@ cvar_t r_font_antialias = {CVAR_SAVE, "r_font_antialias", "1", "0 = monochrome,
 cvar_t r_nearest_2d = {CVAR_SAVE, "r_nearest_2d", "0", "use nearest filtering on all 2d textures (including conchars)"};
 cvar_t r_nearest_conchars = {CVAR_SAVE, "r_nearest_conchars", "0", "use nearest filtering on conchars texture"};
 
-extern cvar_t v_glslgamma;
-
 //=============================================================================
 /* Support Routines */
 
@@ -2156,112 +2154,3 @@ void DrawQ_RecalcView(void)
 		r_refdef.draw2dstage = -1; // next draw call will set viewport etc. again
 }
 
-static float blendvertex3f[9] = {-5000, -5000, 10, 10000, -5000, 10, -5000, 10000, 10};
-void R_DrawGamma(void)
-{
-	float c[4];
-	switch(vid.renderpath)
-	{
-	case RENDERPATH_GL20:
-	case RENDERPATH_D3D9:
-	case RENDERPATH_D3D10:
-	case RENDERPATH_D3D11:
-	case RENDERPATH_GLES2:
-		if (v_glslgamma.integer)
-			return;
-		break;
-	case RENDERPATH_GL11:
-	case RENDERPATH_GL13:
-		break;
-	case RENDERPATH_GLES1:
-	case RENDERPATH_SOFT:
-		return;
-	}
-	// all the blends ignore depth
-//	R_Mesh_ResetTextureState();
-	R_SetupShader_Generic_NoTexture(true, true);
-	GL_DepthMask(true);
-	GL_DepthRange(0, 1);
-	GL_PolygonOffset(0, 0);
-	GL_DepthTest(false);
-
-	// interpretation of brightness and contrast:
-	//   color range := brightness .. (brightness + contrast)
-	// i.e. "c *= contrast; c += brightness"
-	// plausible values for brightness thus range from -contrast to 1
-
-	// apply pre-brightness (subtractive brightness, for where contrast was >= 1)
-	if (vid.support.ext_blend_subtract)
-	{
-		if (v_color_enable.integer)
-		{
-			c[0] = -v_color_black_r.value / v_color_white_r.value;
-			c[1] = -v_color_black_g.value / v_color_white_g.value;
-			c[2] = -v_color_black_b.value / v_color_white_b.value;
-		}
-		else
-			c[0] = c[1] = c[2] = -v_brightness.value / v_contrast.value;
-		if (c[0] >= 0.01f || c[1] >= 0.01f || c[2] >= 0.01f)
-		{
-			// need SUBTRACTIVE blending to do this!
-			GL_BlendEquationSubtract(true);
-			GL_BlendFunc(GL_ONE, GL_ONE);
-			GL_Color(c[0], c[1], c[2], 1);
-			R_Mesh_PrepareVertices_Generic_Arrays(3, blendvertex3f, NULL, NULL);
-			R_Mesh_Draw(0, 3, 0, 1, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
-			GL_BlendEquationSubtract(false);
-		}
-	}
-
-	// apply contrast
-	if (v_color_enable.integer)
-	{
-		c[0] = v_color_white_r.value;
-		c[1] = v_color_white_g.value;
-		c[2] = v_color_white_b.value;
-	}
-	else
-		c[0] = c[1] = c[2] = v_contrast.value;
-	if (c[0] >= 1.003f || c[1] >= 1.003f || c[2] >= 1.003f)
-	{
-		GL_BlendFunc(GL_DST_COLOR, GL_ONE);
-		while (c[0] >= 1.003f || c[1] >= 1.003f || c[2] >= 1.003f)
-		{
-			float cc[4];
-			cc[0] = bound(0, c[0] - 1, 1);
-			cc[1] = bound(0, c[1] - 1, 1);
-			cc[2] = bound(0, c[2] - 1, 1);
-			GL_Color(cc[0], cc[1], cc[2], 1);
-			R_Mesh_PrepareVertices_Generic_Arrays(3, blendvertex3f, NULL, NULL);
-			R_Mesh_Draw(0, 3, 0, 1, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
-			c[0] /= 1 + cc[0];
-			c[1] /= 1 + cc[1];
-			c[2] /= 1 + cc[2];
-		}
-	}
-	if (c[0] <= 0.997f || c[1] <= 0.997f || c[2] <= 0.997f)
-	{
-		GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
-		GL_Color(c[0], c[1], c[2], 1);
-		R_Mesh_PrepareVertices_Generic_Arrays(3, blendvertex3f, NULL, NULL);
-		R_Mesh_Draw(0, 3, 0, 1, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
-	}
-
-	// apply post-brightness (additive brightness, for where contrast was <= 1)
-	if (v_color_enable.integer)
-	{
-		c[0] = v_color_black_r.value;
-		c[1] = v_color_black_g.value;
-		c[2] = v_color_black_b.value;
-	}
-	else
-		c[0] = c[1] = c[2] = v_brightness.value;
-	if (c[0] >= 0.01f || c[1] >= 0.01f || c[2] >= 0.01f)
-	{
-		GL_BlendFunc(GL_ONE, GL_ONE);
-		GL_Color(c[0], c[1], c[2], 1);
-		R_Mesh_PrepareVertices_Generic_Arrays(3, blendvertex3f, NULL, NULL);
-		R_Mesh_Draw(0, 3, 0, 1, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
-	}
-}
-
diff --git a/gl_rmain.c b/gl_rmain.c
index e02f6551..4e35c2ed 100644
--- a/gl_rmain.c
+++ b/gl_rmain.c
@@ -268,7 +268,6 @@ cvar_t r_buffermegs[R_BUFFERDATA_COUNT] =
 	{CVAR_SAVE, "r_buffermegs_uniform", "0.25", "uniform buffer size for one frame"},
 };
 
-extern cvar_t v_glslgamma;
 extern cvar_t v_glslgamma_2d;
 
 extern qboolean v_flipped_state;
@@ -2034,7 +2033,7 @@ void R_SetupShader_Generic(rtexture_t *first, rtexture_t *second, int texturemod
 		permutation |= SHADERPERMUTATION_GLOW;
 	else if (texturemode == GL_DECAL)
 		permutation |= SHADERPERMUTATION_VERTEXTEXTUREBLEND;
-	if (usegamma && v_glslgamma.integer && v_glslgamma_2d.integer && !vid.sRGB2D && r_texture_gammaramps && !vid_gammatables_trivial)
+	if (usegamma && v_glslgamma_2d.integer && !vid.sRGB2D && r_texture_gammaramps && !vid_gammatables_trivial)
 		permutation |= SHADERPERMUTATION_GAMMARAMPS;
 	if (suppresstexalpha)
 		permutation |= SHADERPERMUTATION_REFLECTCUBE;
@@ -2050,7 +2049,7 @@ void R_SetupShader_Generic(rtexture_t *first, rtexture_t *second, int texturemod
 		R_Mesh_TexBind(GL20TU_FIRST , first );
 		R_Mesh_TexBind(GL20TU_SECOND, second);
 		if (permutation & SHADERPERMUTATION_GAMMARAMPS)
-			R_Mesh_TexBind(r_glsl_permutation->tex_Texture_GammaRamps, r_texture_gammaramps);
+			R_Mesh_TexBind(GL20TU_GAMMARAMPS, r_texture_gammaramps);
 #endif
 		break;
 	case RENDERPATH_D3D10:
@@ -6226,6 +6225,7 @@ static void R_Bloom_StartFrame(void)
 	case RENDERPATH_GL11:
 	case RENDERPATH_GL13:
 	case RENDERPATH_GLES1:
+		return; // don't bother
 	case RENDERPATH_GLES2:
 	case RENDERPATH_D3D9:
 	case RENDERPATH_D3D10:
@@ -6302,7 +6302,7 @@ static void R_Bloom_StartFrame(void)
 		Cvar_SetValueQuick(&r_damageblur, 0);
 	}
 
-	if (!((r_glsl_postprocess.integer || r_fxaa.integer) || (!R_Stereo_ColorMasking() && r_glsl_saturation.value != 1) || (v_glslgamma.integer && !vid_gammatables_trivial))
+	if (!((r_glsl_postprocess.integer || r_fxaa.integer) || (!R_Stereo_ColorMasking() && r_glsl_saturation.value != 1) || !vid_gammatables_trivial)
 	 && !r_bloom.integer
 	 && (R_Stereo_Active() || (r_motionblur.value <= 0 && r_damageblur.value <= 0))
 	 && !useviewfbo
@@ -6606,7 +6606,7 @@ static void R_BlendView(int fbo, rtexture_t *depthtexture, rtexture_t *colortext
 		permutation =
 			  (r_fb.bloomtexture[r_fb.bloomindex] ? SHADERPERMUTATION_BLOOM : 0)
 			| (r_refdef.viewblend[3] > 0 ? SHADERPERMUTATION_VIEWTINT : 0)
-			| ((v_glslgamma.value && !vid_gammatables_trivial) ? SHADERPERMUTATION_GAMMARAMPS : 0)
+			| (!vid_gammatables_trivial ? SHADERPERMUTATION_GAMMARAMPS : 0)
 			| (r_glsl_postprocess.integer ? SHADERPERMUTATION_POSTPROCESSING : 0)
 			| ((!R_Stereo_ColorMasking() && r_glsl_saturation.value != 1) ? SHADERPERMUTATION_SATURATION : 0);
 
@@ -6955,7 +6955,7 @@ void R_UpdateVariables(void)
 	case RENDERPATH_D3D11:
 	case RENDERPATH_SOFT:
 	case RENDERPATH_GLES2:
-		if(v_glslgamma.integer && !vid_gammatables_trivial)
+		if(!vid_gammatables_trivial)
 		{
 			if(!r_texture_gammaramps || vid_gammatables_serial != r_texture_gammaramps_serial)
 			{
diff --git a/vid_shared.c b/vid_shared.c
index 7ee5b34f..26b69ad0 100644
--- a/vid_shared.c
+++ b/vid_shared.c
@@ -195,8 +195,7 @@ cvar_t v_color_grey_b = {CVAR_SAVE, "v_color_grey_b", "0.5", "desired color of g
 cvar_t v_color_white_r = {CVAR_SAVE, "v_color_white_r", "1", "desired color of white"};
 cvar_t v_color_white_g = {CVAR_SAVE, "v_color_white_g", "1", "desired color of white"};
 cvar_t v_color_white_b = {CVAR_SAVE, "v_color_white_b", "1", "desired color of white"};
-cvar_t v_glslgamma = {CVAR_SAVE, "v_glslgamma", "1", "enables use of GLSL to apply gamma correction ramps"};
-cvar_t v_glslgamma_2d = {CVAR_SAVE, "v_glslgamma_2d", "0", "applies GLSL gamma to 2d pictures (HUD, fonts)"};
+cvar_t v_glslgamma_2d = {CVAR_SAVE, "v_glslgamma_2d", "1", "applies GLSL gamma to 2d pictures (HUD, fonts)"};
 cvar_t v_psycho = {0, "v_psycho", "0", "easter egg - R.I.P. zinx http://obits.al.com/obituaries/birmingham/obituary.aspx?n=christopher-robert-lais&pid=186080667"};
 
 // brand of graphics chip
@@ -1060,10 +1059,7 @@ void VID_CheckExtensions(void)
 	vid.support.arb_texture_cube_map = GL_CheckExtension("GL_ARB_texture_cube_map", NULL, "-nocubemap", false);
 	vid.support.arb_texture_env_combine = GL_CheckExtension("GL_ARB_texture_env_combine", NULL, "-nocombine", false) || GL_CheckExtension("GL_EXT_texture_env_combine", NULL, "-nocombine", false);
 	vid.support.arb_texture_gather = GL_CheckExtension("GL_ARB_texture_gather", NULL, "-notexturegather", false);
-#ifndef __APPLE__
-	// LordHavoc: too many bugs on OSX!
 	vid.support.arb_texture_non_power_of_two = GL_CheckExtension("GL_ARB_texture_non_power_of_two", NULL, "-notexturenonpoweroftwo", false);
-#endif
 	vid.support.arb_vertex_buffer_object = GL_CheckExtension("GL_ARB_vertex_buffer_object", vbofuncs, "-novbo", false);
 	vid.support.arb_uniform_buffer_object = GL_CheckExtension("GL_ARB_uniform_buffer_object", ubofuncs, "-noubo", false);
 	vid.support.ati_separate_stencil = GL_CheckExtension("separatestencil", gl2separatestencilfuncs, "-noseparatestencil", true) || GL_CheckExtension("GL_ATI_separate_stencil", atiseparatestencilfuncs, "-noseparatestencil", false);
@@ -1676,7 +1672,6 @@ void VID_Shared_Init(void)
 	Cvar_RegisterVariable(&v_color_white_g);
 	Cvar_RegisterVariable(&v_color_white_b);
 
-	Cvar_RegisterVariable(&v_glslgamma);
 	Cvar_RegisterVariable(&v_glslgamma_2d);
 
 	Cvar_RegisterVariable(&v_psycho);
-- 
2.39.5