From 40b21cc3c4d2622bbd4f88d43073341854d9a671 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Sun, 11 Jul 2021 17:20:40 -0300 Subject: 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 --- Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs | 6 +++--- Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs | 13 +------------ Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs (limited to 'Ryujinx.Graphics.Gpu/Engine/Twod') diff --git a/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs b/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs index d4f6d879..3c74c164 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs @@ -1,7 +1,7 @@ using Ryujinx.Graphics.Device; using Ryujinx.Graphics.GAL; +using Ryujinx.Graphics.Gpu.Engine.Types; using Ryujinx.Graphics.Gpu.Image; -using Ryujinx.Graphics.Gpu.State; using Ryujinx.Graphics.Texture; using System; using System.Collections.Generic; @@ -52,8 +52,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Twod { var memoryManager = _channel.MemoryManager; - var dstCopyTexture = Unsafe.As(ref _state.State.SetDstFormat); - var srcCopyTexture = Unsafe.As(ref _state.State.SetSrcFormat); + var dstCopyTexture = Unsafe.As(ref _state.State.SetDstFormat); + var srcCopyTexture = Unsafe.As(ref _state.State.SetSrcFormat); long srcX = ((long)_state.State.SetPixelsFromMemorySrcX0Int << 32) | (long)(ulong)_state.State.SetPixelsFromMemorySrcX0Frac; long srcY = ((long)_state.State.PixelsFromMemorySrcY0Int << 32) | (long)(ulong)_state.State.SetPixelsFromMemorySrcY0Frac; diff --git a/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs b/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs index fdc4204d..46fddb04 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs @@ -13,17 +13,6 @@ namespace Ryujinx.Graphics.Gpu.Engine.Twod WriteThenAwaken = 1, } - /// - /// MME shadow RAM control mode. - /// - enum SetMmeShadowRamControlMode - { - MethodTrack = 0, - MethodTrackWithFilter = 1, - MethodPassthrough = 2, - MethodReplay = 3, - } - /// /// Format of the destination texture. /// @@ -506,7 +495,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Twod /// /// 2D class state. /// - unsafe struct TwodClassState + unsafe struct TwodClassState : IShadowState { #pragma warning disable CS0649 public uint SetObject; diff --git a/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs b/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs new file mode 100644 index 00000000..c28da094 --- /dev/null +++ b/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs @@ -0,0 +1,22 @@ +using Ryujinx.Graphics.Gpu.Engine.Types; + +namespace Ryujinx.Graphics.Gpu.Engine.Twod +{ + /// + /// Texture to texture (with optional resizing) copy parameters. + /// + struct TwodTexture + { +#pragma warning disable CS0649 + public ColorFormat Format; + public Boolean32 LinearLayout; + public MemoryLayout MemoryLayout; + public int Depth; + public int Layer; + public int Stride; + public int Width; + public int Height; + public GpuVa Address; +#pragma warning restore CS0649 + } +} -- cgit v1.2.3