[Mesa-dev] [PATCH] i965/fs: Disable opt_sampler_eot for textureGather

Chris Forbes chrisf at ijw.co.nz
Fri May 8 11:51:36 PDT 2015


I don't have CHV or SKL hw or docs to try and confirm this, but this
does what it claims to.

Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

On Sat, May 9, 2015 at 5:10 AM, Neil Roberts <neil at linux.intel.com> wrote:
> The opt_sampler_eot optimisation seems to break when the last
> instruction is SHADER_OPCODE_TG4. A bunch of Piglit tests end up doing
> this so it causes a lot of regressions. I can't find any documentation
> or known workarounds to indicate that this is expected behaviour, but
> considering that this is probably a pretty unlikely situation in a
> real use case we might as well disable it in order to avoid the
> regressions. In total this fixes 451 tests.
>
> Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>
> See here for some more discussion of this:
>
> http://lists.freedesktop.org/archives/mesa-dev/2015-May/083640.html
>
> As far as I can tell the Jenkins run mentioned in that email doesn't
> seem to have any tests on Cherryview or Skylake so that probably
> explains why it didn't pick up the regression.
>
>  src/mesa/drivers/dri/i965/brw_fs.cpp | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 8dd680e..e9528e0 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -2655,6 +2655,16 @@ 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.
> +    */
> +   if (tex_inst->opcode == SHADER_OPCODE_TG4 ||
> +       tex_inst->opcode == SHADER_OPCODE_TG4_OFFSET)
> +      return false;
> +
>     /* If there's no header present, we need to munge the LOAD_PAYLOAD as well.
>      * It's very likely to be the previous instruction.
>      */
> --
> 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