mesa: fix UBO queries for active uniforms
Commit 34df5eb
introduced regression to GetActiveUniformBlockiv
when querying one of the following properties:
GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
Implementation counted all uniforms in ubo directly while query should
check first if the uniform in question is _active_.
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90109
Reviewed-By: Martin Peres <martin.peres@linux.intel.com>
This commit is contained in:
parent
7004632b28
commit
054c7dc7eb
|
@ -860,13 +860,23 @@ get_buffer_property(struct gl_shader_program *shProg,
|
|||
*val = RESOURCE_UBO(res)->UniformBufferSize;
|
||||
return 1;
|
||||
case GL_NUM_ACTIVE_VARIABLES:
|
||||
*val = RESOURCE_UBO(res)->NumUniforms;
|
||||
*val = 0;
|
||||
for (unsigned i = 0; i < RESOURCE_UBO(res)->NumUniforms; i++) {
|
||||
const char *iname = RESOURCE_UBO(res)->Uniforms[i].IndexName;
|
||||
struct gl_program_resource *uni =
|
||||
_mesa_program_resource_find_name(shProg, GL_UNIFORM, iname);
|
||||
if (!uni)
|
||||
continue;
|
||||
(*val)++;
|
||||
}
|
||||
return 1;
|
||||
case GL_ACTIVE_VARIABLES:
|
||||
for (unsigned i = 0; i < RESOURCE_UBO(res)->NumUniforms; i++) {
|
||||
const char *iname = RESOURCE_UBO(res)->Uniforms[i].IndexName;
|
||||
struct gl_program_resource *uni =
|
||||
_mesa_program_resource_find_name(shProg, GL_UNIFORM, iname);
|
||||
if (!uni)
|
||||
continue;
|
||||
*val++ =
|
||||
_mesa_program_resource_index(shProg, uni);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue