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@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user