From e6c314f7d2ed99714376fec6b7509a55535fa3ff Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 21 Nov 2011 20:47:57 -0800 Subject: [PATCH] mesa: Allow generic attributes for glGetActiveAttrib and GL_ACTIVE_ATTRIBUTES Page 77 (page 91 of the PDF) says about glGetActiveAttrib: "The returned attribute name can be the name of a generic attribute or a conventional attribute (which begin with the prefix "gl_", see the OpenGL Shading Language specification for a complete list)." Page 261 (page 275 of the PDF) says about glGetProgramiv: "If pname is ACTIVE_ATTRIBUTES, the number of active attributes in program is returned." It doesn't say anything about built-in vs. user-defined attributes. From the language around glGetActiveAttrib and the lack of an exclusion of built-in attributes, which exists other places (e.g., around glBindAttribLocation), we can infer that GL_ACTIVE_ATTRIBUTES should include the active attribute count. It should also be included in the values returned by glGetActiveAttrib. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43138 Signed-off-by: Ian Romanick Reviewed-by: Eric Anholt Tested-by: Yi Sun --- src/mesa/main/shader_query.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp index 38bacdb747b..8ab18126c9e 100644 --- a/src/mesa/main/shader_query.cpp +++ b/src/mesa/main/shader_query.cpp @@ -107,8 +107,7 @@ _mesa_GetActiveAttribARB(GLhandleARB program, GLuint desired_index, if (var == NULL || var->mode != ir_var_in - || var->location == -1 - || var->location < VERT_ATTRIB_GENERIC0) + || var->location == -1) continue; if (current_index == desired_index) { @@ -199,8 +198,7 @@ _mesa_count_active_attribs(struct gl_shader_program *shProg) if (var == NULL || var->mode != ir_var_in - || var->location == -1 - || var->location < VERT_ATTRIB_GENERIC0) + || var->location == -1) continue; i++; @@ -226,8 +224,7 @@ _mesa_longest_attribute_name_length(struct gl_shader_program *shProg) if (var == NULL || var->mode != ir_var_in - || var->location == -1 - || var->location < VERT_ATTRIB_GENERIC0) + || var->location == -1) continue; const size_t len = strlen(var->name);