mirror of
https://github.com/GreemDev/Ryujinx.git
synced 2024-11-24 10:10:12 +01:00
Stencil Fixes
This commit is contained in:
parent
1b86360a61
commit
0a6f11d247
@ -141,9 +141,7 @@ namespace Ryujinx.Graphics.Metal
|
||||
depthAttachment.LoadAction = MTLLoadAction.Load;
|
||||
depthAttachment.StoreAction = MTLStoreAction.Store;
|
||||
|
||||
var unpackedFormat = FormatTable.PackedStencilToXFormat(_currentState.DepthStencil.MTLTexture.PixelFormat);
|
||||
var stencilView = _currentState.DepthStencil.MTLTexture.NewTextureView(unpackedFormat);
|
||||
stencilAttachment.Texture = stencilView;
|
||||
stencilAttachment.Texture = _currentState.DepthStencil.MTLTexture;
|
||||
stencilAttachment.LoadAction = MTLLoadAction.Load;
|
||||
stencilAttachment.StoreAction = MTLStoreAction.Store;
|
||||
break;
|
||||
|
@ -171,29 +171,16 @@ namespace Ryujinx.Graphics.Metal
|
||||
{
|
||||
var mtlFormat = _table[(int)format];
|
||||
|
||||
if (mtlFormat == MTLPixelFormat.Depth24UnormStencil8 || mtlFormat == MTLPixelFormat.Depth32FloatStencil8)
|
||||
if (mtlFormat == MTLPixelFormat.Depth24UnormStencil8)
|
||||
{
|
||||
if (!MTLDevice.CreateSystemDefaultDevice().Depth24Stencil8PixelFormatSupported)
|
||||
{
|
||||
mtlFormat = MTLPixelFormat.Depth32Float;
|
||||
Logger.Error?.PrintMsg(LogClass.Gpu, "Application requested Depth24Stencil8, which is unsupported on this device!");
|
||||
mtlFormat = MTLPixelFormat.Depth32FloatStencil8;
|
||||
}
|
||||
}
|
||||
|
||||
return mtlFormat;
|
||||
}
|
||||
|
||||
public static MTLPixelFormat PackedStencilToXFormat(MTLPixelFormat format)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case MTLPixelFormat.Depth24UnormStencil8:
|
||||
return MTLPixelFormat.X24Stencil8;
|
||||
case MTLPixelFormat.Depth32FloatStencil8:
|
||||
return MTLPixelFormat.X32Stencil8;
|
||||
default:
|
||||
Logger.Warning?.PrintMsg(LogClass.Gpu, $"Attempted to get stencil format for non packed format {format}!");
|
||||
return MTLPixelFormat.Invalid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user