Get render command encoder after finalising buffers

Fixes crash in Fire Emblem: Houses
This commit is contained in:
Isaac Marovitz 2024-08-05 13:18:00 +01:00 committed by Isaac Marovitz
parent 080af8db24
commit 01f41b8b0e

View file

@ -315,8 +315,6 @@ namespace Ryujinx.Graphics.Metal
return; return;
} }
var renderCommandEncoder = GetOrCreateRenderEncoder(true);
if (TopologyUnsupported(_encoderStateManager.Topology)) if (TopologyUnsupported(_encoderStateManager.Topology))
{ {
var pattern = GetIndexBufferPattern(); var pattern = GetIndexBufferPattern();
@ -326,6 +324,7 @@ namespace Ryujinx.Graphics.Metal
var mtlBuffer = buffer.Get(Cbs, 0, indexCount * sizeof(int)).Value; var mtlBuffer = buffer.Get(Cbs, 0, indexCount * sizeof(int)).Value;
var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert();
var renderCommandEncoder = GetOrCreateRenderEncoder(true);
renderCommandEncoder.DrawIndexedPrimitives( renderCommandEncoder.DrawIndexedPrimitives(
primitiveType, primitiveType,
@ -337,6 +336,7 @@ namespace Ryujinx.Graphics.Metal
else else
{ {
var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert();
var renderCommandEncoder = GetOrCreateRenderEncoder(true);
renderCommandEncoder.DrawPrimitives( renderCommandEncoder.DrawPrimitives(
primitiveType, primitiveType,
@ -449,8 +449,6 @@ namespace Ryujinx.Graphics.Metal
public void DrawIndirect(BufferRange indirectBuffer) public void DrawIndirect(BufferRange indirectBuffer)
{ {
var renderCommandEncoder = GetOrCreateRenderEncoder(true);
if (TopologyUnsupported(_encoderStateManager.Topology)) if (TopologyUnsupported(_encoderStateManager.Topology))
{ {
// TODO: Reindex unsupported topologies // TODO: Reindex unsupported topologies
@ -462,6 +460,7 @@ namespace Ryujinx.Graphics.Metal
.Get(Cbs, indirectBuffer.Offset, indirectBuffer.Size).Value; .Get(Cbs, indirectBuffer.Offset, indirectBuffer.Size).Value;
var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert();
var renderCommandEncoder = GetOrCreateRenderEncoder(true);
renderCommandEncoder.DrawPrimitives( renderCommandEncoder.DrawPrimitives(
primitiveType, primitiveType,