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/Image/TextureBindingsManager.cs | 2 +- Ryujinx.Graphics.Gpu/Image/TextureCache.cs | 9 ++++++--- Ryujinx.Graphics.Gpu/Image/TextureManager.cs | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'Ryujinx.Graphics.Gpu/Image') diff --git a/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs index b247f99f..96eb6f04 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs @@ -1,5 +1,5 @@ using Ryujinx.Graphics.GAL; -using Ryujinx.Graphics.Gpu.State; +using Ryujinx.Graphics.Gpu.Engine.Types; using Ryujinx.Graphics.Shader; using System; diff --git a/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index 106dc8e8..1b54033c 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -1,8 +1,11 @@ using Ryujinx.Common; using Ryujinx.Graphics.GAL; +using Ryujinx.Graphics.Gpu.Engine.Dma; +using Ryujinx.Graphics.Gpu.Engine.Threed; +using Ryujinx.Graphics.Gpu.Engine.Twod; +using Ryujinx.Graphics.Gpu.Engine.Types; using Ryujinx.Graphics.Gpu.Image; using Ryujinx.Graphics.Gpu.Memory; -using Ryujinx.Graphics.Gpu.State; using Ryujinx.Graphics.Texture; using Ryujinx.Memory.Range; using System; @@ -151,7 +154,7 @@ namespace Ryujinx.Graphics.Gpu.Image /// The texture public Texture FindOrCreateTexture( MemoryManager memoryManager, - CopyTexture copyTexture, + TwodTexture copyTexture, ulong offset, FormatInfo formatInfo, bool preferScaling = true, @@ -762,7 +765,7 @@ namespace Ryujinx.Graphics.Gpu.Image /// A matching texture, or null if there is no match public Texture FindTexture( MemoryManager memoryManager, - CopyBufferTexture tex, + DmaTexture tex, ulong gpuVa, int bpp, int stride, diff --git a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs index fcc67f72..157b7c17 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs @@ -1,5 +1,5 @@ using Ryujinx.Graphics.GAL; -using Ryujinx.Graphics.Gpu.State; +using Ryujinx.Graphics.Gpu.Engine.Types; using System; namespace Ryujinx.Graphics.Gpu.Image -- cgit v1.2.3