[Mesa-dev] [PATCH 07/17] intel/compiler/fs: Return multiple_instructions_emitted from generate_linterp

Kenneth Graunke kenneth at whitecape.org
Sat Feb 24 00:08:03 UTC 2018


On Friday, February 23, 2018 3:51:37 PM PST Kenneth Graunke wrote:
> On Tuesday, February 20, 2018 9:15:14 PM PST Matt Turner wrote:
> > If multiple instructions are emitted, special handling of things like
> > conditional mod, saturate, and NoDDClr/NoDDChk need to be performed.
> > 
> > I noticed that conditional mods were misapplied when adding support for
> > Gen11 (in the previous patch). The next patch fixes the same bug in the
> > Gen4 LINE/MAC case, though I was not able to trigger it.
> > ---
> >  src/intel/compiler/brw_fs.h             |  2 +-
> >  src/intel/compiler/brw_fs_generator.cpp | 12 +++++++++---
> >  2 files changed, 10 insertions(+), 4 deletions(-)
> 
> Ugh...I noticed a couple things:
> 
> 1. Nothing has set multiple_instructions_emitted since May 2016
>    (commit 95272f5c7e6914fe8a85a4e37e07f1e8e3634446), which means
>    that block of code has been dead for a long time.
> 
> 2. Nothing in the FS backend sets inst->no_dd_* either.  It looks like
>    it was used for general interpolation until July 2016 (commit
>    1eef0b73aa323d94d5a080cd1efa81ccacdbd0d2) and for the unlit centroid
>    workaround until August 2016 (commit 875341c69b99dea7942a68c9060aa3).
>    So, that's also basically dead.
> 
> 3. You mention saturate, but we don't handle that specially for multiple
>    instructions.
> 
> 4. You didn't handle conditional modifiers in generate_linterp, so...
>    if conditional LINTERP is a thing, it's going to be broken.  That
>    said, I'm pretty sure it isn't a thing.

Sorry, this isn't quite true.  For Gen11+, you handle conditional mod
specially, because you need to put it on multiple instructions - one of
which is the last.  So, without multiple_instructions_emitted flagged,
your code would set it...and this code would set it again.  Harmless.

However, it looks like you haven't extended generate_linterp() to handle
conditional mod in the older LINE/MAC case.  So, with this patch, those
won't get conditions at all.  Without this patch, we would set it on the
final MAC...which I think is what we want.

So, I think this is unnecessary for Gen11+ and harmful for old HW.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180223/002d66f7/attachment.sig>


More information about the mesa-dev mailing list