glsl: add stage references for UBO uniforms

Patch marks uniforms inside UBO properly referenced by stages.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90397
This commit is contained in:
Tapani Pälli 2015-05-11 13:24:20 +03:00
parent 845ad2667a
commit 9f4eaba36f

View file

@ -2700,6 +2700,16 @@ build_program_resource_list(struct gl_context *ctx,
uint8_t stageref =
build_stageref(shProg, shProg->UniformStorage[i].name);
/* Add stagereferences for uniforms in a uniform block. */
int block_index = shProg->UniformStorage[i].block_index;
if (block_index != -1) {
for (unsigned j = 0; j < MESA_SHADER_STAGES; j++) {
if (shProg->UniformBlockStageIndex[j][block_index] != -1)
stageref |= (1 << j);
}
}
if (!add_program_resource(shProg, GL_UNIFORM,
&shProg->UniformStorage[i], stageref))
return;