[Mesa-dev] [PATCH 08/18] i965: Don't compute brw->wm.input_size_masks when it's unused.

Eric Anholt eric at anholt.net
Tue May 24 16:00:14 PDT 2011


It's only used in the old fragment program path, to avoid projection
when w is always 1.  We do want to do this in the new path pre-gen6
too, but we'll probably do it through the ir.
---
 src/mesa/drivers/dri/i965/brw_vs_constval.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vs_constval.c b/src/mesa/drivers/dri/i965/brw_vs_constval.c
index 47cc0a7..9fdfebe 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_constval.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_constval.c
@@ -194,11 +194,19 @@ static void calc_wm_input_sizes( struct brw_context *brw )
    /* BRW_NEW_VERTEX_PROGRAM */
    const struct brw_vertex_program *vp =
       brw_vertex_program_const(brw->vertex_program);
+   /* BRW_NEW_FRAGMENT_PROGRAM */
+   struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram;
    /* BRW_NEW_INPUT_DIMENSIONS */
    struct tracker t;
    GLuint insn;
    GLuint i;
 
+   /* If we're going to go through brw_fs.cpp, we don't end up using
+    * brw->wm.input_size_masks.
+    */
+   if (prog && prog->_LinkedShaders[MESA_SHADER_FRAGMENT])
+      return;
+
    memset(&t, 0, sizeof(t));
 
    /* _NEW_LIGHT */
@@ -238,7 +246,9 @@ static void calc_wm_input_sizes( struct brw_context *brw )
 const struct brw_tracked_state brw_wm_input_sizes = {
    .dirty = {
       .mesa  = _NEW_LIGHT,
-      .brw   = BRW_NEW_VERTEX_PROGRAM | BRW_NEW_INPUT_DIMENSIONS,
+      .brw   = (BRW_NEW_FRAGMENT_PROGRAM |
+		BRW_NEW_VERTEX_PROGRAM |
+		BRW_NEW_INPUT_DIMENSIONS),
       .cache = 0
    },
    .prepare = calc_wm_input_sizes
-- 
1.7.5.1



More information about the mesa-dev mailing list