mesa: refactor GetActiveUniform
authorTapani Pälli <tapani.palli@intel.com>
Thu, 12 Mar 2015 10:55:18 +0000 (12:55 +0200)
committerTapani Pälli <tapani.palli@intel.com>
Thu, 16 Apr 2015 04:55:57 +0000 (07:55 +0300)
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
src/mesa/main/uniform_query.cpp

index 9611667b72df39d17860e7fab1f9b5701afc2f04..4e77b32846c9203429058f49c1f8f444cfe58ad6 100644 (file)
@@ -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