radv: fix random depth range unrestricted failures due to a cache issue
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 17 Mar 2020 14:32:45 +0000 (15:32 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 18 Mar 2020 11:36:24 +0000 (11:36 +0000)
The shader module name is used to compute the pipeline key. The
driver used to load the wrong pipelines because the shader names
were similar.

This should fix random failures of
dEQP-VK.pipeline.depth_range_unrestricted.*

Fixes: f11ea226664 ("radv: fix a performance regression with graphics depth/stencil clears")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4216>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4216>

src/amd/vulkan/radv_meta_clear.c

index 5ca510dfd626285227367e4c369297c5d55b372d..62c17af7fe9aff62f513f41e6b3a287c12f66e56 100644 (file)
@@ -512,8 +512,12 @@ build_depthstencil_shader(struct nir_shader **out_vs,
        nir_builder_init_simple_shader(&vs_b, NULL, MESA_SHADER_VERTEX, NULL);
        nir_builder_init_simple_shader(&fs_b, NULL, MESA_SHADER_FRAGMENT, NULL);
 
-       vs_b.shader->info.name = ralloc_strdup(vs_b.shader, "meta_clear_depthstencil_vs");
-       fs_b.shader->info.name = ralloc_strdup(fs_b.shader, "meta_clear_depthstencil_fs");
+       vs_b.shader->info.name = ralloc_strdup(vs_b.shader,
+                                              unrestricted ? "meta_clear_depthstencil_unrestricted_vs"
+                                                           : "meta_clear_depthstencil_vs");
+       fs_b.shader->info.name = ralloc_strdup(fs_b.shader,
+                                              unrestricted ? "meta_clear_depthstencil_unrestricted_fs"
+                                                           : "meta_clear_depthstencil_fs");
        const struct glsl_type *position_out_type = glsl_vec4_type();
 
        nir_variable *vs_out_pos =