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@itsqueeze.com>
This commit is contained in:
Alejandro Piñeiro
2018-08-08 13:41:58 +02:00
parent 5332d7582d
commit fe2de39fb2
2 changed files with 8 additions and 1 deletions

View File

@@ -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;