From: Ian Romanick <ian.d.roman...@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.roman...@intel.com> Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Cc: "12.0" <mesa-sta...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev