[Mesa-dev] [PATCH 00/11] nir: Add a pass management framework

Ian Romanick idr at freedesktop.org
Fri Oct 30 14:12:24 PDT 2015


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

Is it even necessary to sort that out now?  Are there passes that
haven't been ported to this infrastructure that need any of the extra
features that you and Connor were discussing?  I will give keithp credit
for teaching me not to engineer in features that you don't need yet.
When you do need them, the thing you spent a bunch of time putting in
probably won't be what you need.

> (if you can sort through through the bike-shedding).
> 
> --Jason
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev



More information about the mesa-dev mailing list