main: fix length of values written to glGetProgramResourceiv() for ACTIVE_VARIABLES

Return the number of values written.

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
This commit is contained in:
Samuel Iglesias Gonsalvez
2015-10-05 13:14:26 +02:00
parent d0992fa15a
commit 3da58730ee

View File

@@ -1190,7 +1190,8 @@ get_buffer_property(struct gl_shader_program *shProg,
(*val)++; (*val)++;
} }
return 1; return 1;
case GL_ACTIVE_VARIABLES: case GL_ACTIVE_VARIABLES: {
unsigned num_values = 0;
for (unsigned i = 0; i < RESOURCE_UBO(res)->NumUniforms; i++) { for (unsigned i = 0; i < RESOURCE_UBO(res)->NumUniforms; i++) {
const char *iname = RESOURCE_UBO(res)->Uniforms[i].IndexName; const char *iname = RESOURCE_UBO(res)->Uniforms[i].IndexName;
struct gl_program_resource *uni = struct gl_program_resource *uni =
@@ -1200,8 +1201,10 @@ get_buffer_property(struct gl_shader_program *shProg,
continue; continue;
*val++ = *val++ =
_mesa_program_resource_index(shProg, uni); _mesa_program_resource_index(shProg, uni);
num_values++;
} }
return RESOURCE_UBO(res)->NumUniforms; return num_values;
}
} }
} else if (res->Type == GL_SHADER_STORAGE_BLOCK) { } else if (res->Type == GL_SHADER_STORAGE_BLOCK) {
switch (prop) { switch (prop) {
@@ -1223,7 +1226,8 @@ get_buffer_property(struct gl_shader_program *shProg,
(*val)++; (*val)++;
} }
return 1; return 1;
case GL_ACTIVE_VARIABLES: case GL_ACTIVE_VARIABLES: {
unsigned num_values = 0;
for (unsigned i = 0; i < RESOURCE_UBO(res)->NumUniforms; i++) { for (unsigned i = 0; i < RESOURCE_UBO(res)->NumUniforms; i++) {
const char *iname = RESOURCE_UBO(res)->Uniforms[i].IndexName; const char *iname = RESOURCE_UBO(res)->Uniforms[i].IndexName;
struct gl_program_resource *uni = struct gl_program_resource *uni =
@@ -1233,8 +1237,10 @@ get_buffer_property(struct gl_shader_program *shProg,
continue; continue;
*val++ = *val++ =
_mesa_program_resource_index(shProg, uni); _mesa_program_resource_index(shProg, uni);
num_values++;
} }
return RESOURCE_UBO(res)->NumUniforms; return num_values;
}
} }
} else if (res->Type == GL_ATOMIC_COUNTER_BUFFER) { } else if (res->Type == GL_ATOMIC_COUNTER_BUFFER) {
switch (prop) { switch (prop) {