From 7fea26e97e74e7ec0a5fa27921aa40c31b2c1dd9 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Sat, 21 Jan 2023 21:07:43 -0300 Subject: [PATCH] Remove use of reflection on GAL multithreading (#4287) * Introduce new IGALCommand interface and use it * Remove use of reflection on GAL multithreading * Unmanaged constraint --- .../Multithreading/CommandHelper.cs | 292 ++++++------------ .../Multithreading/Commands/BarrierCommand.cs | 2 +- .../Commands/BeginTransformFeedbackCommand.cs | 2 +- .../Commands/Buffer/BufferDisposeCommand.cs | 2 +- .../Commands/Buffer/BufferGetDataCommand.cs | 2 +- .../Commands/Buffer/BufferSetDataCommand.cs | 2 +- .../Commands/ClearBufferCommand.cs | 2 +- .../Commands/ClearRenderTargetColorCommand.cs | 2 +- .../ClearRenderTargetDepthStencilCommand.cs | 2 +- .../Commands/CommandBufferBarrierCommand.cs | 2 +- .../Commands/CopyBufferCommand.cs | 2 +- .../CounterEventDisposeCommand.cs | 2 +- .../CounterEvent/CounterEventFlushCommand.cs | 2 +- .../Commands/DispatchComputeCommand.cs | 2 +- .../Multithreading/Commands/DrawCommand.cs | 2 +- .../Commands/DrawIndexedCommand.cs | 2 +- .../Commands/DrawIndexedIndirectCommand.cs | 2 +- .../DrawIndexedIndirectCountCommand.cs | 2 +- .../Commands/DrawIndirectCommand.cs | 2 +- .../Commands/DrawIndirectCountCommand.cs | 2 +- .../Commands/DrawTextureCommand.cs | 2 +- .../EndHostConditionalRenderingCommand.cs | 4 +- .../Commands/EndTransformFeedbackCommand.cs | 2 +- .../Multithreading/Commands/IGALCommand.cs | 5 + .../Program/ProgramCheckLinkCommand.cs | 2 +- .../Commands/Program/ProgramDisposeCommand.cs | 2 +- .../Program/ProgramGetBinaryCommand.cs | 2 +- .../Commands/Renderer/ActionCommand.cs | 2 +- .../Commands/Renderer/CreateBufferCommand.cs | 2 +- .../Commands/Renderer/CreateProgramCommand.cs | 2 +- .../Commands/Renderer/CreateSamplerCommand.cs | 2 +- .../Commands/Renderer/CreateSyncCommand.cs | 2 +- .../Commands/Renderer/CreateTextureCommand.cs | 2 +- .../Renderer/GetCapabilitiesCommand.cs | 2 +- .../Commands/Renderer/PreFrameCommand.cs | 2 +- .../Commands/Renderer/ReportCounterCommand.cs | 2 +- .../Commands/Renderer/ResetCounterCommand.cs | 2 +- .../Renderer/UpdateCountersCommand.cs | 2 +- .../Commands/Sampler/SamplerDisposeCommand.cs | 2 +- .../Commands/SetAlphaTestCommand.cs | 2 +- .../Commands/SetBlendStateCommand.cs | 2 +- .../Commands/SetDepthBiasCommand.cs | 2 +- .../Commands/SetDepthClampCommand.cs | 2 +- .../Commands/SetDepthModeCommand.cs | 2 +- .../Commands/SetDepthTestCommand.cs | 2 +- .../Commands/SetFaceCullingCommand.cs | 2 +- .../Commands/SetFrontFaceCommand.cs | 2 +- .../Commands/SetImageCommand.cs | 2 +- .../Commands/SetIndexBufferCommand.cs | 2 +- .../Commands/SetLineParametersCommand.cs | 2 +- .../Commands/SetLogicOpStateCommand.cs | 2 +- .../Commands/SetMultisampleStateCommand.cs | 2 +- .../Commands/SetPatchParametersCommand.cs | 2 +- .../Commands/SetPointParametersCommand.cs | 2 +- .../Commands/SetPolygonModeCommand.cs | 2 +- .../Commands/SetPrimitiveRestartCommand.cs | 2 +- .../Commands/SetPrimitiveTopologyCommand.cs | 2 +- .../Commands/SetProgramCommand.cs | 2 +- .../Commands/SetRasterizerDiscardCommand.cs | 2 +- .../SetRenderTargetColorMasksCommand.cs | 2 +- .../Commands/SetRenderTargetScaleCommand.cs | 2 +- .../Commands/SetRenderTargetsCommand.cs | 2 +- .../Commands/SetScissorsCommand.cs | 2 +- .../Commands/SetStencilTestCommand.cs | 2 +- .../Commands/SetStorageBuffersCommand.cs | 2 +- .../Commands/SetTextureAndSamplerCommand.cs | 2 +- .../SetTransformFeedbackBuffersCommand.cs | 2 +- .../Commands/SetUniformBuffersCommand.cs | 2 +- .../Commands/SetUserClipDistanceCommand.cs | 2 +- .../Commands/SetVertexAttribsCommand.cs | 2 +- .../Commands/SetVertexBuffersCommand.cs | 2 +- .../Commands/SetViewportsCommand.cs | 2 +- .../Commands/Texture/TextureCopyToCommand.cs | 2 +- .../Texture/TextureCopyToScaledCommand.cs | 2 +- .../Texture/TextureCopyToSliceCommand.cs | 2 +- .../Texture/TextureCreateViewCommand.cs | 2 +- .../Commands/Texture/TextureGetDataCommand.cs | 2 +- .../Texture/TextureGetDataSliceCommand.cs | 2 +- .../Commands/Texture/TextureReleaseCommand.cs | 2 +- .../Commands/Texture/TextureSetDataCommand.cs | 2 +- .../Texture/TextureSetDataSliceCommand.cs | 2 +- .../TextureSetDataSliceRegionCommand.cs | 2 +- .../Texture/TextureSetStorageCommand.cs | 2 +- .../Commands/TextureBarrierCommand.cs | 2 +- .../Commands/TextureBarrierTiledCommand.cs | 2 +- .../TryHostConditionalRenderingCommand.cs | 2 +- ...TryHostConditionalRenderingFlushCommand.cs | 2 +- .../Commands/UpdateRenderScaleCommand.cs | 2 +- .../Commands/Window/WindowPresentCommand.cs | 2 +- 89 files changed, 192 insertions(+), 281 deletions(-) diff --git a/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs b/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs index 497693296c..48873491fb 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs @@ -7,9 +7,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler; using Ryujinx.Graphics.GAL.Multithreading.Commands.Texture; using Ryujinx.Graphics.GAL.Multithreading.Commands.Window; using System; -using System.Collections.Generic; using System.Linq; -using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -30,207 +28,115 @@ namespace Ryujinx.Graphics.GAL.Multithreading public static int GetMaxCommandSize() { - Assembly assembly = typeof(CommandHelper).Assembly; - - IEnumerable commands = assembly.GetTypes().Where(type => typeof(IGALCommand).IsAssignableFrom(type) && type.IsValueType); - - int maxSize = commands.Max(command => - { - MethodInfo method = typeof(Unsafe).GetMethod(nameof(Unsafe.SizeOf)); - MethodInfo generic = method.MakeGenericMethod(command); - int size = (int)generic.Invoke(null, null); - - return size; - }); - - InitLookup(); - - return maxSize + 1; // 1 byte reserved for command size. + return InitLookup() + 1; // 1 byte reserved for command size. } - private static void InitLookup() + private static int InitLookup() { - _lookup[(int)CommandType.Action] = (memory, threaded, renderer) => - ActionCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CreateBuffer] = (memory, threaded, renderer) => - CreateBufferCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CreateProgram] = (memory, threaded, renderer) => - CreateProgramCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CreateSampler] = (memory, threaded, renderer) => - CreateSamplerCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CreateSync] = (memory, threaded, renderer) => - CreateSyncCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CreateTexture] = (memory, threaded, renderer) => - CreateTextureCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.GetCapabilities] = (memory, threaded, renderer) => - GetCapabilitiesCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.PreFrame] = (memory, threaded, renderer) => - PreFrameCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ReportCounter] = (memory, threaded, renderer) => - ReportCounterCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ResetCounter] = (memory, threaded, renderer) => - ResetCounterCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.UpdateCounters] = (memory, threaded, renderer) => - UpdateCountersCommand.Run(ref GetCommand(memory), threaded, renderer); + int maxCommandSize = 0; - _lookup[(int)CommandType.BufferDispose] = (memory, threaded, renderer) => - BufferDisposeCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.BufferGetData] = (memory, threaded, renderer) => - BufferGetDataCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.BufferSetData] = (memory, threaded, renderer) => - BufferSetDataCommand.Run(ref GetCommand(memory), threaded, renderer); + void Register(CommandType commandType) where T : unmanaged, IGALCommand, IGALCommand + { + maxCommandSize = Math.Max(maxCommandSize, Unsafe.SizeOf()); + _lookup[(int)commandType] = (memory, threaded, renderer) => T.Run(ref GetCommand(memory), threaded, renderer); + } - _lookup[(int)CommandType.CounterEventDispose] = (memory, threaded, renderer) => - CounterEventDisposeCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CounterEventFlush] = (memory, threaded, renderer) => - CounterEventFlushCommand.Run(ref GetCommand(memory), threaded, renderer); + Register(CommandType.Action); + Register(CommandType.CreateBuffer); + Register(CommandType.CreateProgram); + Register(CommandType.CreateSampler); + Register(CommandType.CreateSync); + Register(CommandType.CreateTexture); + Register(CommandType.GetCapabilities); + Register(CommandType.PreFrame); + Register(CommandType.ReportCounter); + Register(CommandType.ResetCounter); + Register(CommandType.UpdateCounters); - _lookup[(int)CommandType.ProgramDispose] = (memory, threaded, renderer) => - ProgramDisposeCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ProgramGetBinary] = (memory, threaded, renderer) => - ProgramGetBinaryCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ProgramCheckLink] = (memory, threaded, renderer) => - ProgramCheckLinkCommand.Run(ref GetCommand(memory), threaded, renderer); + Register(CommandType.BufferDispose); + Register(CommandType.BufferGetData); + Register(CommandType.BufferSetData); - _lookup[(int)CommandType.SamplerDispose] = (memory, threaded, renderer) => - SamplerDisposeCommand.Run(ref GetCommand(memory), threaded, renderer); + Register(CommandType.CounterEventDispose); + Register(CommandType.CounterEventFlush); - _lookup[(int)CommandType.TextureCopyTo] = (memory, threaded, renderer) => - TextureCopyToCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureCopyToScaled] = (memory, threaded, renderer) => - TextureCopyToScaledCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureCopyToSlice] = (memory, threaded, renderer) => - TextureCopyToSliceCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureCreateView] = (memory, threaded, renderer) => - TextureCreateViewCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureGetData] = (memory, threaded, renderer) => - TextureGetDataCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureGetDataSlice] = (memory, threaded, renderer) => - TextureGetDataSliceCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureRelease] = (memory, threaded, renderer) => - TextureReleaseCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureSetData] = (memory, threaded, renderer) => - TextureSetDataCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureSetDataSlice] = (memory, threaded, renderer) => - TextureSetDataSliceCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureSetDataSliceRegion] = (memory, threaded, renderer) => - TextureSetDataSliceRegionCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureSetStorage] = (memory, threaded, renderer) => - TextureSetStorageCommand.Run(ref GetCommand(memory), threaded, renderer); + Register(CommandType.ProgramDispose); + Register(CommandType.ProgramGetBinary); + Register(CommandType.ProgramCheckLink); - _lookup[(int)CommandType.WindowPresent] = (memory, threaded, renderer) => - WindowPresentCommand.Run(ref GetCommand(memory), threaded, renderer); + Register(CommandType.SamplerDispose); - _lookup[(int)CommandType.Barrier] = (memory, threaded, renderer) => - BarrierCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.BeginTransformFeedback] = (memory, threaded, renderer) => - BeginTransformFeedbackCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ClearBuffer] = (memory, threaded, renderer) => - ClearBufferCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ClearRenderTargetColor] = (memory, threaded, renderer) => - ClearRenderTargetColorCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.ClearRenderTargetDepthStencil] = (memory, threaded, renderer) => - ClearRenderTargetDepthStencilCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CommandBufferBarrier] = (memory, threaded, renderer) => - CommandBufferBarrierCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.CopyBuffer] = (memory, threaded, renderer) => - CopyBufferCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DispatchCompute] = (memory, threaded, renderer) => - DispatchComputeCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.Draw] = (memory, threaded, renderer) => - DrawCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DrawIndexed] = (memory, threaded, renderer) => - DrawIndexedCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DrawIndexedIndirect] = (memory, threaded, renderer) => - DrawIndexedIndirectCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DrawIndexedIndirectCount] = (memory, threaded, renderer) => - DrawIndexedIndirectCountCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DrawIndirect] = (memory, threaded, renderer) => - DrawIndirectCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DrawIndirectCount] = (memory, threaded, renderer) => - DrawIndirectCountCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.DrawTexture] = (memory, threaded, renderer) => - DrawTextureCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.EndHostConditionalRendering] = (memory, threaded, renderer) => - EndHostConditionalRenderingCommand.Run(renderer); - _lookup[(int)CommandType.EndTransformFeedback] = (memory, threaded, renderer) => - EndTransformFeedbackCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetAlphaTest] = (memory, threaded, renderer) => - SetAlphaTestCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetBlendState] = (memory, threaded, renderer) => - SetBlendStateCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetDepthBias] = (memory, threaded, renderer) => - SetDepthBiasCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetDepthClamp] = (memory, threaded, renderer) => - SetDepthClampCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetDepthMode] = (memory, threaded, renderer) => - SetDepthModeCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetDepthTest] = (memory, threaded, renderer) => - SetDepthTestCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetFaceCulling] = (memory, threaded, renderer) => - SetFaceCullingCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetFrontFace] = (memory, threaded, renderer) => - SetFrontFaceCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetStorageBuffers] = (memory, threaded, renderer) => - SetStorageBuffersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetTransformFeedbackBuffers] = (memory, threaded, renderer) => - SetTransformFeedbackBuffersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetUniformBuffers] = (memory, threaded, renderer) => - SetUniformBuffersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetImage] = (memory, threaded, renderer) => - SetImageCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetIndexBuffer] = (memory, threaded, renderer) => - SetIndexBufferCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetLineParameters] = (memory, threaded, renderer) => - SetLineParametersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetLogicOpState] = (memory, threaded, renderer) => - SetLogicOpStateCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetMultisampleState] = (memory, threaded, renderer) => - SetMultisampleStateCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetPatchParameters] = (memory, threaded, renderer) => - SetPatchParametersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetPointParameters] = (memory, threaded, renderer) => - SetPointParametersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetPolygonMode] = (memory, threaded, renderer) => - SetPolygonModeCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetPrimitiveRestart] = (memory, threaded, renderer) => - SetPrimitiveRestartCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetPrimitiveTopology] = (memory, threaded, renderer) => - SetPrimitiveTopologyCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetProgram] = (memory, threaded, renderer) => - SetProgramCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetRasterizerDiscard] = (memory, threaded, renderer) => - SetRasterizerDiscardCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetRenderTargetColorMasks] = (memory, threaded, renderer) => - SetRenderTargetColorMasksCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetRenderTargetScale] = (memory, threaded, renderer) => - SetRenderTargetScaleCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetRenderTargets] = (memory, threaded, renderer) => - SetRenderTargetsCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetScissor] = (memory, threaded, renderer) => - SetScissorsCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetStencilTest] = (memory, threaded, renderer) => - SetStencilTestCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetTextureAndSampler] = (memory, threaded, renderer) => - SetTextureAndSamplerCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetUserClipDistance] = (memory, threaded, renderer) => - SetUserClipDistanceCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetVertexAttribs] = (memory, threaded, renderer) => - SetVertexAttribsCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetVertexBuffers] = (memory, threaded, renderer) => - SetVertexBuffersCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.SetViewports] = (memory, threaded, renderer) => - SetViewportsCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureBarrier] = (memory, threaded, renderer) => - TextureBarrierCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TextureBarrierTiled] = (memory, threaded, renderer) => - TextureBarrierTiledCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TryHostConditionalRendering] = (memory, threaded, renderer) => - TryHostConditionalRenderingCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.TryHostConditionalRenderingFlush] = (memory, threaded, renderer) => - TryHostConditionalRenderingFlushCommand.Run(ref GetCommand(memory), threaded, renderer); - _lookup[(int)CommandType.UpdateRenderScale] = (memory, threaded, renderer) => - UpdateRenderScaleCommand.Run(ref GetCommand(memory), threaded, renderer); + Register(CommandType.TextureCopyTo); + Register(CommandType.TextureCopyToScaled); + Register(CommandType.TextureCopyToSlice); + Register(CommandType.TextureCreateView); + Register(CommandType.TextureGetData); + Register(CommandType.TextureGetDataSlice); + Register(CommandType.TextureRelease); + Register(CommandType.TextureSetData); + Register(CommandType.TextureSetDataSlice); + Register(CommandType.TextureSetDataSliceRegion); + Register(CommandType.TextureSetStorage); + + Register(CommandType.WindowPresent); + + Register(CommandType.Barrier); + Register(CommandType.BeginTransformFeedback); + Register(CommandType.ClearBuffer); + Register(CommandType.ClearRenderTargetColor); + Register(CommandType.ClearRenderTargetDepthStencil); + Register(CommandType.CommandBufferBarrier); + Register(CommandType.CopyBuffer); + Register(CommandType.DispatchCompute); + Register(CommandType.Draw); + Register(CommandType.DrawIndexed); + Register(CommandType.DrawIndexedIndirect); + Register(CommandType.DrawIndexedIndirectCount); + Register(CommandType.DrawIndirect); + Register(CommandType.DrawIndirectCount); + Register(CommandType.DrawTexture); + Register(CommandType.EndHostConditionalRendering); + Register(CommandType.EndTransformFeedback); + Register(CommandType.SetAlphaTest); + Register(CommandType.SetBlendState); + Register(CommandType.SetDepthBias); + Register(CommandType.SetDepthClamp); + Register(CommandType.SetDepthMode); + Register(CommandType.SetDepthTest); + Register(CommandType.SetFaceCulling); + Register(CommandType.SetFrontFace); + Register(CommandType.SetStorageBuffers); + Register(CommandType.SetTransformFeedbackBuffers); + Register(CommandType.SetUniformBuffers); + Register(CommandType.SetImage); + Register(CommandType.SetIndexBuffer); + Register(CommandType.SetLineParameters); + Register(CommandType.SetLogicOpState); + Register(CommandType.SetMultisampleState); + Register(CommandType.SetPatchParameters); + Register(CommandType.SetPointParameters); + Register(CommandType.SetPolygonMode); + Register(CommandType.SetPrimitiveRestart); + Register(CommandType.SetPrimitiveTopology); + Register(CommandType.SetProgram); + Register(CommandType.SetRasterizerDiscard); + Register(CommandType.SetRenderTargetColorMasks); + Register(CommandType.SetRenderTargetScale); + Register(CommandType.SetRenderTargets); + Register(CommandType.SetScissor); + Register(CommandType.SetStencilTest); + Register(CommandType.SetTextureAndSampler); + Register(CommandType.SetUserClipDistance); + Register(CommandType.SetVertexAttribs); + Register(CommandType.SetVertexBuffers); + Register(CommandType.SetViewports); + Register(CommandType.TextureBarrier); + Register(CommandType.TextureBarrierTiled); + Register(CommandType.TryHostConditionalRendering); + Register(CommandType.TryHostConditionalRenderingFlush); + Register(CommandType.UpdateRenderScale); + + return maxCommandSize; } [MethodImpl(MethodImplOptions.AggressiveInlining)] diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs index f187c3c2fe..4f8e1b0888 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct BarrierCommand : IGALCommand + struct BarrierCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.Barrier; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs index ea547d8b0b..500326352d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct BeginTransformFeedbackCommand : IGALCommand + struct BeginTransformFeedbackCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.BeginTransformFeedback; private PrimitiveTopology _topology; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs index 68167be0a5..5be42fff61 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer { - struct BufferDisposeCommand : IGALCommand + struct BufferDisposeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.BufferDispose; private BufferHandle _buffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs index 786ed87c5c..d3a255e7bb 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer { - struct BufferGetDataCommand : IGALCommand + struct BufferGetDataCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.BufferGetData; private BufferHandle _buffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs index 6f39898ecd..dcb8c2f21e 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer { - struct BufferSetDataCommand : IGALCommand + struct BufferSetDataCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.BufferSetData; private BufferHandle _buffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs index 2b194b46a7..1d70460aba 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct ClearBufferCommand : IGALCommand + struct ClearBufferCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ClearBuffer; private BufferHandle _destination; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs index 00a5128a2f..f8c2bdfe6b 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct ClearRenderTargetColorCommand : IGALCommand + struct ClearRenderTargetColorCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ClearRenderTargetColor; private int _index; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs index c9ebad215a..ca86673ed3 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct ClearRenderTargetDepthStencilCommand : IGALCommand + struct ClearRenderTargetDepthStencilCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ClearRenderTargetDepthStencil; private int _layer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs index 8c82864851..ad3ab0f848 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct CommandBufferBarrierCommand : IGALCommand + struct CommandBufferBarrierCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CommandBufferBarrier; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs index e8f80d9817..43111bce65 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct CopyBufferCommand : IGALCommand + struct CopyBufferCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CopyBuffer; private BufferHandle _source; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs index ae634e6ad1..e5250212eb 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent { - struct CounterEventDisposeCommand : IGALCommand + struct CounterEventDisposeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CounterEventDispose; private TableRef _event; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs index e4ff4c1800..608cf8f9d5 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent { - struct CounterEventFlushCommand : IGALCommand + struct CounterEventFlushCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CounterEventFlush; private TableRef _event; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs index 26c8806266..29568837c3 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DispatchComputeCommand : IGALCommand + struct DispatchComputeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DispatchCompute; private int _groupsX; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs index ff27303acc..804eaa4970 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawIndexedCommand : IGALCommand + struct DrawIndexedCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DrawIndexed; private int _indexCount; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs index fc84819a16..1b28afcd35 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawCommand : IGALCommand + struct DrawCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.Draw; private int _vertexCount; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs index 3a47e96216..521b2f0c2d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawIndexedIndirectCommand : IGALCommand + struct DrawIndexedIndirectCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DrawIndexedIndirect; private BufferRange _indirectBuffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs index 79d9792e94..6bdf376d07 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawIndexedIndirectCountCommand : IGALCommand + struct DrawIndexedIndirectCountCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DrawIndexedIndirectCount; private BufferRange _indirectBuffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs index 73414e4415..e1947084ce 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawIndirectCommand : IGALCommand + struct DrawIndirectCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DrawIndirect; private BufferRange _indirectBuffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs index 96f60f4aa1..ef56ffb261 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawIndirectCountCommand : IGALCommand + struct DrawIndirectCountCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DrawIndirectCount; private BufferRange _indirectBuffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs index 41a852bb33..b3e9c4b5b5 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct DrawTextureCommand : IGALCommand + struct DrawTextureCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.DrawTexture; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs index e0edd9ab9a..877af23bd6 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs @@ -1,10 +1,10 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct EndHostConditionalRenderingCommand : IGALCommand + struct EndHostConditionalRenderingCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.EndHostConditionalRendering; - public static void Run(IRenderer renderer) + public static void Run(ref EndHostConditionalRenderingCommand command, ThreadedRenderer threaded, IRenderer renderer) { renderer.Pipeline.EndHostConditionalRendering(); } diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs index 561996e315..33df325fde 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct EndTransformFeedbackCommand : IGALCommand + struct EndTransformFeedbackCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.EndTransformFeedback; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs index 5fb04c803c..ea831c8d45 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs @@ -4,4 +4,9 @@ { CommandType CommandType { get; } } + + interface IGALCommand where T : IGALCommand + { + abstract static void Run(ref T command, ThreadedRenderer threaded, IRenderer renderer); + } } diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs index 7ae887f417..f36624240f 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program { - struct ProgramCheckLinkCommand : IGALCommand + struct ProgramCheckLinkCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ProgramCheckLink; private TableRef _program; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs index e614c392d4..d1ec429854 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program { - struct ProgramDisposeCommand : IGALCommand + struct ProgramDisposeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ProgramDispose; private TableRef _program; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs index 92c0a6d683..16963245fe 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program { - struct ProgramGetBinaryCommand : IGALCommand + struct ProgramGetBinaryCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ProgramGetBinary; private TableRef _program; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs index 07e55c9696..41987da1ec 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct ActionCommand : IGALCommand + struct ActionCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.Action; private TableRef _action; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs index a96b3cef45..4f01dea275 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct CreateBufferCommand : IGALCommand + struct CreateBufferCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CreateBuffer; private BufferHandle _threadedHandle; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs index e24505e581..19563e1241 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct CreateProgramCommand : IGALCommand + struct CreateProgramCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CreateProgram; private TableRef _request; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs index bca98cfb8e..6ab862d44d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct CreateSamplerCommand : IGALCommand + struct CreateSamplerCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CreateSampler; private TableRef _sampler; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs index 66f5cf0623..32afb051eb 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct CreateSyncCommand : IGALCommand + struct CreateSyncCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CreateSync; private ulong _id; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs index f924012501..0347ded468 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct CreateTextureCommand : IGALCommand + struct CreateTextureCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.CreateTexture; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs index 102ed9dafa..4111dcfd43 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs @@ -2,7 +2,7 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct GetCapabilitiesCommand : IGALCommand + struct GetCapabilitiesCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.GetCapabilities; private TableRef> _result; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs index 1048dc9e6a..820908f397 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct PreFrameCommand : IGALCommand + struct PreFrameCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.PreFrame; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs index d477f23555..4b0210cbfb 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct ReportCounterCommand : IGALCommand + struct ReportCounterCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ReportCounter; private TableRef _event; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs index 2835bf316a..3d79604171 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct ResetCounterCommand : IGALCommand + struct ResetCounterCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.ResetCounter; private CounterType _type; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs index f28bf080bd..c7076c0ec5 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer { - struct UpdateCountersCommand : IGALCommand + struct UpdateCountersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.UpdateCounters; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs index 8f4dfb7eea..9485e9a102 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler { - struct SamplerDisposeCommand : IGALCommand + struct SamplerDisposeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SamplerDispose; private TableRef _sampler; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs index 8937938704..a96879ffaf 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetAlphaTestCommand : IGALCommand + struct SetAlphaTestCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetAlphaTest; private bool _enable; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs index 6cc4894e72..68e48da57e 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetBlendStateCommand : IGALCommand + struct SetBlendStateCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetBlendState; private int _index; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs index 352242a3ab..eb8d4a72a9 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetDepthBiasCommand : IGALCommand + struct SetDepthBiasCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetDepthBias; private PolygonModeMask _enables; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs index 21c8f3e622..15159cb440 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetDepthClampCommand : IGALCommand + struct SetDepthClampCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetDepthClamp; private bool _clamp; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs index 28c36be8bc..3e1691641b 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetDepthModeCommand : IGALCommand + struct SetDepthModeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetDepthMode; private DepthMode _mode; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs index 585d3e8b52..2abaeb787d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetDepthTestCommand : IGALCommand + struct SetDepthTestCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetDepthTest; private DepthTestDescriptor _depthTest; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs index 2a2b41cafc..54311e95cb 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetFaceCullingCommand : IGALCommand + struct SetFaceCullingCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetFaceCulling; private bool _enable; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs index a415237f95..e4d7b8147f 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetFrontFaceCommand : IGALCommand + struct SetFrontFaceCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetFrontFace; private FrontFace _frontFace; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs index 4223a6212a..7836acd7e2 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetImageCommand : IGALCommand + struct SetImageCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetImage; private int _binding; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs index 753e21f9b8..ded44c552d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetIndexBufferCommand : IGALCommand + struct SetIndexBufferCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetIndexBuffer; private BufferRange _buffer; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs index 7fd2e5b1fd..683319323d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetLineParametersCommand : IGALCommand + struct SetLineParametersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetLineParameters; private float _width; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs index 253ef13886..2d7fc16985 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetLogicOpStateCommand : IGALCommand + struct SetLogicOpStateCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetLogicOpState; private bool _enable; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs index f981c6ceb1..f7b4969a58 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetMultisampleStateCommand : IGALCommand + struct SetMultisampleStateCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetMultisampleState; private MultisampleDescriptor _multisample; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs index d67cfc6924..815bc3c229 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetPatchParametersCommand : IGALCommand + struct SetPatchParametersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetPatchParameters; private int _vertices; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs index 37833a0e17..e3fad0f82c 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetPointParametersCommand : IGALCommand + struct SetPointParametersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetPointParameters; private float _size; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs index 6de78f045f..ea2f838b9c 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetPolygonModeCommand : IGALCommand + struct SetPolygonModeCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetPolygonMode; private PolygonMode _frontMode; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs index e5f6ecf38a..26b88b01d2 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetPrimitiveRestartCommand : IGALCommand + struct SetPrimitiveRestartCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetPrimitiveRestart; private bool _enable; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs index 0bf292605a..062c4e57c0 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetPrimitiveTopologyCommand : IGALCommand + struct SetPrimitiveTopologyCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetPrimitiveTopology; private PrimitiveTopology _topology; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs index c35d9c1f40..fa2e9a8a53 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetProgramCommand : IGALCommand + struct SetProgramCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetProgram; private TableRef _program; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs index 4f92ce99e6..d2095a4f19 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetRasterizerDiscardCommand : IGALCommand + struct SetRasterizerDiscardCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetRasterizerDiscard; private bool _discard; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs index 1e75ddb878..c247ff3afc 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetRenderTargetColorMasksCommand : IGALCommand + struct SetRenderTargetColorMasksCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetRenderTargetColorMasks; private SpanRef _componentMask; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs index a97a63db4b..7cb5ec1141 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetRenderTargetScaleCommand : IGALCommand + struct SetRenderTargetScaleCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetRenderTargetScale; private float _scale; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs index 30f798ddb3..0b175a72ec 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs @@ -4,7 +4,7 @@ using System.Linq; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetRenderTargetsCommand : IGALCommand + struct SetRenderTargetsCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetRenderTargets; private TableRef _colors; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs index 6966df6d58..985d775e00 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs @@ -2,7 +2,7 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetScissorsCommand : IGALCommand + struct SetScissorsCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetScissor; private SpanRef> _scissors; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs index cc5db4df44..41bff97e3c 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetStencilTestCommand : IGALCommand + struct SetStencilTestCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetStencilTest; private StencilTestDescriptor _stencilTest; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs index 610603caa2..6ecb0989b9 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetStorageBuffersCommand : IGALCommand + struct SetStorageBuffersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetStorageBuffers; private SpanRef _buffers; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs index 7ef58c3d00..5e8e085444 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs @@ -4,7 +4,7 @@ using Ryujinx.Graphics.Shader; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetTextureAndSamplerCommand : IGALCommand + struct SetTextureAndSamplerCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetTextureAndSampler; private ShaderStage _stage; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs index 5125447c5d..e0d4ef2d21 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetTransformFeedbackBuffersCommand : IGALCommand + struct SetTransformFeedbackBuffersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetTransformFeedbackBuffers; private SpanRef _buffers; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs index e4abb403ac..9e93db9ee9 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetUniformBuffersCommand : IGALCommand + struct SetUniformBuffersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetUniformBuffers; private SpanRef _buffers; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs index f0f0577940..4336ce49f9 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetUserClipDistanceCommand : IGALCommand + struct SetUserClipDistanceCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetUserClipDistance; private int _index; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs index cbc313e9fc..e442c72d1f 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetVertexAttribsCommand : IGALCommand + struct SetVertexAttribsCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetVertexAttribs; private SpanRef _vertexAttribs; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs index b7d46d08c5..585da2a4a4 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetVertexBuffersCommand : IGALCommand + struct SetVertexBuffersCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetVertexBuffers; private SpanRef _vertexBuffers; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs index e1b8c7d4f7..c18bd811e3 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs @@ -3,7 +3,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct SetViewportsCommand : IGALCommand + struct SetViewportsCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.SetViewports; private SpanRef _viewports; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs index 112c1fd1df..02d0b63960 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureCopyToCommand : IGALCommand + struct TextureCopyToCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureCopyTo; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs index 11843361d0..6b83d3f806 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureCopyToScaledCommand : IGALCommand + struct TextureCopyToScaledCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureCopyToScaled; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs index 363edb0051..2a340a7046 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureCopyToSliceCommand : IGALCommand + struct TextureCopyToSliceCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureCopyToSlice; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs index 7c385407b1..09e9ca2f79 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureCreateViewCommand : IGALCommand + struct TextureCreateViewCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureCreateView; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs index 9e7d0c64f6..1f519ccd81 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureGetDataCommand : IGALCommand + struct TextureGetDataCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureGetData; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs index 207e5784cf..5ac05971ae 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureGetDataSliceCommand : IGALCommand + struct TextureGetDataSliceCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureGetDataSlice; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs index 591b2214c0..61486e091b 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureReleaseCommand : IGALCommand + struct TextureReleaseCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureRelease; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs index a8a6d274a8..cfbaffd3e3 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureSetDataCommand : IGALCommand + struct TextureSetDataCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureSetData; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs index 0179ff1103..a7126f6178 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureSetDataSliceCommand : IGALCommand + struct TextureSetDataSliceCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureSetDataSlice; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs index b4285592fd..4df83e084a 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureSetDataSliceRegionCommand : IGALCommand + struct TextureSetDataSliceRegionCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureSetDataSliceRegion; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs index f86a9c44a3..2a1943a9c5 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture { - struct TextureSetStorageCommand : IGALCommand + struct TextureSetStorageCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureSetStorage; private TableRef _texture; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs index b0b46021d2..ce1a83a78d 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct TextureBarrierCommand : IGALCommand + struct TextureBarrierCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureBarrier; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs index f92abe5b33..c65ffe2ec8 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs @@ -1,6 +1,6 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct TextureBarrierTiledCommand : IGALCommand + struct TextureBarrierTiledCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TextureBarrierTiled; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs index 65e1748de7..9124ca1f01 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct TryHostConditionalRenderingCommand : IGALCommand + struct TryHostConditionalRenderingCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TryHostConditionalRendering; private TableRef _value; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs index 29eb8dd49c..a5d0764009 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs @@ -3,7 +3,7 @@ using Ryujinx.Graphics.GAL.Multithreading.Resources; namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct TryHostConditionalRenderingFlushCommand : IGALCommand + struct TryHostConditionalRenderingFlushCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.TryHostConditionalRenderingFlush; private TableRef _value; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs index ca869b01e2..ebe1415085 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs @@ -2,7 +2,7 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands { - struct UpdateRenderScaleCommand : IGALCommand + struct UpdateRenderScaleCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.UpdateRenderScale; private SpanRef _scales; diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs index c4f3b553a0..6a24cd35b3 100644 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs @@ -4,7 +4,7 @@ using System; namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Window { - struct WindowPresentCommand : IGALCommand + struct WindowPresentCommand : IGALCommand, IGALCommand { public CommandType CommandType => CommandType.WindowPresent; private TableRef _texture;