From 8cba252b238ee6cf6599ad2fc57793e6f76c5e2e Mon Sep 17 00:00:00 2001 From: gdk Date: Sat, 26 Oct 2019 14:50:52 -0300 Subject: Add per-source type memory change tracking, simplified state change tracking, other fixes --- Ryujinx.Graphics.Gpu/Engine/MethodClear.cs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'Ryujinx.Graphics.Gpu/Engine/MethodClear.cs') diff --git a/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs b/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs index 2072f3fc..b50a1766 100644 --- a/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs +++ b/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs @@ -7,7 +7,9 @@ namespace Ryujinx.Graphics.Gpu.Engine { private void Clear(int argument) { - UpdateState(); + UpdateRenderTargetStateIfNeeded(); + + _textureManager.CommitGraphicsBindings(); bool clearDepth = (argument & 1) != 0; bool clearStencil = (argument & 2) != 0; @@ -18,7 +20,7 @@ namespace Ryujinx.Graphics.Gpu.Engine if (componentMask != 0) { - ClearColors clearColor = _context.State.GetClearColors(); + var clearColor = _context.State.Get(MethodOffset.ClearColors); ColorF color = new ColorF( clearColor.Red, @@ -26,22 +28,19 @@ namespace Ryujinx.Graphics.Gpu.Engine clearColor.Blue, clearColor.Alpha); - _context.Renderer.Pipeline.ClearRenderTargetColor( - index, - componentMask, - color); + _context.Renderer.Pipeline.ClearRenderTargetColor(index, componentMask, color); } if (clearDepth || clearStencil) { - float depthValue = _context.State.GetClearDepthValue(); - int stencilValue = _context.State.GetClearStencilValue(); + float depthValue = _context.State.Get(MethodOffset.ClearDepthValue); + int stencilValue = _context.State.Get (MethodOffset.ClearStencilValue); int stencilMask = 0; if (clearStencil) { - stencilMask = _context.State.GetStencilTestState().FrontMask; + stencilMask = _context.State.Get(MethodOffset.StencilTestState).FrontMask; } _context.Renderer.Pipeline.ClearRenderTargetDepthStencil( -- cgit v1.2.3