<p dir="ltr"><br>
On Oct 28, 2015 9:12 PM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br>
><br>
> On Wednesday, October 28, 2015 02:58:07 PM Kristian Høgsberg wrote:<br>
> > On Wed, Oct 28, 2015 at 2:34 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> > > On Wed, Oct 28, 2015 at 2:32 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> > >> This series adds a nir_pass datastructure and some helpers for managing<br>
> > >> optimization and lowering passes.  I've been meaning to get around to this<br>
> > >> for some time.  There are a couple of primary benifits to this:<br>
> > >><br>
> > >> First, this gives us a central place to put things such as validating the<br>
> > >> shader, printing it if it changes, etc.  Right now, the i965 backend calls<br>
> > >> nir_validate_shader after each pass.  We would also like to add something<br>
> > >> like we have in the i965 backend where it can be set to dump the IR to a<br>
> > >> file after every pass that changess it.<br>
> > >><br>
> > >> Mor importantly, though, it moves metadata out of the passes them selves<br>
> > >> and into the runner.  In the process of putting this series together, I<br>
> > >> found at least 3 or 4 optimization passes that don't properly invalidate<br>
> > >> metadata.  By putting a metadata_preserved field in nir_pass and handling<br>
> > >> metadata in the pass runner, we make it much less likely that a pass will<br>
> > >> get this wrong.  LLVM has a similar optimization pass architecture for<br>
> > >> precicely this reason.<br>
> > >><br>
> > >> As a nice little side-benifit, we no longer have to iterate over all of the<br>
> > >> overloads with non-NULL impl pointers in each pass.<br>
> > ><br>
> > > Once again, git-send-email failed to send the last patch for whatever<br>
> > > reason.  The entire series can be found here:<br>
> > ><br>
> > > <a href="http://cgit.freedesktop.org/~jekstrand/mesa/log/?h=wip/nir-pass">http://cgit.freedesktop.org/~jekstrand/mesa/log/?h=wip/nir-pass</a><br>
> ><br>
> > Nice. Series,<br>
> ><br>
> > Reviewed-by: Kristian Høgsberg <<a href="mailto:krh@bitplanet.net">krh@bitplanet.net</a>><br>
><br>
> I plan to review this as well, so please hold off on pushing it for a<br>
> little while.  Thanks!</p>
<p dir="ltr">By all means, go ahead.  It'd also be nice, while you're at it to weigh in on how to handle passing arguments to passes.  There are a number of ideas thrown back-and-forth between Connor and myself on how to do it (if you can sort through through the bike-shedding).</p>
<p dir="ltr">--Jason<br>
</p>