On 10/26/2015 12:11 PM, Timothy Arceri wrote:
On Mon, 2015-10-26 at 11:22 +0200, Tapani Pälli wrote:
Patch adds additional check to make sure we don't return locations
for
structures or arrays of structures.

 From page 79 of the OpenGL 4.2 spec:
     "A valid name cannot be a structure, an array of structures, or
any
     portion of a single vector or a matrix."

No Piglit or CTS regressions observed.

Signed-off-by: Tapani Pälli <tapani.pa...@intel.com>
---
  src/mesa/main/shader_query.cpp | 10 ++++++++++
  1 file changed, 10 insertions(+)

diff --git a/src/mesa/main/shader_query.cpp
b/src/mesa/main/shader_query.cpp
index 8182d3d..b0707a4 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -808,6 +808,16 @@ program_resource_location(struct
gl_shader_program *shProg,
        if (RESOURCE_UNI(res)->builtin)
           return -1;

+     /* From page 79 of the OpenGL 4.2 spec:
+      *
+      *     "A valid name cannot be a structure, an array of
structures, or any
+      *     portion of a single vector or a matrix."
+      */
+      if (RESOURCE_UNI(res)->type->is_record() ||
+          (RESOURCE_UNI(res)->type->is_array() &&
+           RESOURCE_UNI(res)->type->fields.array->is_record()))
+         return -1;
+

This could just be RESOURCE_UNI(res)->type->without_array()
->is_record() then it would also work for arrays of arrays.

True, this is simpler way to say the same thing, I'll change this.


        /* From the GL_ARB_uniform_buffer_object spec:
         *
         *     "The value -1 will be returned if <name> does not
correspond to an
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to