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 committed by Isaac Marovitz
parent b43ff78ba1
commit 691b0de6e1

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) 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); 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(); var textureType = Info.Target.Convert();
NSRange levels; NSRange levels;
levels.location = (ulong)firstLevel; levels.location = (ulong)firstLevel;