mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
spirv: only consider IO variables when adjusting patch locations for TES
With TES, the primitive ID is an input variable but it's considered a
sysval by SPIRV->NIR. Though, its value is greater than
VARYING_SLOT_VAR0 which means its location was adjusted by mistake.
This fixes compiling a tessellation evaluation shader in debug build
with Enshrouded.
Fixes: dfbc03fa88 ("spirv: Fix locations for per-patch varyings")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27413>
This commit is contained in:
parent
c12300844d
commit
78ea304a06
1 changed files with 3 additions and 1 deletions
|
|
@ -2044,7 +2044,9 @@ adjust_patch_locations(struct vtn_builder *b, struct vtn_variable *var)
|
|||
|
||||
for (uint16_t i = 0; i < num_data; i++) {
|
||||
vtn_assert(data[i].location < VARYING_SLOT_PATCH0);
|
||||
if (data[i].patch && data[i].location >= VARYING_SLOT_VAR0)
|
||||
if (data[i].patch &&
|
||||
(data[i].mode == nir_var_shader_in || data[i].mode == nir_var_shader_out) &&
|
||||
data[i].location >= VARYING_SLOT_VAR0)
|
||||
data[i].location += VARYING_SLOT_PATCH0 - VARYING_SLOT_VAR0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue