mesa: Do not list inactive block members as active
Fixes gles3conform failures in: ES3-CTS.shaders.uniform_block.single_nested_struct.per_block_buffer_packed ES3-CTS.shaders.uniform_block.single_nested_struct_array.per_block_buffer_packed ES3-CTS.shaders.uniform_block.random.scalar_types.7 ES3-CTS.shaders.uniform_block.random.basic_arrays.4 ES3-CTS.shaders.uniform_block.random.basic_arrays.6 ES3-CTS.shaders.uniform_block.random.basic_instance_arrays.2 ES3-CTS.shaders.uniform_block.random.nested_structs.9 ES3-CTS.shaders.uniform_block.random.all_shared_buffer.3 Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
@@ -1089,18 +1089,38 @@ _mesa_GetActiveUniformBlockiv(GLuint program,
|
||||
params[0] = strlen(block->Name) + 1;
|
||||
return;
|
||||
|
||||
case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:
|
||||
params[0] = block->NumUniforms;
|
||||
return;
|
||||
case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: {
|
||||
unsigned count = 0;
|
||||
|
||||
case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:
|
||||
for (i = 0; i < block->NumUniforms; i++) {
|
||||
unsigned offset;
|
||||
params[i] = _mesa_get_uniform_location(ctx, shProg,
|
||||
block->Uniforms[i].IndexName,
|
||||
&offset);
|
||||
const int idx =
|
||||
_mesa_get_uniform_location(ctx, shProg,
|
||||
block->Uniforms[i].IndexName,
|
||||
&offset);
|
||||
if (idx != -1)
|
||||
count++;
|
||||
}
|
||||
|
||||
params[0] = count;
|
||||
return;
|
||||
}
|
||||
|
||||
case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: {
|
||||
unsigned count = 0;
|
||||
|
||||
for (i = 0; i < block->NumUniforms; i++) {
|
||||
unsigned offset;
|
||||
const int idx =
|
||||
_mesa_get_uniform_location(ctx, shProg,
|
||||
block->Uniforms[i].IndexName,
|
||||
&offset);
|
||||
|
||||
if (idx != -1)
|
||||
params[count++] = idx;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
|
||||
params[0] = shProg->UniformBlockStageIndex[MESA_SHADER_VERTEX][uniformBlockIndex] != -1;
|
||||
|
||||
Reference in New Issue
Block a user