From a5c212516cc4ca73807e03ab7c40e469ecabd061 Mon Sep 17 00:00:00 2001
From: Fernando Sahmkow <fsahmkow27@gmail.com>
Date: Sat, 4 Dec 2021 10:20:28 +0100
Subject: [PATCH] Texture Cache: Fix crashes on NVIDIA.

---
 src/video_core/texture_cache/texture_cache.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 565b99254..e195b1e98 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -1122,7 +1122,7 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
             break;
         }
         if (can_be_depth_blit) {
-            const ImageBase* const dst_image = src_id ? &slot_images[src_id] : nullptr;
+            const ImageBase* const dst_image = dst_id ? &slot_images[dst_id] : nullptr;
             DeduceBlitImages(dst_info, src_info, dst_image, src_image);
             if (GetFormatType(dst_info.format) != GetFormatType(src_info.format)) {
                 continue;
@@ -1135,8 +1135,11 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
             dst_id = InsertImage(dst_info, dst_addr, RelaxedOptions{});
         }
     } while (has_deleted_images);
-    if (GetFormatType(dst_info.format) != SurfaceType::ColorTexture) {
-        // Make sure the images are depth and/or stencil textures.
+    const ImageBase& src_image = slot_images[src_id];
+    const ImageBase& dst_image = slot_images[dst_id];
+    if (GetFormatType(dst_info.format) != GetFormatType(dst_image.info.format) ||
+        GetFormatType(src_info.format) != GetFormatType(src_image.info.format)) {
+        // Make sure the images match the expected format.
         do {
             has_deleted_images = false;
             src_id = FindOrInsertImage(src_info, src_addr, RelaxedOptions{});