<p dir="ltr"><br>
On Sep 19, 2015 3:31 PM, "Jason Ekstrand" <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
><br>
><br>
> On Sep 18, 2015 1:29 PM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br>
> ><br>
> > On Friday, September 18, 2015 10:55:34 AM Jason Ekstrand wrote:<br>
> > > Um, why?  I'm sure you have some reason but I don't immediately see how a<br>
> > > progress flag from lower_vec_to_movs is useful.  Some of the others<br>
> > > definitely are.<br>
> > > --Jason<br>
> ><br>
> > Sorry, I should have explained in at least one of the patches.<br>
> ><br>
> > I'm hoping to create an OPT() macro, similar to what we do for i965<br>
> > passes.  It would:<br>
> ><br>
> > 1. Run the pass.<br>
> > 2. Call nir_validate_shader() if we actually made any progress.<br>
> > 3. Optionally nir_print_shader() if we made any changes.<br>
> >    (i.e. let us do INTEL_DEBUG=optimizer but for NIR passes)<br>
> ><br>
> > I need to know whether a pass made progress in order to decide whether<br>
> > or not to dump the shader.  I might want to see the code before and<br>
> > after nir_lower_vec_to_movs().<br>
> ><br>
> > Also, having some passes return 'bool' and some return 'void' is<br>
> > awkward: I can't wrap void-return functions in the same sort of macro.<br>
><br>
> That makes sense. I think what I'd like to have is a data structure<br>
><br>
> nir_shader_pass {<br>
>    bool (*shader_func)(nir_shader *shader);<br>
>    bool (*impl_func)(nir_function_impl *impl);<br>
>    nir_metadata preserved;<br>
> };<br>
><br>
> 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?<br>
> --Jason</p>
<p dir="ltr">I forgot to say that this is a good first pass and the series is</p>
<p dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>></p>