mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 05:58:05 +02:00
ir3/nir: Lower indirect references of compact variables
Fixes Sascha Willems "tessellation" demo on Turnip (it contains
indirect dereference of tessellation levels).
Fixes: 643f2cb ("ir3, tu: Cleanup indirect i/o lowering")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11781>
This commit is contained in:
parent
57f54bb9cc
commit
d53984ce97
1 changed files with 12 additions and 0 deletions
|
|
@ -332,6 +332,18 @@ ir3_nir_lower_io_to_temporaries(nir_shader *s)
|
|||
NIR_PASS_V(s, nir_lower_var_copies);
|
||||
NIR_PASS_V(s, nir_lower_global_vars_to_local);
|
||||
}
|
||||
|
||||
/* Regardless of the above, we need to lower indirect references to
|
||||
* compact variables such as clip/cull distances because due to how
|
||||
* TCS<->TES IO works we cannot handle indirect accesses that "straddle"
|
||||
* vec4 components. nir_lower_indirect_derefs has a special case for
|
||||
* compact variables, so it will actually lower them even though we pass
|
||||
* in 0 modes.
|
||||
*
|
||||
* Using temporaries would be slightly better but
|
||||
* nir_lower_io_to_temporaries currently doesn't support TCS i/o.
|
||||
*/
|
||||
NIR_PASS_V(s, nir_lower_indirect_derefs, 0, UINT32_MAX);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue