Fix draw indexed flag not being cleared for instanced draws, also avoid state updates in the middle of a indexed draw

This commit is contained in:
gdkchan 2019-12-08 18:08:00 -03:00 committed by Thog
parent 23b8a86d35
commit 375ee0ba96

View file

@ -26,13 +26,18 @@ namespace Ryujinx.Graphics.Gpu.Engine
private void DrawEnd(GpuState state, int argument) private void DrawEnd(GpuState state, int argument)
{ {
if (_instancedDrawPending)
{
_drawIndexed = false;
return;
}
UpdateState(state); UpdateState(state);
bool instanced = _vsUsesInstanceId || _isAnyVbInstanced; bool instanced = _vsUsesInstanceId || _isAnyVbInstanced;
if (instanced) if (instanced)
{
if (!_instancedDrawPending)
{ {
_instancedDrawPending = true; _instancedDrawPending = true;
@ -48,7 +53,8 @@ namespace Ryujinx.Graphics.Gpu.Engine
_instancedDrawStateFirst = drawState.First; _instancedDrawStateFirst = drawState.First;
_instancedDrawStateCount = drawState.Count; _instancedDrawStateCount = drawState.Count;
}
_drawIndexed = false;
return; return;
} }