radv: don't use hw resolve for integer image formats
authorDave Airlie <airlied@redhat.com>
Tue, 23 Jan 2018 04:57:12 +0000 (14:57 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 23 Jan 2018 22:53:18 +0000 (08:53 +1000)
From reading AMDVLK it currently never uses hw resolve paths.

This patch takes from radeonsi which doesn't use hw resolve
for integer formats, and does the same for radv.

This fixes:
dEQP-VK.renderpass.suballocation.multisample*uint tests.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fixes: 2a04f5481d (radv/meta: select resolve paths)
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_meta_resolve.c

index 855bf98203967e7d77272c1028204a7b317a91df..bf33dfdfabde920805cf36028769be5a60ef07b4 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "radv_meta.h"
 #include "radv_private.h"
+#include "vk_format.h"
 #include "nir/nir_builder.h"
 #include "sid.h"
 
@@ -351,6 +352,10 @@ static void radv_pick_resolve_method_images(struct radv_image *src_image,
        uint32_t queue_mask = radv_image_queue_family_mask(dest_image,
                                                           cmd_buffer->queue_family_index,
                                                           cmd_buffer->queue_family_index);
+
+       if (vk_format_is_int(src_image->vk_format))
+               *method = RESOLVE_COMPUTE;
+       
        if (radv_layout_dcc_compressed(dest_image, dest_image_layout, queue_mask)) {
                *method = RESOLVE_FRAGMENT;
        } else if (dest_image->surface.micro_tile_mode != src_image->surface.micro_tile_mode) {