i965/fs: Guess nr_color_regions better in precompile
authorChris Forbes <chrisf@ijw.co.nz>
Sat, 25 Jan 2014 22:03:33 +0000 (11:03 +1300)
committerChris Forbes <chrisf@ijw.co.nz>
Wed, 5 Feb 2014 21:58:37 +0000 (10:58 +1300)
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp

index d7301dd0a12da555b2275636b8505316170cc081..c2fa06b38ab14218d00a54b764d4c42aac7f780e 100644 (file)
@@ -3590,7 +3590,9 @@ brw_fs_precompile(struct gl_context *ctx, struct gl_shader_program *prog)
       key.render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
    }
 
-   key.nr_color_regions = 1;
+   key.nr_color_regions = _mesa_bitcount_64(fp->Base.OutputsWritten &
+         ~(BITFIELD64_BIT(FRAG_RESULT_DEPTH) |
+         BITFIELD64_BIT(FRAG_RESULT_SAMPLE_MASK)));
 
    /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT is almost always GL_DONT_CARE.  The
     * quality of the derivatives is likely to be determined by the driconf