mesa: refactor GetActiveUniform
Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
This commit is contained in:
@@ -46,6 +46,7 @@ _mesa_GetActiveUniform(GLuint program, GLuint index,
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct gl_shader_program *shProg;
|
||||
struct gl_program_resource *res;
|
||||
|
||||
if (maxLength < 0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(maxLength < 0)");
|
||||
@@ -56,27 +57,25 @@ _mesa_GetActiveUniform(GLuint program, GLuint index,
|
||||
if (!shProg)
|
||||
return;
|
||||
|
||||
if (index >= shProg->NumUserUniformStorage) {
|
||||
res = _mesa_program_resource_find_index((struct gl_shader_program *) shProg,
|
||||
GL_UNIFORM, index);
|
||||
|
||||
if (!res) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(index)");
|
||||
return;
|
||||
}
|
||||
|
||||
const struct gl_uniform_storage *const uni = &shProg->UniformStorage[index];
|
||||
|
||||
if (nameOut) {
|
||||
_mesa_get_uniform_name(uni, maxLength, length, nameOut);
|
||||
}
|
||||
|
||||
if (size) {
|
||||
/* array_elements is zero for non-arrays, but the API requires that 1 be
|
||||
* returned.
|
||||
*/
|
||||
*size = MAX2(1, uni->array_elements);
|
||||
}
|
||||
|
||||
if (type) {
|
||||
*type = uni->type->gl_type;
|
||||
}
|
||||
if (nameOut)
|
||||
_mesa_get_program_resource_name(shProg, GL_UNIFORM, index, maxLength,
|
||||
length, nameOut, "glGetActiveUniform");
|
||||
if (type)
|
||||
_mesa_program_resource_prop((struct gl_shader_program *) shProg,
|
||||
res, index, GL_TYPE, (GLint*) type,
|
||||
"glGetActiveUniform");
|
||||
if (size)
|
||||
_mesa_program_resource_prop((struct gl_shader_program *) shProg,
|
||||
res, index, GL_ARRAY_SIZE, (GLint*) size,
|
||||
"glGetActiveUniform");
|
||||
}
|
||||
|
||||
static GLenum
|
||||
|
||||
Reference in New Issue
Block a user