On 04/08/2015 12:06 AM, Kenneth Graunke wrote: > Storing this here is pretty sketchy - I don't know if any driver other > than i965 will want to use it. But this will make it a lot easier to > generate NIR code at link time. We'll probably rework it anyway. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/glsl/nir/nir.h | 3 +++ > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 5 +++-- > 2 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h > index e844e4d..7d11996 100644 > --- a/src/glsl/nir/nir.h > +++ b/src/glsl/nir/nir.h > @@ -1429,6 +1429,9 @@ typedef struct nir_shader { > * access plus one > */ > unsigned num_inputs, num_uniforms, num_outputs; > + > + /** the number of uniforms that are only accessed directly */ > + unsigned num_direct_uniforms; > } nir_shader; > > #define nir_foreach_overload(shader, overload) \ > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index 145a447..034b79a 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -120,7 +120,7 @@ fs_visitor::emit_nir_code() > > if (shader_prog) { > nir_assign_var_locations_scalar_direct_first(nir, &nir->uniforms, > - &num_direct_uniforms, > + &nir->num_direct_uniforms, > &nir->num_uniforms);
Why not just have nir_assign_var_locations_scalar_direct_first modify the nir_shader passed in? That seems more concise. > } else { > /* ARB programs generally create a giant array of "uniform" data, and > allow > @@ -128,7 +128,7 @@ fs_visitor::emit_nir_code() > * analysis, it's all or nothing. num_direct_uniforms is only useful > when > * we have some direct and some indirect access; it doesn't matter > here. > */ > - num_direct_uniforms = 0; > + nir->num_direct_uniforms = 0; > } > nir_assign_var_locations_scalar(&nir->inputs, &nir->num_inputs); > nir_assign_var_locations_scalar(&nir->outputs, &nir->num_outputs); > @@ -343,6 +343,7 @@ void > fs_visitor::nir_setup_uniforms(nir_shader *shader) > { > uniforms = shader->num_uniforms; > + num_direct_uniforms = shader->num_direct_uniforms; > > /* We split the uniform register file in half. The first half is > * entirely direct uniforms. The second half is indirect. > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev