diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs
index 82aff2049f..a060c6c961 100644
--- a/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs
+++ b/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs
@@ -312,6 +312,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
bool oldDrawIndexed = _drawState.DrawIndexed;
_drawState.DrawIndexed = true;
+ engine.ForceStateDirty(IndexBufferCountMethodOffset * 4);
DrawEnd(engine, firstIndex, indexCount);
diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
index 52637c20fb..5478704acb 100644
--- a/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
+++ b/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
@@ -143,6 +143,15 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
_stateUpdater.SetAllDirty();
}
+ ///
+ /// Marks the specified register offset as dirty, forcing the associated state to update on the next draw.
+ ///
+ /// Register offset
+ public void ForceStateDirty(int offset)
+ {
+ _stateUpdater.SetDirty(offset);
+ }
+
///
/// Forces the shaders to be rebound on the next draw.
///