diff options
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 9f05a7a18..6ab68892c 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -305,14 +305,19 @@ void RasterizerVulkan::Clear() {              }          } -        scheduler.Record([color_attachment, clear_value, clear_rect](vk::CommandBuffer cmdbuf) { -            const VkClearAttachment attachment{ -                .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, -                .colorAttachment = color_attachment, -                .clearValue = clear_value, -            }; -            cmdbuf.ClearAttachments(attachment, clear_rect); -        }); +        if (regs.clear_surface.R && regs.clear_surface.G && regs.clear_surface.B && +            regs.clear_surface.A) { +            scheduler.Record([color_attachment, clear_value, clear_rect](vk::CommandBuffer cmdbuf) { +                const VkClearAttachment attachment{ +                    .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, +                    .colorAttachment = color_attachment, +                    .clearValue = clear_value, +                }; +                cmdbuf.ClearAttachments(attachment, clear_rect); +            }); +        } else { +            UNIMPLEMENTED_MSG("Unimplemented Clear only the specified channel"); +        }      }      if (!use_depth && !use_stencil) { | 
