[Mesa-dev] [PATCH 3/9] nir: Report progress from lower_vec_to_movs().

Jason Ekstrand jason at jlekstrand.net
Sat Sep 19 13:31:06 PDT 2015


On Sep 18, 2015 1:29 PM, "Kenneth Graunke" <kenneth at whitecape.org> wrote:
>
> On Friday, September 18, 2015 10:55:34 AM Jason Ekstrand wrote:
> > Um, why?  I'm sure you have some reason but I don't immediately see how
a
> > progress flag from lower_vec_to_movs is useful.  Some of the others
> > definitely are.
> > --Jason
>
> Sorry, I should have explained in at least one of the patches.
>
> I'm hoping to create an OPT() macro, similar to what we do for i965
> passes.  It would:
>
> 1. Run the pass.
> 2. Call nir_validate_shader() if we actually made any progress.
> 3. Optionally nir_print_shader() if we made any changes.
>    (i.e. let us do INTEL_DEBUG=optimizer but for NIR passes)
>
> I need to know whether a pass made progress in order to decide whether
> or not to dump the shader.  I might want to see the code before and
> after nir_lower_vec_to_movs().
>
> Also, having some passes return 'bool' and some return 'void' is
> awkward: I can't wrap void-return functions in the same sort of macro.

That makes sense. I think what I'd like to have is a data structure

nir_shader_pass {
   bool (*shader_func)(nir_shader *shader);
   bool (*impl_func)(nir_function_impl *impl);
   nir_metadata preserved;
};

Then have one of these exported per pass instead of the actual function or
functions.  Then we could have a helper function that runs the pass similar
to what the OPT macro would.  It could even be smart and, if you don't
provide a shader_func, it runs impl_func on each overload. Does that seem
reasonable?
--Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150919/aeb5dcb1/attachment-0001.html>


More information about the mesa-dev mailing list