This assertion is bogus. Varying structs, and arrays of structs, are allowed by GLSL, and we can see them here. While we currently don't have any partial-variable support for those, simply returning false and marking the entire thing as used is certainly legitimate.
I believe this is often swept under the rug by varying packing, but that's disabled in certain tessellation situations. Hit by 20 dEQP-GLES31.functional.tessellation.user_defined_io.* tests. Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> --- src/compiler/glsl/ir_set_program_inouts.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/compiler/glsl/ir_set_program_inouts.cpp b/src/compiler/glsl/ir_set_program_inouts.cpp index 7c61994..aad3a8b 100644 --- a/src/compiler/glsl/ir_set_program_inouts.cpp +++ b/src/compiler/glsl/ir_set_program_inouts.cpp @@ -265,10 +265,9 @@ ir_set_program_inouts_visitor::try_mark_partial_variable(ir_variable *var, (type->is_array() && (type->fields.array->is_numeric() || type->fields.array->is_boolean())))) { - assert(!"Unexpected indexing in ir_set_program_inouts"); - /* For safety in release builds, in case we ever encounter unexpected - * indexing, give up and let the caller mark the whole variable as used. + /* If we don't know how to handle this case, give up and let the + * caller mark the whole variable as used. */ return false; } -- 2.9.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev