summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/shader_query.cpp
diff options
context:
space:
mode:
authorTapani Pälli <tapani.palli@intel.com>2015-10-26 11:13:14 +0200
committerTapani Pälli <tapani.palli@intel.com>2015-10-26 12:52:17 +0200
commit8ae4317c3643f1728f99172812df6df2d30456bb (patch)
tree0c3972566af451fe03a1d9d2d89804d81c3a4a14 /src/mesa/main/shader_query.cpp
parenta305d59baa4ad9f8ebbe74b53f022e8ff6636c29 (diff)
downloadexternal_mesa3d-8ae4317c3643f1728f99172812df6df2d30456bb.zip
external_mesa3d-8ae4317c3643f1728f99172812df6df2d30456bb.tar.gz
external_mesa3d-8ae4317c3643f1728f99172812df6df2d30456bb.tar.bz2
mesa: add additional checks for uniform location query
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." v2: use without-array() to simplify code (Timothy) No Piglit or CTS regressions observed. Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Diffstat (limited to 'src/mesa/main/shader_query.cpp')
-rw-r--r--src/mesa/main/shader_query.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
index 8182d3d..84cbfbc 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -808,6 +808,14 @@ 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->without_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