From 18ddd48e705ec0a2ab0e05ead56c0a7c8bf25552 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Thu, 17 Sep 2020 20:02:11 +0200 Subject: [PATCH] radv: Disable DCC explicitly for incompatible copies. If we enable DCC for GENERAL we cannot set the layout to GENERAL to disable DCC, so do it explicitly. Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_meta.h | 1 + src/amd/vulkan/radv_meta_blit2d.c | 4 +++- src/amd/vulkan/radv_meta_bufimage.c | 4 +++- src/amd/vulkan/radv_meta_copy.c | 6 +++--- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/amd/vulkan/radv_meta.h b/src/amd/vulkan/radv_meta.h index 8f22ca9743a..899988767e0 100644 --- a/src/amd/vulkan/radv_meta.h +++ b/src/amd/vulkan/radv_meta.h @@ -147,6 +147,7 @@ struct radv_meta_blit2d_surf { unsigned layer; VkImageAspectFlags aspect_mask; VkImageLayout current_layout; + bool disable_compression; }; struct radv_meta_blit2d_buffer { diff --git a/src/amd/vulkan/radv_meta_blit2d.c b/src/amd/vulkan/radv_meta_blit2d.c index 22d9dd2a28c..6d724bf0bee 100644 --- a/src/amd/vulkan/radv_meta_blit2d.c +++ b/src/amd/vulkan/radv_meta_blit2d.c @@ -310,7 +310,9 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, }, .clearValueCount = 0, .pClearValues = NULL, - }, NULL); + }, &(struct radv_extra_render_pass_begin_info) { + .disable_dcc = dst->disable_compression + }); radv_cmd_buffer_set_subpass(cmd_buffer, &cmd_buffer->state.pass->subpasses[0]); diff --git a/src/amd/vulkan/radv_meta_bufimage.c b/src/amd/vulkan/radv_meta_bufimage.c index 460db0bd016..f3f84eb2e75 100644 --- a/src/amd/vulkan/radv_meta_bufimage.c +++ b/src/amd/vulkan/radv_meta_bufimage.c @@ -1400,7 +1400,9 @@ create_iview(struct radv_cmd_buffer *cmd_buffer, .baseArrayLayer = surf->layer, .layerCount = 1 }, - }, NULL); + }, &(struct radv_image_view_extra_create_info) { + .disable_compression = surf->disable_compression, + }); } static void diff --git a/src/amd/vulkan/radv_meta_copy.c b/src/amd/vulkan/radv_meta_copy.c index e6db78038c4..ddaa395312a 100644 --- a/src/amd/vulkan/radv_meta_copy.c +++ b/src/amd/vulkan/radv_meta_copy.c @@ -197,9 +197,9 @@ copy_buffer_to_image(struct radv_cmd_buffer *cmd_buffer, .baseArrayLayer = region->imageSubresource.baseArrayLayer, .layerCount = region->imageSubresource.layerCount, }); + img_bsurf.disable_compression = true; } img_bsurf.format = vk_format_for_size(vk_format_get_blocksize(img_bsurf.format)); - img_bsurf.current_layout = VK_IMAGE_LAYOUT_GENERAL; } struct radv_meta_blit2d_buffer buf_bsurf = { @@ -364,9 +364,9 @@ copy_image_to_buffer(struct radv_cmd_buffer *cmd_buffer, .baseArrayLayer = region->imageSubresource.baseArrayLayer, .layerCount = region->imageSubresource.layerCount, }); + img_info.disable_compression = true; } img_info.format = vk_format_for_size(vk_format_get_blocksize(img_info.format)); - img_info.current_layout = VK_IMAGE_LAYOUT_GENERAL; } struct radv_meta_blit2d_buffer buf_info = { @@ -526,7 +526,7 @@ copy_image(struct radv_cmd_buffer *cmd_buffer, .layerCount = region->dstSubresource.layerCount, }); b_dst.format = b_src.format; - b_dst.current_layout = VK_IMAGE_LAYOUT_GENERAL; + b_dst.disable_compression = true; }