aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-07-11 17:20:40 -0300
committerGitHub <noreply@github.com>2021-07-11 17:20:40 -0300
commit40b21cc3c4d2622bbd4f88d43073341854d9a671 (patch)
tree6e9dc6a42e7c0bae5b03db468481771d5a6937ef /Ryujinx.Graphics.Gpu/Engine/MethodClear.cs
parentb5190f16810eb77388c861d1d1773e19644808db (diff)
Separate GPU engines (part 2/2) (#2440)
* 3D engine now uses DeviceState too, plus new state modification tracking * Remove old methods code * Remove GpuState and friends * Optimize DeviceState, force inline some functions * This change was not supposed to go in * Proper channel initialization * Optimize state read/write methods even more * Fix debug build * Do not dirty state if the write is redundant * The YControl register should dirty either the viewport or front face state too, to update the host origin * Avoid redundant vertex buffer updates * Move state and get rid of the Ryujinx.Graphics.Gpu.State namespace * Comments and nits * Fix rebase * PR feedback * Move changed = false to improve codegen * PR feedback * Carry RyuJIT a bit more
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Engine/MethodClear.cs')
-rw-r--r--Ryujinx.Graphics.Gpu/Engine/MethodClear.cs85
1 files changed, 0 insertions, 85 deletions
diff --git a/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs b/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs
deleted file mode 100644
index 5f6316dc..00000000
--- a/Ryujinx.Graphics.Gpu/Engine/MethodClear.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-using Ryujinx.Graphics.GAL;
-using Ryujinx.Graphics.Gpu.State;
-
-namespace Ryujinx.Graphics.Gpu.Engine
-{
- partial class Methods
- {
- /// <summary>
- /// Clears the current color and depth-stencil buffers.
- /// Which buffers should be cleared is also specified on the argument.
- /// </summary>
- /// <param name="state">Current GPU state</param>
- /// <param name="argument">Method call argument</param>
- private void Clear(GpuState state, int argument)
- {
- ConditionalRenderEnabled renderEnable = GetRenderEnable(state);
-
- if (renderEnable == ConditionalRenderEnabled.False)
- {
- return;
- }
-
- // Scissor and rasterizer discard also affect clears.
- if (state.QueryModified(MethodOffset.ScissorState))
- {
- UpdateScissorState(state);
- }
-
- if (state.QueryModified(MethodOffset.RasterizeEnable))
- {
- UpdateRasterizerState(state);
- }
-
- int index = (argument >> 6) & 0xf;
-
- UpdateRenderTargetState(state, useControl: false, singleUse: index);
-
- state.Channel.TextureManager.UpdateRenderTargets();
-
- bool clearDepth = (argument & 1) != 0;
- bool clearStencil = (argument & 2) != 0;
-
- uint componentMask = (uint)((argument >> 2) & 0xf);
-
- if (componentMask != 0)
- {
- var clearColor = state.Get<ClearColors>(MethodOffset.ClearColors);
-
- ColorF color = new ColorF(
- clearColor.Red,
- clearColor.Green,
- clearColor.Blue,
- clearColor.Alpha);
-
- _context.Renderer.Pipeline.ClearRenderTargetColor(index, componentMask, color);
- }
-
- if (clearDepth || clearStencil)
- {
- float depthValue = state.Get<float>(MethodOffset.ClearDepthValue);
- int stencilValue = state.Get<int> (MethodOffset.ClearStencilValue);
-
- int stencilMask = 0;
-
- if (clearStencil)
- {
- stencilMask = state.Get<StencilTestState>(MethodOffset.StencilTestState).FrontMask;
- }
-
- _context.Renderer.Pipeline.ClearRenderTargetDepthStencil(
- depthValue,
- clearDepth,
- stencilValue,
- stencilMask);
- }
-
- UpdateRenderTargetState(state, useControl: true);
-
- if (renderEnable == ConditionalRenderEnabled.Host)
- {
- _context.Renderer.Pipeline.EndHostConditionalRendering();
- }
- }
- }
-} \ No newline at end of file