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