diff options
author | Fernando S <fsahmkow27@gmail.com> | 2021-07-15 16:52:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-15 16:52:51 +0200 |
commit | 96703b82bc37ad923bcc76741ded7b0942bcc02d (patch) | |
tree | 41f1d1174e263baf5116f2c737617fcc0405e93b | |
parent | da4ca4f2f94d2d685584b124106c3b344faee6e7 (diff) | |
parent | e0978931e87c127eae061322cdb489042ed6cfde (diff) |
Merge pull request #6635 from ameerj/intel-vk-sm3dw
vk_rasterizer: Only clear valid color attachments
-rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index e378a56794..a8ffbe6ba7 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -357,11 +357,13 @@ void RasterizerVulkan::Clear() { .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; 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) { const VkClearAttachment attachment{ .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, |