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

Jason Ekstrand jason at jlekstrand.net
Fri Oct 30 15:42:28 PDT 2015


On Fri, Oct 30, 2015 at 2:12 PM, Ian Romanick <idr at freedesktop.org> wrote:
> 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.

Strictly speaking, no.  There are passes that haven't been converted
that will need it.  The issue is how do you pass arguments into
passes.  Most optimization passes don't care but there are a few that
will have non-trivial arguments.
--Jason


More information about the mesa-dev mailing list