mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-24 11:26:02 +00:00
Handle stride 0 on regular buffers
This commit is contained in:
parent
65149cfe9f
commit
131ab75d55
1 changed files with 23 additions and 6 deletions
|
@ -739,8 +739,19 @@ namespace Ryujinx.Graphics.Metal
|
||||||
for (int i = 0; i < bufferDescriptors.Length; i++)
|
for (int i = 0; i < bufferDescriptors.Length; i++)
|
||||||
{
|
{
|
||||||
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;
|
|
||||||
|
|
||||||
|
if ((indexMask & (1u << i)) != 0)
|
||||||
|
{
|
||||||
|
layout.Stride = (ulong)bufferDescriptors[i].Stride;
|
||||||
|
|
||||||
|
if (layout.Stride == 0)
|
||||||
|
{
|
||||||
|
layout.Stride = 1;
|
||||||
|
layout.StepFunction = MTLVertexStepFunction.Constant;
|
||||||
|
layout.StepRate = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (bufferDescriptors[i].Divisor > 0)
|
if (bufferDescriptors[i].Divisor > 0)
|
||||||
{
|
{
|
||||||
layout.StepFunction = MTLVertexStepFunction.PerInstance;
|
layout.StepFunction = MTLVertexStepFunction.PerInstance;
|
||||||
|
@ -752,6 +763,12 @@ namespace Ryujinx.Graphics.Metal
|
||||||
layout.StepRate = 1;
|
layout.StepRate = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layout.Stride = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Zero buffer
|
// Zero buffer
|
||||||
if ((indexMask & (1u << bufferDescriptors.Length)) != 0)
|
if ((indexMask & (1u << bufferDescriptors.Length)) != 0)
|
||||||
|
|
Loading…
Reference in a new issue