Mesa (master): mesa: Array uniform name length includes length of [0]

Ian Romanick idr at kemper.freedesktop.org
Sat Jan 19 01:36:39 UTC 2013


Module: Mesa
Branch: master
Commit: f59a3a0fe2c6ae7d2e29da7b6185039ba0a03079
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f59a3a0fe2c6ae7d2e29da7b6185039ba0a03079

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Dec 14 19:00:32 2012 -0800

mesa: Array uniform name length includes length of [0]

This is required by OpenGL ES 3.0 and desktop OpenGL 4.2.  Previous
version were ambiguous.  This also matches the behavior of NVIDIA's
closed-source driver (version 304.64).

Fixed gles3conformance test uniform_buffer_object_getactiveuniformsiv
and uniform_buffer_object_structure_and_array_element_names (on my
in-progress branch that fixes a bunch of other stuff...YMMV).

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/main/uniform_query.cpp |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
index ec08ed4..f0ab0f0 100644
--- a/src/mesa/main/uniform_query.cpp
+++ b/src/mesa/main/uniform_query.cpp
@@ -122,6 +122,16 @@ _mesa_GetActiveUniformsiv(GLuint program,
 
       case GL_UNIFORM_NAME_LENGTH:
 	 params[i] = strlen(uni->name) + 1;
+
+         /* Page 61 (page 73 of the PDF) in section 2.11 of the OpenGL ES 3.0
+          * spec says:
+          *
+          *     "If the active uniform is an array, the uniform name returned
+          *     in name will always be the name of the uniform array appended
+          *     with "[0]"."
+          */
+         if (uni->array_elements != 0)
+            params[i] += 3;
 	 break;
 
       case GL_UNIFORM_BLOCK_INDEX:




More information about the mesa-commit mailing list