Просмотр исходного кода

Implement Z24S8 TextureFormat (#247)

* add Z24S8 TextureFormat

* return correct PixelFormat & PixelType

* return correct texture size

* return correct Bytes Per Pixel

* Correct PixelType
greggameplayer 7 лет назад
Родитель
Сommit
0a13900bc9

+ 1 - 0
Ryujinx.Graphics/Gal/GalTextureFormat.cs

@@ -19,6 +19,7 @@ namespace Ryujinx.Graphics.Gal
         BC3          = 0x26,
         BC4          = 0x27,
         BC5          = 0x28,
+        Z24S8        = 0x29,
         ZF32         = 0x2f,
         Astc2D4x4    = 0x40,
         Astc2D5x5    = 0x41,

+ 1 - 0
Ryujinx.Graphics/Gal/OpenGL/OGLEnumConverter.cs

@@ -139,6 +139,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
                 case GalTextureFormat.R16:          return (PixelFormat.Red,            PixelType.HalfFloat);
                 case GalTextureFormat.R8:           return (PixelFormat.Red,            PixelType.UnsignedByte);
                 case GalTextureFormat.ZF32:         return (PixelFormat.DepthComponent, PixelType.Float);
+                case GalTextureFormat.Z24S8:        return (PixelFormat.DepthStencil,   PixelType.UnsignedInt248);
             }
 
             throw new NotImplementedException(Format.ToString());

+ 1 - 0
Ryujinx.HLE/Gpu/Texture/TextureHelper.cs

@@ -37,6 +37,7 @@ namespace Ryujinx.HLE.Gpu.Texture
                 case GalTextureFormat.A8B8G8R8:
                 case GalTextureFormat.R32:
                 case GalTextureFormat.ZF32:
+                case GalTextureFormat.Z24S8:
                     return Texture.Width * Texture.Height * 4;
 
                 case GalTextureFormat.A1B5G5R5:

+ 2 - 1
Ryujinx.HLE/Gpu/Texture/TextureReader.cs

@@ -14,6 +14,7 @@ namespace Ryujinx.HLE.Gpu.Texture
                 case GalTextureFormat.R16G16B16A16: return Read8Bpp                  (Memory, Texture);
                 case GalTextureFormat.A8B8G8R8:     return Read4Bpp                  (Memory, Texture);
                 case GalTextureFormat.R32:          return Read4Bpp                  (Memory, Texture);
+                case GalTextureFormat.Z24S8:        return Read4Bpp                  (Memory, Texture);
                 case GalTextureFormat.A1B5G5R5:     return Read5551                  (Memory, Texture);
                 case GalTextureFormat.B5G6R5:       return Read565                   (Memory, Texture);
                 case GalTextureFormat.G8R8:         return Read2Bpp                  (Memory, Texture);
@@ -42,7 +43,7 @@ namespace Ryujinx.HLE.Gpu.Texture
                 case GalTextureFormat.Astc2D8x5:    return Read16BptCompressedTexture(Memory, Texture, 8, 5);
                 case GalTextureFormat.Astc2D10x5:   return Read16BptCompressedTexture(Memory, Texture, 10, 5);
                 case GalTextureFormat.Astc2D10x6:   return Read16BptCompressedTexture(Memory, Texture, 10, 6);
-            }
+             }
 
             throw new NotImplementedException(Texture.Format.ToString());
         }