glsl: Delete bogus ir_set_program_inouts assert.
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. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
parent
86915b495b
commit
4a49851da1
|
@ -260,15 +260,19 @@ ir_set_program_inouts_visitor::try_mark_partial_variable(ir_variable *var,
|
|||
* lowering passes (do_vec_index_to_swizzle() gets rid of indexing into
|
||||
* vectors, and lower_packed_varyings() gets rid of structs that occur in
|
||||
* varyings).
|
||||
*
|
||||
* However, we don't use varying packing in all cases - tessellation
|
||||
* shaders bypass it. This means we'll see varying structs and arrays
|
||||
* of structs here. For now, we just give up so the caller marks the
|
||||
* entire variable as used.
|
||||
*/
|
||||
if (!(type->is_matrix() ||
|
||||
(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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue