Mesa (master): nir/linker: take into account hidden uniforms

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Aug 13 14:30:36 UTC 2018


Module: Mesa
Branch: master
Commit: fe2de39fb2ef4caca2afd483c375bd0aa31fbb6d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe2de39fb2ef4caca2afd483c375bd0aa31fbb6d

Author: Alejandro Piñeiro <apinheiro at igalia.com>
Date:   Wed Aug  8 13:41:58 2018 +0200

nir/linker: take into account hidden uniforms

So they are not exposed through the introspection API.

It is worth to note that the number of hidden uniforms of GLSL linking
vs SPIR-V linking would be somewhat different due the differen order
of the nir lowerings/optimizations.

For example: gl_FbWposYTransform. This is introduced as part of
nir_lower_wpos_ytransform. On GLSL that is executed after the IR-based
linking. So that means that on GLSL the UniformStorage will not
include this uniform. With the SPIR-V linking, that uniform is already
present, but marked as hidden. So it will be included on the
UniformStorage, but as hidden.

One alternative would create a special how_declared for that case, but
seemed an overkill. Using hidden should be ok as far as it is used
properly.

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/compiler/glsl/gl_nir_link_uniforms.c | 5 ++++-
 src/compiler/glsl/gl_nir_linker.c        | 4 ++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/compiler/glsl/gl_nir_link_uniforms.c b/src/compiler/glsl/gl_nir_link_uniforms.c
index f729fa988e..1573e30c41 100644
--- a/src/compiler/glsl/gl_nir_link_uniforms.c
+++ b/src/compiler/glsl/gl_nir_link_uniforms.c
@@ -365,6 +365,10 @@ nir_link_uniform(struct gl_context *ctx,
          uniform->remap_location = UNMAPPED_UNIFORM_LOC;
       }
 
+      uniform->hidden = state->current_var->data.how_declared == nir_var_hidden;
+      if (uniform->hidden)
+         state->num_hidden_uniforms++;
+
       /* @FIXME: the initialization of the following will be done as we
        * implement support for their specific features, like SSBO, atomics,
        * etc.
@@ -374,7 +378,6 @@ nir_link_uniform(struct gl_context *ctx,
       uniform->matrix_stride = -1;
       uniform->array_stride = -1;
       uniform->row_major = false;
-      uniform->hidden = false;
       uniform->builtin = false;
       uniform->is_shader_storage = false;
       uniform->atomic_buffer_index = -1;
diff --git a/src/compiler/glsl/gl_nir_linker.c b/src/compiler/glsl/gl_nir_linker.c
index d09a2c0a6c..547549bc4e 100644
--- a/src/compiler/glsl/gl_nir_linker.c
+++ b/src/compiler/glsl/gl_nir_linker.c
@@ -56,6 +56,10 @@ nir_build_program_resource_list(struct gl_context *ctx,
    for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) {
       struct gl_uniform_storage *uniform = &prog->data->UniformStorage[i];
 
+      /* Do not add uniforms internally used by Mesa. */
+      if (uniform->hidden)
+         continue;
+
       if (!link_util_add_program_resource(prog, resource_set, GL_UNIFORM, uniform,
                                           uniform->active_shader_mask)) {
          return;




More information about the mesa-commit mailing list