[Mesa-dev] [PATCH 7/7] tgsi: use separate structure for indirect address

Jose Fonseca jfonseca at vmware.com
Mon Mar 11 14:03:11 PDT 2013

----- Original Message -----
> Am 11.03.2013 15:52, schrieb Jose Fonseca:
> > Christian,
> >
> > I didn't comment on the previous threads, but the approach mentioned in
> > http://lists.freedesktop.org/archives/mesa-dev/2012-November/030476.html
> > seems sensible to me.
> >
> > I think after the first round we should have this in a branch to allow
> > drivers to catch up with the interface change. Or is it possible for
> > drivers to opt-in via a cap?
> Not the drivers are in question of changing, the state trackers are. If
> the drivers just ignore those additional informations nothing should
> change for them.

I think that drivers like llvmpipe will choke on declarations like

  DCL TEMP[1][0..7]

So if the state trackers start emitting these I think we'll nee

> For the state trackers my current approach also doesn't need them to
> change, currently the semantics is as following:
> If Declaration==0 then we fall back to the "old" behavior, e.g. the
> whole register file is indirectly addressed.
> Else the state tracker (currently only glsl_to_tgsi) provided the
> necessary information in the Declaration field to only indirect address
> a certain part of the register file.

Yes, I like that. I think we could eventually be strict and forbid indirect declaration==0, but it's nice not to have to rush.

> > A few more remarks inline.
> >
> > ----- Original Message -----
> >> From: Christian König <christian.koenig at amd.com>
> >>
> >> To further improve the optimization of source and destination
> >> indirect addressing we need the ability to store a reference
> >> to the declaration of the addressed operands.
> > Just to be perfectly clear, declaration number does not refer to the n-th
> > TEMP declaration, but declaration of TEMP[n], right?
> No, currently it indeed refers to the n-th TEMP declaration. But I'm
> still fighting with myself weather or not that's a good idea.

I think that using n-th TEMP[?] declaration instead of declaration of TEMP[n] it might be a bad precedent.

> > That is, this
> >
> >    DCL TEMP[1][0..70]
> >    DCL TEMP[2][0..7]
> >    MOV OUT[1], TEMP[1][ADDR[0].x]
> >
> > and this
> >
> >    DCL TEMP[2][0..7]
> >    DCL TEMP[1][0..70]
> >    MOV OUT[1], TEMP[1][ADDR[0].x]
> >
> > are equivalent, right?
> >
> > If so, I wonder if there is a name more descriptive than "Declaration"
> > here. Maybe "Range", or "IndexableRange"?
> Correct, yes. As said above, currently "Declaration" refers to the n-th
> declaration but I can easily add an "Indirect" flag to tgsi_declaration

I think I'd prefer something along these lines.

> (there are still 6 bits of padding in it) and have an "IndirectRangeID"
> (or ArrayID, ArrayName, whatever, make your choice) token following the
> declaration.

"Array*" sounds great to me.


More information about the mesa-dev mailing list