tu: Stop setting view_index_is_input

glslang apparently emits ViewID as a signed integer. If other passes
generate a sysval then lower_sysvals_to_varyings() tries to create an
variable with unsigned type and asserts when the preexisting varying's
type doesn't match the type it expects. Just make ViewID a sysval and
lower it in lower_sysvals_to_varyings() to avoid this and simplify the
SPIR-V parser.

Fixes: 5bbbf5cf9b ("tu: Set use_layer_id_sysval for nir_lower_input_attachments")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38793>
This commit is contained in:
Connor Abbott 2025-12-02 17:18:50 -05:00 committed by Marge Bot
parent e14f8ee0e4
commit 4cfa188db6
2 changed files with 1 additions and 11 deletions

View file

@ -204,16 +204,10 @@ tu_spirv_to_nir(struct tu_device *dev,
const nir_shader_compiler_options *nir_options =
ir3_get_compiler_options(dev->compiler);
spirv_to_nir_options spirv_options = tu_spirv_options;
/* ViewID is a sysval in geometry stages and an input in the FS */
spirv_options.view_index_is_input =
stage == MESA_SHADER_FRAGMENT &&
!key->lower_view_index_to_device_index;
nir_shader *nir;
VkResult result =
vk_pipeline_shader_stage_to_nir(&dev->vk, pipeline_flags, stage_info,
&spirv_options, nir_options,
&tu_spirv_options, nir_options,
mem_ctx, &nir);
if (result != VK_SUCCESS)
return NULL;

View file

@ -189,10 +189,6 @@ spec@glsl-1.50@execution@geometry@point-size-out,Fail
spec@glsl-1.50@execution@geometry@primitive-id-restart gl_line_strip_adjacency other,Fail
spec@glsl-1.50@execution@redeclare-pervertex-out-subset-gs,Fail
spec@glsl-1.50@execution@variable-indexing@gs-output-array-vec4-index-wr,Fail
spec@ovr_multiview2@triangle_compare_frag_index_uniform,Fail
spec@ovr_multiview2@triangle_compare_frag_index_uniform_base2,Fail
spec@ovr_multiview2@triangle_compare_frag_vary_color,Fail
spec@ovr_multiview2@triangle_compare_frag_vary_color_base2,Fail
spec@glsl-3.30@built-in constants,Fail
spec@glsl-3.30@built-in constants@gl_MaxFragmentInputComponents,Fail