[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