nir: mark XFB varyings as unmoveable to prevent them to be remapped
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 22 Apr 2022 08:13:56 +0000 (10:13 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 25 Apr 2022 07:56:27 +0000 (07:56 +0000)
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>

src/compiler/nir/nir_linking_helpers.c
src/gallium/drivers/zink/ci/zink-radv-fails.txt

index b0ddb36..1d056fc 100644 (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
           * used.
           */
-         if (is_packing_supported_for_type(type))
+         if (is_packing_supported_for_type(type) &&
+             !var->data.always_active_io)
             continue;
 
          unsigned location = var->data.location - VARYING_SLOT_VAR0;
index 40d12da..e1a4099 100644 (file)
@@ -48,9 +48,6 @@ KHR-GL46.shader_image_load_store.non-layered_binding,Fail
 # amd issue #6305
 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
@@ -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.texture_functions.textureprojlodoffset.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
 spec@glsl-1.20@execution@tex-miplevel-selection gl2:texture() cube,Fail