From 8f034e05f1fdab00b00a6f1136ef5cb10ef81853 Mon Sep 17 00:00:00 2001 From: PabloMK7 Date: Sat, 24 Jan 2026 16:03:38 +0100 Subject: [PATCH] Make individual image views per res scale --- src/video_core/renderer_vulkan/vk_texture_runtime.cpp | 10 ++++++---- src/video_core/renderer_vulkan/vk_texture_runtime.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index bcefa0023..9c23d6e4a 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -1323,8 +1323,10 @@ vk::ImageView Surface::ImageView(u32 index) const noexcept { } vk::ImageView Surface::FramebufferView() noexcept { - if (framebuffer_view) { - return framebuffer_view.get(); + const u32 index = res_scale == 1 ? 0u : 1u; + + if (framebuffer_view[index]) { + return framebuffer_view[index].get(); } is_framebuffer = true; @@ -1341,8 +1343,8 @@ vk::ImageView Surface::FramebufferView() noexcept { .layerCount = 1, }, }; - framebuffer_view = instance->GetDevice().createImageViewUnique(view_info); - return framebuffer_view.get(); + framebuffer_view[index] = instance->GetDevice().createImageViewUnique(view_info); + return framebuffer_view[index].get(); } vk::ImageView Surface::DepthView() noexcept { diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.h b/src/video_core/renderer_vulkan/vk_texture_runtime.h index 0fbb3eaff..880a597d1 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.h +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.h @@ -204,7 +204,7 @@ public: vk::UniqueImageView depth_view; vk::UniqueImageView stencil_view; vk::UniqueImageView storage_view; - vk::UniqueImageView framebuffer_view; + std::array framebuffer_view{}; bool is_framebuffer{}; bool is_storage{}; };