[Mesa-dev] [PATCH 00/11] Gallium/RadeonSI: Allow any 1D register as a TGSI address operand

Gert Wollny gw.fossdev at gmail.com
Sat Sep 30 14:49:51 UTC 2017


Am Freitag, den 29.09.2017, 16:09 +0200 schrieb Marek Olšák:
> On Fri, Sep 29, 2017 at 3:33 PM, Gert Wollny <gw.fossdev at gmail.com>
> wrote:
> > 
> > Am 29.09.2017 14:51 schrieb "Marek Olšák" <maraeo at gmail.com>:
> > 
> > > 
> > > If all requirements are met, UARL isn't emitted and the source
> > > operand of UARL is folded into the instruction where ADDR would
> > > normally be used.
> > 
> > I only skimmed over the patches, but this will need
> > tracking  reladdr* in the temporary register  lifetime estimation
> > that is called by merge_registers, which is not yet done (unless I
> > missed a patch in the last few days or I didn't see it in this
> > set).
> > 
> > AFAIR radeonsi doesn't use it, but at least r600g does, for which
> > you also enabled this new behaviour.
> > 
> > On Monday I can have a closer look at it.
> 
> This is only enabled for radeonsi, not r600g.

My bad, shouldn't read patches on a mobile phone, but in any case, I
think to avoid problems if one wants to enable this for other drivers
it would be prudent to add an assert in merge_registers to make sure it
is not called.  

I'm currently working on improving the register merging, and there I'll
make sure that the reladdr* are tracked too.
 
Best, 
Gert 

Proposed patch: 

--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -5195,7 +5195,7 @@ glsl_to_tgsi_visitor::merge_two_dsts(void)
 void
 glsl_to_tgsi_visitor::merge_registers(void)
 {
-
+   assert(need_uarl);
    struct lifetime *lifetimes =
          rzalloc_array(mem_ctx, struct lifetime, this->next_temp);





More information about the mesa-dev mailing list