From fe2de39fb2ef4caca2afd483c375bd0aa31fbb6d Mon Sep 17 00:00:00 2001 From: Alejandro PiƱeiro Date: Wed, 8 Aug 2018 13:41:58 +0200 Subject: 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 --- src/compiler/glsl/gl_nir_link_uniforms.c | 5 ++++- src/compiler/glsl/gl_nir_linker.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src/compiler') diff --git a/src/compiler/glsl/gl_nir_link_uniforms.c b/src/compiler/glsl/gl_nir_link_uniforms.c index f729fa988e2..1573e30c41e 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 d09a2c0a6c5..547549bc4e0 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; -- cgit v1.2.3