Properly create stencil views of combined formats

Fixes Link’s Awakening
This commit is contained in:
Isaac Marovitz 2024-09-05 20:42:53 +02:00
parent f5cb7e0f67
commit c14d8cf2ee
No known key found for this signature in database
GPG Key ID: 97250B2B09A132E1
1 changed files with 11 additions and 0 deletions

View File

@ -59,6 +59,17 @@ namespace Ryujinx.Graphics.Metal
public Texture(MTLDevice device, MetalRenderer renderer, Pipeline pipeline, TextureCreateInfo info, MTLTexture sourceTexture, int firstLayer, int firstLevel) : base(device, renderer, pipeline, info)
{
var pixelFormat = FormatTable.GetFormat(Info.Format);
if (info.DepthStencilMode == DepthStencilMode.Stencil)
{
pixelFormat = pixelFormat switch
{
MTLPixelFormat.Depth32FloatStencil8 => MTLPixelFormat.X32Stencil8,
MTLPixelFormat.Depth24UnormStencil8 => MTLPixelFormat.X24Stencil8,
_ => pixelFormat
};
}
var textureType = Info.Target.Convert();
NSRange levels;
levels.location = (ulong)firstLevel;