aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Roberts <[email protected]>2015-10-20 11:56:15 +0200
committerNeil Roberts <[email protected]>2015-10-21 11:08:37 +0200
commitee77796a5c97105bf7e92e3a7931ee0f331a0545 (patch)
tree61aaba707232aa2fd2778891086a61625784e9d1
parent801f151917fedb13c5c6e96281a18d833dd6901f (diff)
i965/fs: Disable opt_sampler_eot for more message types
In bfdae9149e0 I disabled the opt_sampler_eot optimisation for TG4 message types because I found by experimentation that it doesn't work. I wrote in the comment that I couldn't find any documentation for this problem. However I've now found the documentation and it has additional restrictions on further message types so this patch updates the comment and adds the others. Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 97d7fd76f62..da90467e625 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -2238,13 +2238,15 @@ fs_visitor::opt_sampler_eot()
if (unlikely(tex_inst->is_head_sentinel()) || !tex_inst->is_tex())
return false;
- /* This optimisation doesn't seem to work for textureGather for some
- * reason. I can't find any documentation or known workarounds to indicate
- * that this is expected, but considering that it is probably pretty
- * unlikely that a shader would directly write out the results from
- * textureGather we might as well just disable it.
+ /* 3D Sampler » Messages » Message Format
+ *
+ * “Response Length of zero is allowed on all SIMD8* and SIMD16* sampler
+ * messages except sample+killpix, resinfo, sampleinfo, LOD, and gather4*”
*/
- if (tex_inst->opcode == SHADER_OPCODE_TG4 ||
+ if (tex_inst->opcode == SHADER_OPCODE_TXS ||
+ tex_inst->opcode == SHADER_OPCODE_SAMPLEINFO ||
+ tex_inst->opcode == SHADER_OPCODE_LOD ||
+ tex_inst->opcode == SHADER_OPCODE_TG4 ||
tex_inst->opcode == SHADER_OPCODE_TG4_OFFSET)
return false;