[Mesa-dev] [PATCH 10/12] nir: Store num_direct_uniforms in the nir_shader.
Jason Ekstrand
jason at jlekstrand.net
Wed Apr 8 11:39:59 PDT 2015
On Wed, Apr 8, 2015 at 12:06 AM, Kenneth Graunke <kenneth at whitecape.org> 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.
Yeah, it's sketchy but, honestly, storing the number of
uniforms/inputs/outputs is also kinda scketchy. I can't think of
anythiing better at the moment so let's just go with it.
> Signed-off-by: Kenneth Graunke <kenneth at 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);
> } 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.
> --
> 2.3.5
>
> _______________________________________________
> 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