Buffer Descriptor Step Functions

This commit is contained in:
Isaac Marovitz 2024-05-28 01:45:59 -04:00 committed by Isaac Marovitz
parent a435d94fae
commit 65149cfe9f

View file

@ -740,13 +740,26 @@ namespace Ryujinx.Graphics.Metal
{ {
var layout = vertexDescriptor.Layouts.Object((ulong)i); var layout = vertexDescriptor.Layouts.Object((ulong)i);
layout.Stride = (indexMask & (1u << i)) != 0 ? (ulong)bufferDescriptors[i].Stride : 0; layout.Stride = (indexMask & (1u << i)) != 0 ? (ulong)bufferDescriptors[i].Stride : 0;
if (bufferDescriptors[i].Divisor > 0)
{
layout.StepFunction = MTLVertexStepFunction.PerInstance;
layout.StepRate = (ulong)bufferDescriptors[i].Divisor;
}
else
{
layout.StepFunction = MTLVertexStepFunction.PerVertex;
layout.StepRate = 1;
}
} }
// Zero buffer // Zero buffer
if ((indexMask & (1u << bufferDescriptors.Length)) != 0) if ((indexMask & (1u << bufferDescriptors.Length)) != 0)
{ {
var layout = vertexDescriptor.Layouts.Object((ulong)bufferDescriptors.Length); var layout = vertexDescriptor.Layouts.Object((ulong)bufferDescriptors.Length);
layout.Stride = ZeroBufferSize; layout.Stride = 1;
layout.StepFunction = MTLVertexStepFunction.Constant;
layout.StepRate = 0;
} }
return vertexDescriptor; return vertexDescriptor;