Properly check for 3D

This commit is contained in:
Isaac Marovitz 2024-03-19 22:14:17 -04:00 committed by Isaac Marovitz
parent d58f79ae0f
commit 04ca284e14

View file

@ -175,6 +175,7 @@ namespace Ryujinx.Graphics.Metal
int height = Info.Height; int height = Info.Height;
int depth = Info.Depth; int depth = Info.Depth;
int levels = Info.GetLevelsClamped(); int levels = Info.GetLevelsClamped();
bool is3D = Info.Target == Target.Texture3D;
int offset = 0; int offset = 0;
@ -194,7 +195,7 @@ namespace Ryujinx.Graphics.Metal
(ulong)offset, (ulong)offset,
(ulong)Info.GetMipStride(level), (ulong)Info.GetMipStride(level),
(ulong)mipSize, (ulong)mipSize,
new MTLSize { width = (ulong)width, height = (ulong)height, depth = (ulong)depth }, new MTLSize { width = (ulong)width, height = (ulong)height, depth = is3D ? (ulong)depth : 1 },
MTLTexture, MTLTexture,
0, 0,
(ulong)level, (ulong)level,
@ -205,9 +206,13 @@ namespace Ryujinx.Graphics.Metal
width = Math.Max(1, width >> 1); width = Math.Max(1, width >> 1);
height = Math.Max(1, height >> 1); height = Math.Max(1, height >> 1);
if (is3D)
{
depth = Math.Max(1, depth >> 1); depth = Math.Max(1, depth >> 1);
} }
} }
}
public void SetData(SpanOrArray<byte> data, int layer, int level) public void SetData(SpanOrArray<byte> data, int layer, int level)
{ {