Mesa (radeon-rewrite): r300: more cleanup

Alex Deucher agd5f at kemper.freedesktop.org
Sat May 16 15:48:04 UTC 2009


Module: Mesa
Branch: radeon-rewrite
Commit: f8c30793d161618fa1cdc788ad7984566b236d5e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f8c30793d161618fa1cdc788ad7984566b236d5e

Author: Maciej Cencora <m.cencora at gmail.com>
Date:   Thu May 14 00:10:52 2009 +0200

r300: more cleanup

- remove unnecessary r300TranslateFragmentShader call from r300UpdateShaderStates (it is already called in r300UpdateShaders)
- remove unnecessary null ptr checks

---

 src/mesa/drivers/dri/r300/r300_state.c |   40 ++++++++++---------------------
 1 files changed, 13 insertions(+), 27 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c
index 5821395..502bdd2 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -1395,9 +1395,6 @@ static void r300SetupTextures(GLcontext * ctx)
 	r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] =
 	    cmdpacket0(r300->radeon.radeonScreen, R300_TX_BORDER_COLOR_0, last_hw_tmu + 1);
 
-	if (!fp)		/* should only happenen once, just after context is created */
-		return;
-
 	if (r300->radeon.radeonScreen->chip_family < CHIP_FAMILY_RV515) {
 		if (fp->Base.UsesKill && last_hw_tmu < 0) {
 			// The KILL operation requires the first texture unit
@@ -1442,12 +1439,7 @@ static void r300SetupRSUnit(GLcontext * ctx)
 	else
 		RENDERINPUTS_COPY(OutputsWritten.index_bitset, r300->render_inputs_bitset);
 
-	if (ctx->FragmentProgram._Current)
-		InputsRead = ctx->FragmentProgram._Current->Base.InputsRead;
-	else {
-		fprintf(stderr, "No ctx->FragmentProgram._Current!!\n");
-		return;		/* This should only ever happen once.. */
-	}
+	InputsRead = ctx->FragmentProgram._Current->Base.InputsRead;
 
 	R300_STATECHANGE(r300, ri);
 	R300_STATECHANGE(r300, rc);
@@ -1579,12 +1571,7 @@ static void r500SetupRSUnit(GLcontext * ctx)
 	else
 		RENDERINPUTS_COPY(OutputsWritten.index_bitset, r300->render_inputs_bitset);
 
-	if (ctx->FragmentProgram._Current)
-		InputsRead = ctx->FragmentProgram._Current->Base.InputsRead;
-	else {
-		fprintf(stderr, "No ctx->FragmentProgram._Current!!\n");
-		return;		/* This should only ever happen once.. */
-	}
+	InputsRead = ctx->FragmentProgram._Current->Base.InputsRead;
 
 	R300_STATECHANGE(r300, ri);
 	R300_STATECHANGE(r300, rc);
@@ -2226,9 +2213,14 @@ void r300UpdateShaders(r300ContextPtr rmesa)
 	ctx = rmesa->radeon.glCtx;
 	fp = (struct r300_fragment_program *) ctx->FragmentProgram._Current;
 
-	if (rmesa->radeon.NewGLState && rmesa->options.hw_tcl_enabled) {
-		rmesa->radeon.NewGLState = 0;
+	/* should only happenen once, just after context is created */
+	/* TODO: shouldn't we fallback to sw here? */
+	if (!fp) {
+		_mesa_fprintf(stderr, "No ctx->FragmentProgram._Current!!\n");
+		return;
+	}
 
+	if (rmesa->radeon.NewGLState && rmesa->options.hw_tcl_enabled) {
 		for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) {
 			rmesa->temp_attrib[i] =
 			    TNL_CONTEXT(ctx)->vb.AttribPtr[i];
@@ -2248,14 +2240,13 @@ void r300UpdateShaders(r300ContextPtr rmesa)
 		r300SwitchFallback(ctx, R300_FALLBACK_VERTEX_PROGRAM, !vp->native);
 	}
 
-	if (fp) {
-		if (!fp->translated)
-			r300TranslateFragmentShader(ctx, ctx->FragmentProgram._Current);
+	if (!fp->translated || rmesa->radeon.NewGLState)
+		r300TranslateFragmentShader(ctx, ctx->FragmentProgram._Current);
 
-		r300SwitchFallback(ctx, R300_FALLBACK_FRAGMENT_PROGRAM, fp->error);
-	}
+	r300SwitchFallback(ctx, R300_FALLBACK_FRAGMENT_PROGRAM, fp->error);
 
 	r300UpdateStateParameters(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS);
+	rmesa->radeon.NewGLState = 0;
 }
 
 static const GLfloat *get_fragmentprogram_constant(GLcontext *ctx,
@@ -2435,11 +2426,6 @@ void r300UpdateShaderStates(r300ContextPtr rmesa)
 		rmesa->hw.fg_depth_src.cmd[1] = fgdepthsrc;
 	}
 
-	r300TranslateFragmentShader(ctx, ctx->FragmentProgram._Current);
-
-	if (r300_fp->error)
-		return;
-
 	r300SetupTextures(ctx);
 
 	rmesa->vtbl.SetupPixelShader(ctx);




More information about the mesa-commit mailing list