Merge pull request #6635 from ameerj/intel-vk-sm3dw

vk_rasterizer: Only clear valid color attachments
This commit is contained in:
Fernando S 2021-07-15 16:52:51 +02:00 committed by GitHub
commit 96703b82bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -357,11 +357,13 @@ void RasterizerVulkan::Clear() {
.height = std::min(clear_rect.rect.extent.height, render_area.height), .height = std::min(clear_rect.rect.extent.height, render_area.height),
}; };
if (use_color) { const u32 color_attachment = regs.clear_buffers.RT;
const auto attachment_aspect_mask = framebuffer->ImageRanges()[color_attachment].aspectMask;
const bool is_color_rt = (attachment_aspect_mask & VK_IMAGE_ASPECT_COLOR_BIT) != 0;
if (use_color && is_color_rt) {
VkClearValue clear_value; VkClearValue clear_value;
std::memcpy(clear_value.color.float32, regs.clear_color, sizeof(regs.clear_color)); std::memcpy(clear_value.color.float32, regs.clear_color, sizeof(regs.clear_color));
const u32 color_attachment = regs.clear_buffers.RT;
scheduler.Record([color_attachment, clear_value, clear_rect](vk::CommandBuffer cmdbuf) { scheduler.Record([color_attachment, clear_value, clear_rect](vk::CommandBuffer cmdbuf) {
const VkClearAttachment attachment{ const VkClearAttachment attachment{
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,