[Mesa-dev] [PATCH] i965/fs: Disable opt_sampler_eot for more message types
Ilia Mirkin
imirkin at alum.mit.edu
Tue Oct 20 12:07:48 PDT 2015
On Tue, Oct 20, 2015 at 5:56 AM, Neil Roberts <neil at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list