aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2021-07-15 16:52:51 +0200
committerGitHub <noreply@github.com>2021-07-15 16:52:51 +0200
commit96703b82bc37ad923bcc76741ded7b0942bcc02d (patch)
tree41f1d1174e263baf5116f2c737617fcc0405e93b
parentda4ca4f2f94d2d685584b124106c3b344faee6e7 (diff)
parente0978931e87c127eae061322cdb489042ed6cfde (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.cpp6
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,