[Mesa-dev] [PATCH 13/18] mesa: Fix add_index_to_name logic
Kenneth Graunke
kenneth at whitecape.org
Mon Aug 1 17:29:40 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>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
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 0eae39a..e806f38 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -697,20 +697,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.9.2
More information about the mesa-dev
mailing list