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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7004>
This commit is contained in:
Bas Nieuwenhuizen 2020-09-17 20:02:11 +02:00 committed by Marge Bot
parent f23eaf0db6
commit 18ddd48e70
4 changed files with 10 additions and 5 deletions

View file

@ -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 {

View file

@ -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]);

View file

@ -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

View file

@ -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;
}