[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