radv: use the resolve compute path if dest uses multiple layers
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 21 Sep 2018 09:36:17 +0000 (11:36 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 21 Sep 2018 14:35:59 +0000 (16:35 +0200)
The hardware path doesn't support resolving layers, for both
source and destination images.

This fixes a reflection issue when MSAA is enabled which
affects GTA V and probably DIRT3.

CC: <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107786
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Tested-by: Gregor Münch <gr.muench_at_gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_meta_resolve.c

index 309c7a5..7ce36b1 100644 (file)
@@ -346,7 +346,8 @@ static void radv_pick_resolve_method_images(struct radv_image *src_image,
                *method = RESOLVE_COMPUTE;
        else if (vk_format_is_int(src_image->vk_format))
                *method = RESOLVE_COMPUTE;
-       else if (src_image->info.array_size > 1)
+       else if (src_image->info.array_size > 1 ||
+                dest_image->info.array_size > 1)
                *method = RESOLVE_COMPUTE;
        
        if (radv_layout_dcc_compressed(dest_image, dest_image_layout, queue_mask)) {