From: Jose Fonseca Date: Tue, 28 Apr 2015 20:49:36 +0000 (+0100) Subject: mesa: Fix glGetProgramiv(GL_ACTIVE_ATTRIBUTES). X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=114ac39a888509b133f15ddae813fcf64adc72a7;p=mesa.git mesa: Fix glGetProgramiv(GL_ACTIVE_ATTRIBUTES). It's returning random values, because RESOURCE_VAR() is casting different objects into ir_variable pointers. This updates _mesa_count_active_attribs to filter the resources with the same logic used in _mesa_longest_attribute_name_length. https://bugs.freedesktop.org/show_bug.cgi?id=90207 Reviewed-by: Tapani Pälli --- diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp index a84ec84090d..d2ca49b43a7 100644 --- a/src/mesa/main/shader_query.cpp +++ b/src/mesa/main/shader_query.cpp @@ -302,8 +302,10 @@ _mesa_count_active_attribs(struct gl_shader_program *shProg) struct gl_program_resource *res = shProg->ProgramResourceList; unsigned count = 0; for (unsigned j = 0; j < shProg->NumProgramResourceList; j++, res++) { - if (is_active_attrib(RESOURCE_VAR(res))) - count++; + if (res->Type == GL_PROGRAM_INPUT && + res->StageReferences & (1 << MESA_SHADER_VERTEX) && + is_active_attrib(RESOURCE_VAR(res))) + count++; } return count; }