From 61b1ce252f11e8f8e31080faee60d0a9d99cb67f Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Fri, 10 Feb 2023 11:47:59 -0300
Subject: Allow partially mapped textures with unmapped start (#4394)

---
 Ryujinx.Graphics.Gpu/Image/TextureCache.cs | 7 +++++++
 1 file changed, 7 insertions(+)

(limited to 'Ryujinx.Graphics.Gpu/Image/TextureCache.cs')

diff --git a/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/Ryujinx.Graphics.Gpu/Image/TextureCache.cs
index 27bec786..f18de607 100644
--- a/Ryujinx.Graphics.Gpu/Image/TextureCache.cs
+++ b/Ryujinx.Graphics.Gpu/Image/TextureCache.cs
@@ -474,6 +474,13 @@ namespace Ryujinx.Graphics.Gpu.Image
             {
                 address = memoryManager.Translate(info.GpuAddress);
 
+                // If the start address is unmapped, let's try to find a page of memory that is mapped.
+                if (address == MemoryManager.PteUnmapped)
+                {
+                    address = memoryManager.TranslateFirstMapped(info.GpuAddress, (ulong)info.CalculateSizeInfo(layerSize).TotalSize);
+                }
+
+                // If address is still invalid, the texture is fully unmapped, so it has no data, just return null.
                 if (address == MemoryManager.PteUnmapped)
                 {
                     return null;
-- 
cgit v1.2.3-70-g09d2