[Mesa-dev] [PATCH 3/5] mesa: Fix add_index_to_name logic

Ian Romanick idr at freedesktop.org
Tue May 31 18:52:55 UTC 2016


From: Ian Romanick <ian.d.romanick at intel.com>

Our piglit tests for geometry and tessellation shader inputs were
incorrect.  Array shader inputs and output should have '[0]' on the end
regardless of stage.  In addtion, transform feedback varyings should not.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Cc: "12.0" <mesa-stable at lists.freedesktop.org>
---
 src/mesa/main/shader_query.cpp | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
index eec933c..f4b7243 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -696,20 +696,17 @@ _mesa_program_resource_find_index(struct gl_shader_program *shProg,
 static bool
 add_index_to_name(struct gl_program_resource *res)
 {
-   bool add_index = !((res->Type == GL_PROGRAM_INPUT &&
-                       res->StageReferences & (1 << MESA_SHADER_GEOMETRY |
-                                               1 << MESA_SHADER_TESS_CTRL |
-                                               1 << MESA_SHADER_TESS_EVAL)) ||
-                      (res->Type == GL_PROGRAM_OUTPUT &&
-                       res->StageReferences & 1 << MESA_SHADER_TESS_CTRL));
-
-   /* Transform feedback varyings have array index already appended
-    * in their names.
-    */
-   if (res->Type == GL_TRANSFORM_FEEDBACK_VARYING)
-      add_index = false;
+   if (res->Type != GL_PROGRAM_INPUT && res->Type != GL_PROGRAM_OUTPUT)
+      return res->Type != GL_TRANSFORM_FEEDBACK_VARYING;
+
+   const gl_shader_variable *const var = RESOURCE_VAR(res);
 
-   return add_index;
+   assert(var->type->is_array());
+
+   if (var->interface_type != NULL && var->interface_type->is_array())
+      return var->type->fields.array->is_array();
+
+   return true;
 }
 
 /* Get name length of a program resource. This consists of
-- 
2.5.5



More information about the mesa-dev mailing list