nir: mark XFB varyings as unmoveable to prevent them to be remapped

XFB varyings are considered as always active IO to prevent them to
be removed or compacted. Though, if the NIR linker doesn't mark XFB
varyings as unmoveable it still possible to remap other varyings to
the same location/component.

Fixes KHR-Single-GL46.enhanced_layouts.xfb_override_qualifiers_with_api
with Zink and a bunch of other dEQP XFB tests.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6301
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri  <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16092>
This commit is contained in:
Samuel Pitoiset
2022-04-22 10:13:56 +02:00
committed by Marge Bot
parent 26f74f17d9
commit 4ebb5391ac
2 changed files with 2 additions and 11 deletions

View File

@@ -310,7 +310,8 @@ get_unmoveable_components_masks(nir_shader *shader,
/* If we can pack this varying then don't mark the components as /* If we can pack this varying then don't mark the components as
* used. * used.
*/ */
if (is_packing_supported_for_type(type)) if (is_packing_supported_for_type(type) &&
!var->data.always_active_io)
continue; continue;
unsigned location = var->data.location - VARYING_SLOT_VAR0; unsigned location = var->data.location - VARYING_SLOT_VAR0;

View File

@@ -48,9 +48,6 @@ KHR-GL46.shader_image_load_store.non-layered_binding,Fail
# amd issue #6305 # amd issue #6305
KHR-GL46.shader_ballot_tests.ShaderBallotFunctionRead,Fail KHR-GL46.shader_ballot_tests.ShaderBallotFunctionRead,Fail
# radv issue #6301
KHR-Single-GL46.enhanced_layouts.xfb_override_qualifiers_with_api,Fail
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
@@ -188,13 +185,6 @@ dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1,Fail
dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_2,Fail dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_2,Fail
dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_vertex,Fail dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_vertex,Fail
dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler2dshadow_vertex,Fail dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler2dshadow_vertex,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.6,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.7,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.6,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.points.6,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Fail
# cubes are hard #6270 # cubes are hard #6270
spec@glsl-1.20@execution@tex-miplevel-selection gl2:texture() cube,Fail spec@glsl-1.20@execution@tex-miplevel-selection gl2:texture() cube,Fail