[Mesa-dev] [PATCH] intel/fs: Don't emit a des copy for image ops with has_dest == false

Jason Ekstrand jason at jlekstrand.net
Tue Mar 27 23:36:20 UTC 2018


On Tue, Mar 27, 2018 at 4:33 PM, Matt Turner <mattst88 at gmail.com> wrote:

> On Tue, Mar 27, 2018 at 4:29 PM, Jason Ekstrand <jason at jlekstrand.net>
> wrote:
> > This was causing us to walk dest_components times over a thing with no
> > destination.  This happened to work because all of the image intrinsics
> > without a destination also happened to have dest_components == 0.  We
> > shouldn't be reading dest_components if has_dest == false.
> > ---
> >  src/intel/compiler/brw_fs_nir.cpp | 8 +++++---
> >  1 file changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/intel/compiler/brw_fs_nir.cpp
> b/src/intel/compiler/brw_fs_nir.cpp
> > index f5d5399..8d1c387 100644
> > --- a/src/intel/compiler/brw_fs_nir.cpp
> > +++ b/src/intel/compiler/brw_fs_nir.cpp
> > @@ -3848,9 +3848,11 @@ fs_visitor::nir_emit_intrinsic(const fs_builder
> &bld, nir_intrinsic_instr *instr
> >                                   get_image_atomic_op(instr->intrinsic,
> type));
> >
> >        /* Assign the result. */
> > -      for (unsigned c = 0; c < info->dest_components; ++c)
> > -         bld.MOV(offset(retype(dest, base_type), bld, c),
> > -                 offset(tmp, bld, c));
> > +      if (nir_intrinsic_infos[instr->intrinsic].has_dest) {
> > +         for (unsigned c = 0; c < info->dest_components; ++c)
> > +            bld.MOV(offset(retype(dest, base_type), bld, c),
> > +                    offset(tmp, bld, c));
>
> Nested control flow and a multiline statement: braces required. Please
> fix while you're here.
>

Done.


> Reviewed-by: Matt Turner <mattst88 at gmail.com>
>

Thanks!

--Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180327/4ceba4b5/attachment.html>


More information about the mesa-dev mailing list