Fix vertex buffer size when switching between inline and state draw parameters (#6101)

* Fix vertex buffer size when switching between inline and state draw parameters

* Format whitespace
This commit is contained in:
gdkchan 2024-01-14 05:37:19 -03:00 committed by GitHub
parent 4e19b36ad7
commit f4b74e9ce1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 11 deletions

View file

@ -103,6 +103,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
/// <param name="argument">Method call argument</param>
public void DrawEnd(ThreedClass engine, int argument)
{
_drawState.DrawUsesEngineState = true;
DrawEnd(
engine,
_state.State.IndexBufferState.First,
@ -205,10 +207,6 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
}
else
{
#pragma warning disable IDE0059 // Remove unnecessary value assignment
var drawState = _state.State.VertexBufferDrawState;
#pragma warning restore IDE0059
DrawImpl(engine, drawVertexCount, 1, 0, drawFirstVertex, firstInstance, indexed: false);
}
@ -379,6 +377,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
bool oldDrawIndexed = _drawState.DrawIndexed;
_drawState.DrawIndexed = true;
_drawState.DrawUsesEngineState = false;
engine.ForceStateDirty(IndexBufferCountMethodOffset * 4);
DrawEnd(engine, firstIndex, indexCount, 0, 0);
@ -424,6 +423,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
bool oldDrawIndexed = _drawState.DrawIndexed;
_drawState.DrawIndexed = false;
_drawState.DrawUsesEngineState = false;
engine.ForceStateDirty(VertexBufferFirstMethodOffset * 4);
DrawEnd(engine, 0, 0, firstVertex, vertexCount);
@ -544,6 +544,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
_state.State.FirstInstance = (uint)firstInstance;
_drawState.DrawIndexed = indexed;
_drawState.DrawUsesEngineState = true;
_currentSpecState.SetHasConstantBufferDrawParameters(true);
engine.UpdateState();
@ -676,6 +677,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
_drawState.DrawIndexed = indexed;
_drawState.DrawIndirect = true;
_drawState.DrawUsesEngineState = true;
_currentSpecState.SetHasConstantBufferDrawParameters(true);
engine.UpdateState();