From 808e22984f303789a520a1838efd236069159057 Mon Sep 17 00:00:00 2001
From: Liam <byteslice@airmail.cc>
Date: Sun, 30 Oct 2022 15:04:16 -0400
Subject: [PATCH] vk_blit_screen: recreate swapchain images on guest format
 change

---
 src/video_core/renderer_vulkan/vk_blit_screen.cpp | 6 +++++-
 src/video_core/renderer_vulkan/vk_blit_screen.h   | 5 +++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp
index cb7fa20784..89426121fd 100644
--- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp
+++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp
@@ -480,11 +480,15 @@ void BlitScreen::RefreshResources(const Tegra::FramebufferConfig& framebuffer) {
         fsr.reset();
     }
 
-    if (framebuffer.width == raw_width && framebuffer.height == raw_height && !raw_images.empty()) {
+    if (framebuffer.width == raw_width && framebuffer.height == raw_height &&
+        framebuffer.pixel_format == pixel_format && !raw_images.empty()) {
         return;
     }
+
     raw_width = framebuffer.width;
     raw_height = framebuffer.height;
+    pixel_format = framebuffer.pixel_format;
+
     ReleaseRawImages();
 
     CreateStagingBuffer(framebuffer);
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.h b/src/video_core/renderer_vulkan/vk_blit_screen.h
index 29e2ea925e..a2b73ec546 100644
--- a/src/video_core/renderer_vulkan/vk_blit_screen.h
+++ b/src/video_core/renderer_vulkan/vk_blit_screen.h
@@ -28,6 +28,10 @@ namespace VideoCore {
 class RasterizerInterface;
 }
 
+namespace Service::android {
+enum class PixelFormat : u32;
+}
+
 namespace Vulkan {
 
 struct ScreenInfo;
@@ -156,6 +160,7 @@ private:
 
     u32 raw_width = 0;
     u32 raw_height = 0;
+    Service::android::PixelFormat pixel_format{};
 
     std::unique_ptr<FSR> fsr;
 };