From c010d05d26bbd0f2e39c258631e357d58a5f0c8d Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Tue, 28 Apr 2026 23:31:40 -0700 Subject: [PATCH] renderer_vulkan: Fix multisample `ClearTextureWithRenderpass` Ensure that the multisample framebuffer is used rather than the usual one when using a render pass to clear the textures. That way, a MSAA-render AND resolve is used to clear the textures at the same time. --- src/video_core/renderer_vulkan/vk_texture_runtime.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index f8e267996..d9b2d1ff2 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -425,8 +425,11 @@ void TextureRuntime::ClearTextureWithRenderpass(Surface& surface, .src_image = surface.Image(), }; - scheduler.Record([params, is_color, clear, render_pass, - framebuffer = surface.Framebuffer()](vk::CommandBuffer cmdbuf) { + // Ensure we get the MSAA framebuffer if we are are doing an MSAA texture + const vk::Framebuffer framebuffer = + surface.Framebuffer((surface.GetSampleCount() > 1) ? Type::MultiSampled : Type::Current); + + scheduler.Record([params, is_color, clear, render_pass, framebuffer](vk::CommandBuffer cmdbuf) { const vk::AccessFlags access_flag = is_color ? vk::AccessFlagBits::eColorAttachmentRead | vk::AccessFlagBits::eColorAttachmentWrite