i965/fs: Force per-sample dispatch if the shader reads from a multisample FBO.
authorFrancisco Jerez <currojerez@riseup.net>
Thu, 21 Jul 2016 23:20:07 +0000 (16:20 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 26 Aug 2016 01:36:06 +0000 (18:36 -0700)
The result of a framebuffer fetch from a multisample FBO is inherently
per-sample, so the spec requires at least those sections of the shader
that depend on the framebuffer fetch result to be executed once per
sample.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp

index c23b558894441363c6d53d65476cd149849b2e27..9f66dc7e024e707758701d378bf8562fbfcb0a7b 100644 (file)
@@ -6552,7 +6552,8 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
       (key->persample_interp ||
        (shader->info.system_values_read & (SYSTEM_BIT_SAMPLE_ID |
                                            SYSTEM_BIT_SAMPLE_POS)) ||
-       shader->info.fs.uses_sample_qualifier);
+       shader->info.fs.uses_sample_qualifier ||
+       shader->info.outputs_read);
 
    prog_data->early_fragment_tests = shader->info.fs.early_fragment_tests;