radv: don't use hw resolves for r16g16 norm formats.
authorDave Airlie <airlied@redhat.com>
Tue, 23 Jan 2018 06:07:50 +0000 (16:07 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 23 Jan 2018 23:01:12 +0000 (09:01 +1000)
radeonsi has a workaround for this, but it uses a R16A16 format,
which vulkan doesn't have, we could probably come up with a work
around but for now just avoid hw resolves.

Fixes:
dEQP-VK.renderpass.suballocation.multisample.r16g16_*norm*

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 bf33dfdfabde920805cf36028769be5a60ef07b4..1973c550050adc275d465fa92f277de4ecd1c1ee 100644 (file)
@@ -353,7 +353,10 @@ static void radv_pick_resolve_method_images(struct radv_image *src_image,
                                                           cmd_buffer->queue_family_index,
                                                           cmd_buffer->queue_family_index);
 
-       if (vk_format_is_int(src_image->vk_format))
+       if (src_image->vk_format == VK_FORMAT_R16G16_UNORM ||
+           src_image->vk_format == VK_FORMAT_R16G16_SNORM)
+               *method = RESOLVE_COMPUTE;
+       else if (vk_format_is_int(src_image->vk_format))
                *method = RESOLVE_COMPUTE;
        
        if (radv_layout_dcc_compressed(dest_image, dest_image_layout, queue_mask)) {