From 114ac39a888509b133f15ddae813fcf64adc72a7 Mon Sep 17 00:00:00 2001 From: Jose Fonseca Date: Tue, 28 Apr 2015 21:49:36 +0100 Subject: [PATCH] mesa: Fix glGetProgramiv(GL_ACTIVE_ATTRIBUTES). MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/mesa/main/shader_query.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp index a84ec84..d2ca49b 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; } -- 2.7.4