From b8eb6abeccbd4a468214a4d2ad3a9b6e5e06973c Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 5 May 2020 22:02:28 -0300 Subject: Refactor shader GPU state and memory access (#1203) * Refactor shader GPU state and memory access * Fix NVDEC project build * Address PR feedback and add missing XML comments --- .../Translation/ShaderConfig.cs | 58 +++------------------- 1 file changed, 6 insertions(+), 52 deletions(-) (limited to 'Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs') diff --git a/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs b/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs index 3035ebf6..9e8329de 100644 --- a/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs +++ b/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs @@ -18,11 +18,11 @@ namespace Ryujinx.Graphics.Shader.Translation public bool OmapSampleMask { get; } public bool OmapDepth { get; } - public TranslationFlags Flags { get; } + public IGpuAccessor GpuAccessor { get; } - private TranslatorCallbacks _callbacks; + public TranslationFlags Flags { get; } - public ShaderConfig(TranslationFlags flags, TranslatorCallbacks callbacks) + public ShaderConfig(IGpuAccessor gpuAccessor, TranslationFlags flags) { Stage = ShaderStage.Compute; OutputTopology = OutputTopology.PointList; @@ -32,11 +32,11 @@ namespace Ryujinx.Graphics.Shader.Translation OmapTargets = null; OmapSampleMask = false; OmapDepth = false; + GpuAccessor = gpuAccessor; Flags = flags; - _callbacks = callbacks; } - public ShaderConfig(ShaderHeader header, TranslationFlags flags, TranslatorCallbacks callbacks) + public ShaderConfig(ShaderHeader header, IGpuAccessor gpuAccessor, TranslationFlags flags) { Stage = header.Stage; OutputTopology = header.OutputTopology; @@ -46,8 +46,8 @@ namespace Ryujinx.Graphics.Shader.Translation OmapTargets = header.OmapTargets; OmapSampleMask = header.OmapSampleMask; OmapDepth = header.OmapDepth; + GpuAccessor = gpuAccessor; Flags = flags; - _callbacks = callbacks; } public int GetDepthRegister() @@ -68,51 +68,5 @@ namespace Ryujinx.Graphics.Shader.Translation // The depth register is always two registers after the last color output. return count + 1; } - - public bool QueryInfoBool(QueryInfoName info, int index = 0) - { - return Convert.ToBoolean(QueryInfo(info, index)); - } - - public int QueryInfo(QueryInfoName info, int index = 0) - { - if (_callbacks.QueryInfo != null) - { - return _callbacks.QueryInfo(info, index); - } - else - { - switch (info) - { - case QueryInfoName.ComputeLocalSizeX: - case QueryInfoName.ComputeLocalSizeY: - case QueryInfoName.ComputeLocalSizeZ: - return 1; - case QueryInfoName.ComputeLocalMemorySize: - return 0x1000; - case QueryInfoName.ComputeSharedMemorySize: - return 0xc000; - case QueryInfoName.IsTextureBuffer: - return Convert.ToInt32(false); - case QueryInfoName.IsTextureRectangle: - return Convert.ToInt32(false); - case QueryInfoName.PrimitiveTopology: - return (int)InputTopology.Points; - case QueryInfoName.StorageBufferOffsetAlignment: - return 16; - case QueryInfoName.SupportsNonConstantTextureOffset: - return Convert.ToInt32(true); - case QueryInfoName.TextureFormat: - return (int)TextureFormat.R8G8B8A8Unorm; - } - } - - return 0; - } - - public void PrintLog(string message) - { - _callbacks.PrintLog?.Invoke(message); - } } } \ No newline at end of file -- cgit v1.2.3