فهرست منبع

Fix incorrect depth texture 3D flag (#7262)

gdkchan 1 سال پیش
والد
کامیت
fdd7ee791c
2فایلهای تغییر یافته به همراه10 افزوده شده و 6 حذف شده
  1. 7 1
      src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs
  2. 3 5
      src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs

+ 7 - 1
src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs

@@ -415,7 +415,13 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
 #pragma warning disable CS0649 // Field is never assigned to
         public int Width;
         public int Height;
-        public int Depth;
+        public ushort Depth;
+        public ushort Flags;
+
+        public readonly bool UnpackIsLayered()
+        {
+            return (Flags & 1) == 0;
+        }
 #pragma warning restore CS0649
     }
 

+ 3 - 5
src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs

@@ -468,13 +468,11 @@ namespace Ryujinx.Graphics.Gpu.Image
             int gobBlocksInY = dsState.MemoryLayout.UnpackGobBlocksInY();
             int gobBlocksInZ = dsState.MemoryLayout.UnpackGobBlocksInZ();
 
+            layered &= size.UnpackIsLayered();
+
             Target target;
 
-            if (dsState.MemoryLayout.UnpackIsTarget3D())
-            {
-                target = Target.Texture3D;
-            }
-            else if ((samplesInX | samplesInY) != 1)
+            if ((samplesInX | samplesInY) != 1)
             {
                 target = size.Depth > 1 && layered
                     ? Target.Texture2DMultisampleArray