radv: call radv_nir_lower_ycbcr_textures after first optimizations
authorDaniel Schürmann <daniel@schuermann.dev>
Sun, 26 Jul 2020 11:22:12 +0000 (13:22 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 27 Jul 2020 10:03:20 +0000 (10:03 +0000)
There might still be tex instructions with undef texture/sampler before
the first round of optimizations. No pipelinedb changes.

Fixes: 14a12b771d0a380defacafe5825362af77ff21bd ('spirv: Rework our handling of images and samplers')
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6083>

src/amd/vulkan/radv_shader.c

index a055d867138429d2be53a270b62efb88899a06e7..adc54c0c589fe79ca4bbf343678bdf04077fa14e 100644 (file)
@@ -473,7 +473,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
 
                NIR_PASS_V(nir, nir_lower_system_values);
                NIR_PASS_V(nir, nir_lower_clip_cull_distance_arrays);
-               NIR_PASS_V(nir, radv_nir_lower_ycbcr_textures, layout);
+
                if (device->instance->debug_flags & RADV_DEBUG_DISCARD_TO_DEMOTE)
                        NIR_PASS_V(nir, nir_lower_discard_to_demote);
 
@@ -541,6 +541,10 @@ radv_shader_compile_to_nir(struct radv_device *device,
        if (!(flags & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT))
                radv_optimize_nir(nir, false, true);
 
+       /* call radv_nir_lower_ycbcr_textures() late as there might still be
+        * tex with undef texture/sampler before first optimization */
+       NIR_PASS_V(nir, radv_nir_lower_ycbcr_textures, layout);
+
        /* We call nir_lower_var_copies() after the first radv_optimize_nir()
         * to remove any copies introduced by nir_opt_find_array_copies().
         */