i965/fs: Only set brw_wm_prog_key data for samplers used by the WM.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 8 Dec 2011 20:15:59 +0000 (12:15 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 20 Dec 2011 00:33:10 +0000 (16:33 -0800)
This should avoid state-dependent FS recompiles when samplers that are
only used by the VS change.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_wm.c

index f23edfa798b20889917a72a7a8dbd380e61ad394..cad0af8c1acdc56c3b22500d0e474d8927194ecc 100644 (file)
@@ -412,6 +412,7 @@ static void brw_wm_populate_key( struct brw_context *brw,
    /* BRW_NEW_FRAGMENT_PROGRAM */
    const struct brw_fragment_program *fp = 
       (struct brw_fragment_program *)brw->fragment_program;
+   const struct gl_program *prog = (struct gl_program *) brw->fragment_program;
    GLuint lookup = 0;
    GLuint line_aa;
    GLuint i;
@@ -487,7 +488,8 @@ static void brw_wm_populate_key( struct brw_context *brw,
 
    /* _NEW_TEXTURE */
    for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
-      brw_populate_sampler_prog_key_data(ctx, &key->tex, i);
+      if (prog->TexturesUsed[i])
+        brw_populate_sampler_prog_key_data(ctx, &key->tex, i);
    }
 
    /* _NEW_BUFFERS */