On Tue, Oct 20, 2015 at 5:56 AM, Neil Roberts <n...@linux.intel.com> wrote: > 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. > --- > > That paragraph in the spec also mentions further restrictions that we > should probably worry about like that the shader shouldn't combine > this optimisation with any other render target data port read/writes. > > It also has a fairly pessimistic note saying the optimisation is only > really good for large polygons in a GUI-like workload. I wonder > whether we should be doing some more benchmarking to decide whether > it's really a good idea to enable this as a general optimisation even > for games. > > src/mesa/drivers/dri/i965/brw_fs.cpp | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > b/src/mesa/drivers/dri/i965/brw_fs.cpp > index 49323eb..bf9ff84 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -2238,13 +2238,14 @@ 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_LOD || > + tex_inst->opcode == SHADER_OPCODE_TG4 || > tex_inst->opcode == SHADER_OPCODE_TG4_OFFSET)
Do you also need to include SHADER_OPCODE_SAMPLEINFO? > return false; > > -- > 1.9.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev