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 <[email protected]> --- 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 [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
