<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 17, 2019 at 12:03 PM Boris Brezillon <<a href="mailto:boris.brezillon@collabora.com">boris.brezillon@collabora.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mon, 17 Jun 2019 10:54:20 -0500<br>
Jason Ekstrand <<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>> wrote:<br>
<br>
> Why do you need to call it in a loop?<br>
<br>
Well, I need to call it at least twice (first pass to lower TEX(RECT)<br>
into TXS(LOD)+TEX(2D) and the second pass to lower TXS(LOD) into<br>
TXS(0)>>LOD) and I thought doing that in a do {} while (progress) loop<br>
would be more future proof (in case things need to be done in more than<br>
2 passes at some point).</blockquote><div><br></div><div>That makes sense.  Generally, we've tried to make the pass so that it does the right thing with one invocation but you're likely using a lowering combination that no one has used before.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This being said, I wasn't sure about this<br>
solution, hence the RFC ;-). I'm perfectly fine calling<br>
NIR_PASS(nir_lower_tex) twice if that's what you recommend.<br></blockquote><div><br></div><div>That's fine.  If it returns progress even though it didn't touch the shader, that's a bug.</div><div><br></div><div>--Jason<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> <br>
> On Mon, Jun 17, 2019 at 5:21 AM Boris Brezillon <<br>
> <a href="mailto:boris.brezillon@collabora.com" target="_blank">boris.brezillon@collabora.com</a>> wrote:  <br>
> <br>
> > Hello,<br>
> ><br>
> > I've recently been working on adding a new lowering option to the<br>
> > lower_tex() logic and found out that doing<br>
> ><br>
> >         do progress = nir_lower_tex(); while (progress);<br>
> ><br>
> > is not working well (nir_lower_tex() keeps returning true and lowering<br>
> > the same instructions over and over again).<br>
> ><br>
> > The 2 patches in this series seem to fix my issues, but I'm only using<br>
> > txp and rect lowering, and looking at the rest of the code I fear there<br>
> > are other places that could lower things twice of keep reporting that<br>
> > things have progressed even if it's not true (yuv to rgb conversion is<br>
> > of these). So, my question is, are nir_lower_tex() users supposed to<br>
> > clear options flags manually after this pass and limit the number<br>
> > of passes (through some experimenting) or should we try to fix<br>
> > nir_lower_tex()?<br>
> ><br>
> > Regards,<br>
> ><br>
> > Boris<br>
> ><br>
> > Boris Brezillon (2):<br>
> >   nir/lower_tex: Actually report when projector lowering happened<br>
> >   nir/lower_tex: Update ->sampler_dim value before calling<br>
> >     get_texture_size()<br>
> ><br>
> >  src/compiler/nir/nir_lower_tex.c | 12 ++++++------<br>
> >  1 file changed, 6 insertions(+), 6 deletions(-)<br>
> ><br>
> > --<br>
> > 2.20.1<br>
> ><br>
> >  <br>
<br>
</blockquote></div></div>