[Mesa-dev] [PATCH] i965/fs: Disable opt_sampler_eot for more message types
ben at bwidawsk.net
Tue Oct 20 14:41:55 PDT 2015
On Tue, Oct 20, 2015 at 11:56:15AM +0200, Neil Roberts 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.
I remember seeing this before, but I cannot find it now. All I am seeing
regarding performance implications are the bits about requiring a header, and
writing to the same pixel from multiple threads. The latter one I assume is only
going to happen with MSAA?
> 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)
> return false;
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
More information about the mesa-dev