diff options
Diffstat (limited to 'Ryujinx.Graphics.GAL')
174 files changed, 0 insertions, 6523 deletions
diff --git a/Ryujinx.Graphics.GAL/AddressMode.cs b/Ryujinx.Graphics.GAL/AddressMode.cs deleted file mode 100644 index 153925b1..00000000 --- a/Ryujinx.Graphics.GAL/AddressMode.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum AddressMode - { - Repeat, - MirroredRepeat, - ClampToEdge, - ClampToBorder, - Clamp, - MirrorClampToEdge, - MirrorClampToBorder, - MirrorClamp - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/AdvancedBlendDescriptor.cs b/Ryujinx.Graphics.GAL/AdvancedBlendDescriptor.cs deleted file mode 100644 index 1f1f7c3f..00000000 --- a/Ryujinx.Graphics.GAL/AdvancedBlendDescriptor.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public struct AdvancedBlendDescriptor - { - public AdvancedBlendOp Op { get; } - public AdvancedBlendOverlap Overlap { get; } - public bool SrcPreMultiplied { get; } - - public AdvancedBlendDescriptor(AdvancedBlendOp op, AdvancedBlendOverlap overlap, bool srcPreMultiplied) - { - Op = op; - Overlap = overlap; - SrcPreMultiplied = srcPreMultiplied; - } - } -} diff --git a/Ryujinx.Graphics.GAL/AdvancedBlendOp.cs b/Ryujinx.Graphics.GAL/AdvancedBlendOp.cs deleted file mode 100644 index 4140bf49..00000000 --- a/Ryujinx.Graphics.GAL/AdvancedBlendOp.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum AdvancedBlendOp - { - Zero, - Src, - Dst, - SrcOver, - DstOver, - SrcIn, - DstIn, - SrcOut, - DstOut, - SrcAtop, - DstAtop, - Xor, - Plus, - PlusClamped, - PlusClampedAlpha, - PlusDarker, - Multiply, - Screen, - Overlay, - Darken, - Lighten, - ColorDodge, - ColorBurn, - HardLight, - SoftLight, - Difference, - Minus, - MinusClamped, - Exclusion, - Contrast, - Invert, - InvertRGB, - InvertOvg, - LinearDodge, - LinearBurn, - VividLight, - LinearLight, - PinLight, - HardMix, - Red, - Green, - Blue, - HslHue, - HslSaturation, - HslColor, - HslLuminosity - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/AdvancedBlendOverlap.cs b/Ryujinx.Graphics.GAL/AdvancedBlendOverlap.cs deleted file mode 100644 index d4feb2b3..00000000 --- a/Ryujinx.Graphics.GAL/AdvancedBlendOverlap.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum AdvancedBlendOverlap - { - Uncorrelated, - Disjoint, - Conjoint - } -} diff --git a/Ryujinx.Graphics.GAL/AntiAliasing.cs b/Ryujinx.Graphics.GAL/AntiAliasing.cs deleted file mode 100644 index d4e5754d..00000000 --- a/Ryujinx.Graphics.GAL/AntiAliasing.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum AntiAliasing - { - None, - Fxaa, - SmaaLow, - SmaaMedium, - SmaaHigh, - SmaaUltra - } -} diff --git a/Ryujinx.Graphics.GAL/BlendDescriptor.cs b/Ryujinx.Graphics.GAL/BlendDescriptor.cs deleted file mode 100644 index 83b8afe2..00000000 --- a/Ryujinx.Graphics.GAL/BlendDescriptor.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct BlendDescriptor - { - public bool Enable { get; } - - public ColorF BlendConstant { get; } - public BlendOp ColorOp { get; } - public BlendFactor ColorSrcFactor { get; } - public BlendFactor ColorDstFactor { get; } - public BlendOp AlphaOp { get; } - public BlendFactor AlphaSrcFactor { get; } - public BlendFactor AlphaDstFactor { get; } - - public BlendDescriptor( - bool enable, - ColorF blendConstant, - BlendOp colorOp, - BlendFactor colorSrcFactor, - BlendFactor colorDstFactor, - BlendOp alphaOp, - BlendFactor alphaSrcFactor, - BlendFactor alphaDstFactor) - { - Enable = enable; - BlendConstant = blendConstant; - ColorOp = colorOp; - ColorSrcFactor = colorSrcFactor; - ColorDstFactor = colorDstFactor; - AlphaOp = alphaOp; - AlphaSrcFactor = alphaSrcFactor; - AlphaDstFactor = alphaDstFactor; - } - } -} diff --git a/Ryujinx.Graphics.GAL/BlendFactor.cs b/Ryujinx.Graphics.GAL/BlendFactor.cs deleted file mode 100644 index 4149ad51..00000000 --- a/Ryujinx.Graphics.GAL/BlendFactor.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum BlendFactor - { - Zero = 1, - One, - SrcColor, - OneMinusSrcColor, - SrcAlpha, - OneMinusSrcAlpha, - DstAlpha, - OneMinusDstAlpha, - DstColor, - OneMinusDstColor, - SrcAlphaSaturate, - Src1Color = 0x10, - OneMinusSrc1Color, - Src1Alpha, - OneMinusSrc1Alpha, - ConstantColor = 0xc001, - OneMinusConstantColor, - ConstantAlpha, - OneMinusConstantAlpha, - - ZeroGl = 0x4000, - OneGl = 0x4001, - SrcColorGl = 0x4300, - OneMinusSrcColorGl = 0x4301, - SrcAlphaGl = 0x4302, - OneMinusSrcAlphaGl = 0x4303, - DstAlphaGl = 0x4304, - OneMinusDstAlphaGl = 0x4305, - DstColorGl = 0x4306, - OneMinusDstColorGl = 0x4307, - SrcAlphaSaturateGl = 0x4308, - Src1ColorGl = 0xc900, - OneMinusSrc1ColorGl = 0xc901, - Src1AlphaGl = 0xc902, - OneMinusSrc1AlphaGl = 0xc903 - } - - public static class BlendFactorExtensions - { - public static bool IsDualSource(this BlendFactor factor) - { - switch (factor) - { - case BlendFactor.Src1Color: - case BlendFactor.Src1ColorGl: - case BlendFactor.Src1Alpha: - case BlendFactor.Src1AlphaGl: - case BlendFactor.OneMinusSrc1Color: - case BlendFactor.OneMinusSrc1ColorGl: - case BlendFactor.OneMinusSrc1Alpha: - case BlendFactor.OneMinusSrc1AlphaGl: - return true; - } - - return false; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/BlendOp.cs b/Ryujinx.Graphics.GAL/BlendOp.cs deleted file mode 100644 index b4a5a930..00000000 --- a/Ryujinx.Graphics.GAL/BlendOp.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum BlendOp - { - Add = 1, - Subtract, - ReverseSubtract, - Minimum, - Maximum, - - AddGl = 0x8006, - MinimumGl = 0x8007, - MaximumGl = 0x8008, - SubtractGl = 0x800a, - ReverseSubtractGl = 0x800b - } -} diff --git a/Ryujinx.Graphics.GAL/BufferAssignment.cs b/Ryujinx.Graphics.GAL/BufferAssignment.cs deleted file mode 100644 index d803d90b..00000000 --- a/Ryujinx.Graphics.GAL/BufferAssignment.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct BufferAssignment - { - public readonly int Binding; - public readonly BufferRange Range; - - public BufferAssignment(int binding, BufferRange range) - { - Binding = binding; - Range = range; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/BufferHandle.cs b/Ryujinx.Graphics.GAL/BufferHandle.cs deleted file mode 100644 index 5ba50d19..00000000 --- a/Ryujinx.Graphics.GAL/BufferHandle.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Runtime.InteropServices; - -namespace Ryujinx.Graphics.GAL -{ - [StructLayout(LayoutKind.Sequential, Size = 8)] - public readonly record struct BufferHandle - { - private readonly ulong _value; - - public static BufferHandle Null => new BufferHandle(0); - - private BufferHandle(ulong value) => _value = value; - } -} diff --git a/Ryujinx.Graphics.GAL/BufferRange.cs b/Ryujinx.Graphics.GAL/BufferRange.cs deleted file mode 100644 index ad9ebee4..00000000 --- a/Ryujinx.Graphics.GAL/BufferRange.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct BufferRange - { - private static readonly BufferRange _empty = new BufferRange(BufferHandle.Null, 0, 0); - - public static BufferRange Empty => _empty; - - public BufferHandle Handle { get; } - - public int Offset { get; } - public int Size { get; } - - public BufferRange(BufferHandle handle, int offset, int size) - { - Handle = handle; - Offset = offset; - Size = size; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Capabilities.cs b/Ryujinx.Graphics.GAL/Capabilities.cs deleted file mode 100644 index a93d3846..00000000 --- a/Ryujinx.Graphics.GAL/Capabilities.cs +++ /dev/null @@ -1,140 +0,0 @@ -using Ryujinx.Graphics.Shader.Translation; - -namespace Ryujinx.Graphics.GAL -{ - public readonly struct Capabilities - { - public readonly TargetApi Api; - public readonly string VendorName; - - public readonly bool HasFrontFacingBug; - public readonly bool HasVectorIndexingBug; - public readonly bool NeedsFragmentOutputSpecialization; - public readonly bool ReduceShaderPrecision; - - public readonly bool SupportsAstcCompression; - public readonly bool SupportsBc123Compression; - public readonly bool SupportsBc45Compression; - public readonly bool SupportsBc67Compression; - public readonly bool SupportsEtc2Compression; - public readonly bool Supports3DTextureCompression; - public readonly bool SupportsBgraFormat; - public readonly bool SupportsR4G4Format; - public readonly bool SupportsR4G4B4A4Format; - public readonly bool SupportsSnormBufferTextureFormat; - public readonly bool Supports5BitComponentFormat; - public readonly bool SupportsBlendEquationAdvanced; - public readonly bool SupportsFragmentShaderInterlock; - public readonly bool SupportsFragmentShaderOrderingIntel; - public readonly bool SupportsGeometryShader; - public readonly bool SupportsGeometryShaderPassthrough; - public readonly bool SupportsImageLoadFormatted; - public readonly bool SupportsLayerVertexTessellation; - public readonly bool SupportsMismatchingViewFormat; - public readonly bool SupportsCubemapView; - public readonly bool SupportsNonConstantTextureOffset; - public readonly bool SupportsShaderBallot; - public readonly bool SupportsTextureShadowLod; - public readonly bool SupportsViewportIndexVertexTessellation; - public readonly bool SupportsViewportMask; - public readonly bool SupportsViewportSwizzle; - public readonly bool SupportsIndirectParameters; - - public readonly uint MaximumUniformBuffersPerStage; - public readonly uint MaximumStorageBuffersPerStage; - public readonly uint MaximumTexturesPerStage; - public readonly uint MaximumImagesPerStage; - - public readonly int MaximumComputeSharedMemorySize; - public readonly float MaximumSupportedAnisotropy; - public readonly int StorageBufferOffsetAlignment; - - public readonly int GatherBiasPrecision; - - public Capabilities( - TargetApi api, - string vendorName, - bool hasFrontFacingBug, - bool hasVectorIndexingBug, - bool needsFragmentOutputSpecialization, - bool reduceShaderPrecision, - bool supportsAstcCompression, - bool supportsBc123Compression, - bool supportsBc45Compression, - bool supportsBc67Compression, - bool supportsEtc2Compression, - bool supports3DTextureCompression, - bool supportsBgraFormat, - bool supportsR4G4Format, - bool supportsR4G4B4A4Format, - bool supportsSnormBufferTextureFormat, - bool supports5BitComponentFormat, - bool supportsBlendEquationAdvanced, - bool supportsFragmentShaderInterlock, - bool supportsFragmentShaderOrderingIntel, - bool supportsGeometryShader, - bool supportsGeometryShaderPassthrough, - bool supportsImageLoadFormatted, - bool supportsLayerVertexTessellation, - bool supportsMismatchingViewFormat, - bool supportsCubemapView, - bool supportsNonConstantTextureOffset, - bool supportsShaderBallot, - bool supportsTextureShadowLod, - bool supportsViewportIndexVertexTessellation, - bool supportsViewportMask, - bool supportsViewportSwizzle, - bool supportsIndirectParameters, - uint maximumUniformBuffersPerStage, - uint maximumStorageBuffersPerStage, - uint maximumTexturesPerStage, - uint maximumImagesPerStage, - int maximumComputeSharedMemorySize, - float maximumSupportedAnisotropy, - int storageBufferOffsetAlignment, - int gatherBiasPrecision) - { - Api = api; - VendorName = vendorName; - HasFrontFacingBug = hasFrontFacingBug; - HasVectorIndexingBug = hasVectorIndexingBug; - NeedsFragmentOutputSpecialization = needsFragmentOutputSpecialization; - ReduceShaderPrecision = reduceShaderPrecision; - SupportsAstcCompression = supportsAstcCompression; - SupportsBc123Compression = supportsBc123Compression; - SupportsBc45Compression = supportsBc45Compression; - SupportsBc67Compression = supportsBc67Compression; - SupportsEtc2Compression = supportsEtc2Compression; - Supports3DTextureCompression = supports3DTextureCompression; - SupportsBgraFormat = supportsBgraFormat; - SupportsR4G4Format = supportsR4G4Format; - SupportsR4G4B4A4Format = supportsR4G4B4A4Format; - SupportsSnormBufferTextureFormat = supportsSnormBufferTextureFormat; - Supports5BitComponentFormat = supports5BitComponentFormat; - SupportsBlendEquationAdvanced = supportsBlendEquationAdvanced; - SupportsFragmentShaderInterlock = supportsFragmentShaderInterlock; - SupportsFragmentShaderOrderingIntel = supportsFragmentShaderOrderingIntel; - SupportsGeometryShader = supportsGeometryShader; - SupportsGeometryShaderPassthrough = supportsGeometryShaderPassthrough; - SupportsImageLoadFormatted = supportsImageLoadFormatted; - SupportsLayerVertexTessellation = supportsLayerVertexTessellation; - SupportsMismatchingViewFormat = supportsMismatchingViewFormat; - SupportsCubemapView = supportsCubemapView; - SupportsNonConstantTextureOffset = supportsNonConstantTextureOffset; - SupportsShaderBallot = supportsShaderBallot; - SupportsTextureShadowLod = supportsTextureShadowLod; - SupportsViewportIndexVertexTessellation = supportsViewportIndexVertexTessellation; - SupportsViewportMask = supportsViewportMask; - SupportsViewportSwizzle = supportsViewportSwizzle; - SupportsIndirectParameters = supportsIndirectParameters; - MaximumUniformBuffersPerStage = maximumUniformBuffersPerStage; - MaximumStorageBuffersPerStage = maximumStorageBuffersPerStage; - MaximumTexturesPerStage = maximumTexturesPerStage; - MaximumImagesPerStage = maximumImagesPerStage; - MaximumComputeSharedMemorySize = maximumComputeSharedMemorySize; - MaximumSupportedAnisotropy = maximumSupportedAnisotropy; - StorageBufferOffsetAlignment = storageBufferOffsetAlignment; - GatherBiasPrecision = gatherBiasPrecision; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/ColorF.cs b/Ryujinx.Graphics.GAL/ColorF.cs deleted file mode 100644 index 235f4229..00000000 --- a/Ryujinx.Graphics.GAL/ColorF.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly record struct ColorF(float Red, float Green, float Blue, float Alpha); -} diff --git a/Ryujinx.Graphics.GAL/CompareMode.cs b/Ryujinx.Graphics.GAL/CompareMode.cs deleted file mode 100644 index 7a64d9bb..00000000 --- a/Ryujinx.Graphics.GAL/CompareMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum CompareMode - { - None, - CompareRToTexture - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/CompareOp.cs b/Ryujinx.Graphics.GAL/CompareOp.cs deleted file mode 100644 index 358ed2b4..00000000 --- a/Ryujinx.Graphics.GAL/CompareOp.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum CompareOp - { - Never = 1, - Less, - Equal, - LessOrEqual, - Greater, - NotEqual, - GreaterOrEqual, - Always, - - NeverGl = 0x200, - LessGl = 0x201, - EqualGl = 0x202, - LessOrEqualGl = 0x203, - GreaterGl = 0x204, - NotEqualGl = 0x205, - GreaterOrEqualGl = 0x206, - AlwaysGl = 0x207, - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/CounterType.cs b/Ryujinx.Graphics.GAL/CounterType.cs deleted file mode 100644 index 9d7b3b98..00000000 --- a/Ryujinx.Graphics.GAL/CounterType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum CounterType - { - SamplesPassed, - PrimitivesGenerated, - TransformFeedbackPrimitivesWritten - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/DepthMode.cs b/Ryujinx.Graphics.GAL/DepthMode.cs deleted file mode 100644 index aafbb65a..00000000 --- a/Ryujinx.Graphics.GAL/DepthMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum DepthMode - { - MinusOneToOne, - ZeroToOne - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/DepthStencilMode.cs b/Ryujinx.Graphics.GAL/DepthStencilMode.cs deleted file mode 100644 index e80d0d4b..00000000 --- a/Ryujinx.Graphics.GAL/DepthStencilMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum DepthStencilMode - { - Depth, - Stencil - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/DepthTestDescriptor.cs b/Ryujinx.Graphics.GAL/DepthTestDescriptor.cs deleted file mode 100644 index 4c593392..00000000 --- a/Ryujinx.Graphics.GAL/DepthTestDescriptor.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct DepthTestDescriptor - { - public bool TestEnable { get; } - public bool WriteEnable { get; } - - public CompareOp Func { get; } - - public DepthTestDescriptor( - bool testEnable, - bool writeEnable, - CompareOp func) - { - TestEnable = testEnable; - WriteEnable = writeEnable; - Func = func; - } - } -} diff --git a/Ryujinx.Graphics.GAL/DeviceInfo.cs b/Ryujinx.Graphics.GAL/DeviceInfo.cs deleted file mode 100644 index eb4a016f..00000000 --- a/Ryujinx.Graphics.GAL/DeviceInfo.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct DeviceInfo - { - public readonly string Id; - public readonly string Vendor; - public readonly string Name; - public readonly bool IsDiscrete; - - public DeviceInfo(string id, string vendor, string name, bool isDiscrete) - { - Id = id; - Vendor = vendor; - Name = name; - IsDiscrete = isDiscrete; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Extents2D.cs b/Ryujinx.Graphics.GAL/Extents2D.cs deleted file mode 100644 index bac44f83..00000000 --- a/Ryujinx.Graphics.GAL/Extents2D.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Ryujinx.Common; - -namespace Ryujinx.Graphics.GAL -{ - public readonly struct Extents2D - { - public int X1 { get; } - public int Y1 { get; } - public int X2 { get; } - public int Y2 { get; } - - public Extents2D(int x1, int y1, int x2, int y2) - { - X1 = x1; - Y1 = y1; - X2 = x2; - Y2 = y2; - } - - public Extents2D Reduce(int level) - { - int div = 1 << level; - - return new Extents2D( - X1 >> level, - Y1 >> level, - BitUtils.DivRoundUp(X2, div), - BitUtils.DivRoundUp(Y2, div)); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Extents2DF.cs b/Ryujinx.Graphics.GAL/Extents2DF.cs deleted file mode 100644 index 43f0e25e..00000000 --- a/Ryujinx.Graphics.GAL/Extents2DF.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct Extents2DF - { - public float X1 { get; } - public float Y1 { get; } - public float X2 { get; } - public float Y2 { get; } - - public Extents2DF(float x1, float y1, float x2, float y2) - { - X1 = x1; - Y1 = y1; - X2 = x2; - Y2 = y2; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Face.cs b/Ryujinx.Graphics.GAL/Face.cs deleted file mode 100644 index 0587641f..00000000 --- a/Ryujinx.Graphics.GAL/Face.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum Face - { - Front = 0x404, - Back = 0x405, - FrontAndBack = 0x408 - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Format.cs b/Ryujinx.Graphics.GAL/Format.cs deleted file mode 100644 index 5e0274e5..00000000 --- a/Ryujinx.Graphics.GAL/Format.cs +++ /dev/null @@ -1,667 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum Format - { - R8Unorm, - R8Snorm, - R8Uint, - R8Sint, - R16Float, - R16Unorm, - R16Snorm, - R16Uint, - R16Sint, - R32Float, - R32Uint, - R32Sint, - R8G8Unorm, - R8G8Snorm, - R8G8Uint, - R8G8Sint, - R16G16Float, - R16G16Unorm, - R16G16Snorm, - R16G16Uint, - R16G16Sint, - R32G32Float, - R32G32Uint, - R32G32Sint, - R8G8B8Unorm, - R8G8B8Snorm, - R8G8B8Uint, - R8G8B8Sint, - R16G16B16Float, - R16G16B16Unorm, - R16G16B16Snorm, - R16G16B16Uint, - R16G16B16Sint, - R32G32B32Float, - R32G32B32Uint, - R32G32B32Sint, - R8G8B8A8Unorm, - R8G8B8A8Snorm, - R8G8B8A8Uint, - R8G8B8A8Sint, - R16G16B16A16Float, - R16G16B16A16Unorm, - R16G16B16A16Snorm, - R16G16B16A16Uint, - R16G16B16A16Sint, - R32G32B32A32Float, - R32G32B32A32Uint, - R32G32B32A32Sint, - S8Uint, - D16Unorm, - S8UintD24Unorm, - D32Float, - D24UnormS8Uint, - D32FloatS8Uint, - R8G8B8A8Srgb, - R4G4Unorm, - R4G4B4A4Unorm, - R5G5B5X1Unorm, - R5G5B5A1Unorm, - R5G6B5Unorm, - R10G10B10A2Unorm, - R10G10B10A2Uint, - R11G11B10Float, - R9G9B9E5Float, - Bc1RgbaUnorm, - Bc2Unorm, - Bc3Unorm, - Bc1RgbaSrgb, - Bc2Srgb, - Bc3Srgb, - Bc4Unorm, - Bc4Snorm, - Bc5Unorm, - Bc5Snorm, - Bc7Unorm, - Bc7Srgb, - Bc6HSfloat, - Bc6HUfloat, - Etc2RgbUnorm, - Etc2RgbaUnorm, - Etc2RgbPtaUnorm, - Etc2RgbSrgb, - Etc2RgbaSrgb, - Etc2RgbPtaSrgb, - R8Uscaled, - R8Sscaled, - R16Uscaled, - R16Sscaled, - R32Uscaled, - R32Sscaled, - R8G8Uscaled, - R8G8Sscaled, - R16G16Uscaled, - R16G16Sscaled, - R32G32Uscaled, - R32G32Sscaled, - R8G8B8Uscaled, - R8G8B8Sscaled, - R16G16B16Uscaled, - R16G16B16Sscaled, - R32G32B32Uscaled, - R32G32B32Sscaled, - R8G8B8A8Uscaled, - R8G8B8A8Sscaled, - R16G16B16A16Uscaled, - R16G16B16A16Sscaled, - R32G32B32A32Uscaled, - R32G32B32A32Sscaled, - R10G10B10A2Snorm, - R10G10B10A2Sint, - R10G10B10A2Uscaled, - R10G10B10A2Sscaled, - Astc4x4Unorm, - Astc5x4Unorm, - Astc5x5Unorm, - Astc6x5Unorm, - Astc6x6Unorm, - Astc8x5Unorm, - Astc8x6Unorm, - Astc8x8Unorm, - Astc10x5Unorm, - Astc10x6Unorm, - Astc10x8Unorm, - Astc10x10Unorm, - Astc12x10Unorm, - Astc12x12Unorm, - Astc4x4Srgb, - Astc5x4Srgb, - Astc5x5Srgb, - Astc6x5Srgb, - Astc6x6Srgb, - Astc8x5Srgb, - Astc8x6Srgb, - Astc8x8Srgb, - Astc10x5Srgb, - Astc10x6Srgb, - Astc10x8Srgb, - Astc10x10Srgb, - Astc12x10Srgb, - Astc12x12Srgb, - B5G6R5Unorm, - B5G5R5A1Unorm, - A1B5G5R5Unorm, - B8G8R8A8Unorm, - B8G8R8A8Srgb - } - - public static class FormatExtensions - { - /// <summary> - /// The largest scalar size for a buffer format. - /// </summary> - public const int MaxBufferFormatScalarSize = 4; - - /// <summary> - /// Gets the byte size for a single component of this format, or its packed size. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>Byte size for a single component, or packed size</returns> - public static int GetScalarSize(this Format format) - { - switch (format) - { - case Format.R8Unorm: - case Format.R8Snorm: - case Format.R8Uint: - case Format.R8Sint: - case Format.R8G8Unorm: - case Format.R8G8Snorm: - case Format.R8G8Uint: - case Format.R8G8Sint: - case Format.R8G8B8Unorm: - case Format.R8G8B8Snorm: - case Format.R8G8B8Uint: - case Format.R8G8B8Sint: - case Format.R8G8B8A8Unorm: - case Format.R8G8B8A8Snorm: - case Format.R8G8B8A8Uint: - case Format.R8G8B8A8Sint: - case Format.R8G8B8A8Srgb: - case Format.R4G4Unorm: - case Format.R8Uscaled: - case Format.R8Sscaled: - case Format.R8G8Uscaled: - case Format.R8G8Sscaled: - case Format.R8G8B8Uscaled: - case Format.R8G8B8Sscaled: - case Format.R8G8B8A8Uscaled: - case Format.R8G8B8A8Sscaled: - case Format.B8G8R8A8Unorm: - case Format.B8G8R8A8Srgb: - return 1; - - case Format.R16Float: - case Format.R16Unorm: - case Format.R16Snorm: - case Format.R16Uint: - case Format.R16Sint: - case Format.R16G16Float: - case Format.R16G16Unorm: - case Format.R16G16Snorm: - case Format.R16G16Uint: - case Format.R16G16Sint: - case Format.R16G16B16Float: - case Format.R16G16B16Unorm: - case Format.R16G16B16Snorm: - case Format.R16G16B16Uint: - case Format.R16G16B16Sint: - case Format.R16G16B16A16Float: - case Format.R16G16B16A16Unorm: - case Format.R16G16B16A16Snorm: - case Format.R16G16B16A16Uint: - case Format.R16G16B16A16Sint: - case Format.R4G4B4A4Unorm: - case Format.R5G5B5X1Unorm: - case Format.R5G5B5A1Unorm: - case Format.R5G6B5Unorm: - case Format.R16Uscaled: - case Format.R16Sscaled: - case Format.R16G16Uscaled: - case Format.R16G16Sscaled: - case Format.R16G16B16Uscaled: - case Format.R16G16B16Sscaled: - case Format.R16G16B16A16Uscaled: - case Format.R16G16B16A16Sscaled: - case Format.B5G6R5Unorm: - case Format.B5G5R5A1Unorm: - case Format.A1B5G5R5Unorm: - return 2; - - case Format.R32Float: - case Format.R32Uint: - case Format.R32Sint: - case Format.R32G32Float: - case Format.R32G32Uint: - case Format.R32G32Sint: - case Format.R32G32B32Float: - case Format.R32G32B32Uint: - case Format.R32G32B32Sint: - case Format.R32G32B32A32Float: - case Format.R32G32B32A32Uint: - case Format.R32G32B32A32Sint: - case Format.R10G10B10A2Unorm: - case Format.R10G10B10A2Uint: - case Format.R11G11B10Float: - case Format.R9G9B9E5Float: - case Format.R32Uscaled: - case Format.R32Sscaled: - case Format.R32G32Uscaled: - case Format.R32G32Sscaled: - case Format.R32G32B32Uscaled: - case Format.R32G32B32Sscaled: - case Format.R32G32B32A32Uscaled: - case Format.R32G32B32A32Sscaled: - case Format.R10G10B10A2Snorm: - case Format.R10G10B10A2Sint: - case Format.R10G10B10A2Uscaled: - case Format.R10G10B10A2Sscaled: - return 4; - - case Format.S8Uint: - return 1; - case Format.D16Unorm: - return 2; - case Format.S8UintD24Unorm: - case Format.D32Float: - case Format.D24UnormS8Uint: - return 4; - case Format.D32FloatS8Uint: - return 8; - - case Format.Bc1RgbaUnorm: - case Format.Bc1RgbaSrgb: - return 8; - - case Format.Bc2Unorm: - case Format.Bc3Unorm: - case Format.Bc2Srgb: - case Format.Bc3Srgb: - case Format.Bc4Unorm: - case Format.Bc4Snorm: - case Format.Bc5Unorm: - case Format.Bc5Snorm: - case Format.Bc7Unorm: - case Format.Bc7Srgb: - case Format.Bc6HSfloat: - case Format.Bc6HUfloat: - return 16; - - case Format.Etc2RgbUnorm: - case Format.Etc2RgbPtaUnorm: - case Format.Etc2RgbSrgb: - case Format.Etc2RgbPtaSrgb: - return 8; - - case Format.Etc2RgbaUnorm: - case Format.Etc2RgbaSrgb: - return 16; - - case Format.Astc4x4Unorm: - case Format.Astc5x4Unorm: - case Format.Astc5x5Unorm: - case Format.Astc6x5Unorm: - case Format.Astc6x6Unorm: - case Format.Astc8x5Unorm: - case Format.Astc8x6Unorm: - case Format.Astc8x8Unorm: - case Format.Astc10x5Unorm: - case Format.Astc10x6Unorm: - case Format.Astc10x8Unorm: - case Format.Astc10x10Unorm: - case Format.Astc12x10Unorm: - case Format.Astc12x12Unorm: - case Format.Astc4x4Srgb: - case Format.Astc5x4Srgb: - case Format.Astc5x5Srgb: - case Format.Astc6x5Srgb: - case Format.Astc6x6Srgb: - case Format.Astc8x5Srgb: - case Format.Astc8x6Srgb: - case Format.Astc8x8Srgb: - case Format.Astc10x5Srgb: - case Format.Astc10x6Srgb: - case Format.Astc10x8Srgb: - case Format.Astc10x10Srgb: - case Format.Astc12x10Srgb: - case Format.Astc12x12Srgb: - return 16; - } - - return 1; - } - - /// <summary> - /// Checks if the texture format is valid to use as image format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture can be used as image, false otherwise</returns> - public static bool IsImageCompatible(this Format format) - { - switch (format) - { - case Format.R8Unorm: - case Format.R8Snorm: - case Format.R8Uint: - case Format.R8Sint: - case Format.R16Float: - case Format.R16Unorm: - case Format.R16Snorm: - case Format.R16Uint: - case Format.R16Sint: - case Format.R32Float: - case Format.R32Uint: - case Format.R32Sint: - case Format.R8G8Unorm: - case Format.R8G8Snorm: - case Format.R8G8Uint: - case Format.R8G8Sint: - case Format.R16G16Float: - case Format.R16G16Unorm: - case Format.R16G16Snorm: - case Format.R16G16Uint: - case Format.R16G16Sint: - case Format.R32G32Float: - case Format.R32G32Uint: - case Format.R32G32Sint: - case Format.R8G8B8A8Unorm: - case Format.R8G8B8A8Snorm: - case Format.R8G8B8A8Uint: - case Format.R8G8B8A8Sint: - case Format.R16G16B16A16Float: - case Format.R16G16B16A16Unorm: - case Format.R16G16B16A16Snorm: - case Format.R16G16B16A16Uint: - case Format.R16G16B16A16Sint: - case Format.R32G32B32A32Float: - case Format.R32G32B32A32Uint: - case Format.R32G32B32A32Sint: - case Format.R10G10B10A2Unorm: - case Format.R10G10B10A2Uint: - case Format.R11G11B10Float: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is valid to use as render target color format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture can be used as render target, false otherwise</returns> - public static bool IsRtColorCompatible(this Format format) - { - switch (format) - { - case Format.R32G32B32A32Float: - case Format.R32G32B32A32Sint: - case Format.R32G32B32A32Uint: - case Format.R16G16B16A16Unorm: - case Format.R16G16B16A16Snorm: - case Format.R16G16B16A16Sint: - case Format.R16G16B16A16Uint: - case Format.R16G16B16A16Float: - case Format.R32G32Float: - case Format.R32G32Sint: - case Format.R32G32Uint: - case Format.B8G8R8A8Unorm: - case Format.B8G8R8A8Srgb: - case Format.R10G10B10A2Unorm: - case Format.R10G10B10A2Uint: - case Format.R8G8B8A8Unorm: - case Format.R8G8B8A8Srgb: - case Format.R8G8B8A8Snorm: - case Format.R8G8B8A8Sint: - case Format.R8G8B8A8Uint: - case Format.R16G16Unorm: - case Format.R16G16Snorm: - case Format.R16G16Sint: - case Format.R16G16Uint: - case Format.R16G16Float: - case Format.R11G11B10Float: - case Format.R32Sint: - case Format.R32Uint: - case Format.R32Float: - case Format.B5G6R5Unorm: - case Format.B5G5R5A1Unorm: - case Format.R8G8Unorm: - case Format.R8G8Snorm: - case Format.R8G8Sint: - case Format.R8G8Uint: - case Format.R16Unorm: - case Format.R16Snorm: - case Format.R16Sint: - case Format.R16Uint: - case Format.R16Float: - case Format.R8Unorm: - case Format.R8Snorm: - case Format.R8Sint: - case Format.R8Uint: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is 16 bit packed. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is 16 bit packed, false otherwise</returns> - public static bool Is16BitPacked(this Format format) - { - switch (format) - { - case Format.B5G6R5Unorm: - case Format.B5G5R5A1Unorm: - case Format.R5G5B5X1Unorm: - case Format.R5G5B5A1Unorm: - case Format.R5G6B5Unorm: - case Format.R4G4B4A4Unorm: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is an ASTC format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is an ASTC format, false otherwise</returns> - public static bool IsAstc(this Format format) - { - return format.IsAstcUnorm() || format.IsAstcSrgb(); - } - - /// <summary> - /// Checks if the texture format is an ASTC Unorm format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is an ASTC Unorm format, false otherwise</returns> - public static bool IsAstcUnorm(this Format format) - { - switch (format) - { - case Format.Astc4x4Unorm: - case Format.Astc5x4Unorm: - case Format.Astc5x5Unorm: - case Format.Astc6x5Unorm: - case Format.Astc6x6Unorm: - case Format.Astc8x5Unorm: - case Format.Astc8x6Unorm: - case Format.Astc8x8Unorm: - case Format.Astc10x5Unorm: - case Format.Astc10x6Unorm: - case Format.Astc10x8Unorm: - case Format.Astc10x10Unorm: - case Format.Astc12x10Unorm: - case Format.Astc12x12Unorm: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is an ASTC SRGB format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is an ASTC SRGB format, false otherwise</returns> - public static bool IsAstcSrgb(this Format format) - { - switch (format) - { - case Format.Astc4x4Srgb: - case Format.Astc5x4Srgb: - case Format.Astc5x5Srgb: - case Format.Astc6x5Srgb: - case Format.Astc6x6Srgb: - case Format.Astc8x5Srgb: - case Format.Astc8x6Srgb: - case Format.Astc8x8Srgb: - case Format.Astc10x5Srgb: - case Format.Astc10x6Srgb: - case Format.Astc10x8Srgb: - case Format.Astc10x10Srgb: - case Format.Astc12x10Srgb: - case Format.Astc12x12Srgb: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is an ETC2 format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is an ETC2 format, false otherwise</returns> - public static bool IsEtc2(this Format format) - { - switch (format) - { - case Format.Etc2RgbaSrgb: - case Format.Etc2RgbaUnorm: - case Format.Etc2RgbPtaSrgb: - case Format.Etc2RgbPtaUnorm: - case Format.Etc2RgbSrgb: - case Format.Etc2RgbUnorm: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is a BGR format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is a BGR format, false otherwise</returns> - public static bool IsBgr(this Format format) - { - switch (format) - { - case Format.B5G6R5Unorm: - case Format.B5G5R5A1Unorm: - case Format.B8G8R8A8Unorm: - case Format.B8G8R8A8Srgb: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is a depth, stencil or depth-stencil format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the format is a depth, stencil or depth-stencil format, false otherwise</returns> - public static bool IsDepthOrStencil(this Format format) - { - switch (format) - { - case Format.D16Unorm: - case Format.D24UnormS8Uint: - case Format.S8UintD24Unorm: - case Format.D32Float: - case Format.D32FloatS8Uint: - case Format.S8Uint: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is an unsigned integer color format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is an unsigned integer color format, false otherwise</returns> - public static bool IsUint(this Format format) - { - switch (format) - { - case Format.R8Uint: - case Format.R16Uint: - case Format.R32Uint: - case Format.R8G8Uint: - case Format.R16G16Uint: - case Format.R32G32Uint: - case Format.R8G8B8Uint: - case Format.R16G16B16Uint: - case Format.R32G32B32Uint: - case Format.R8G8B8A8Uint: - case Format.R16G16B16A16Uint: - case Format.R32G32B32A32Uint: - case Format.R10G10B10A2Uint: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is a signed integer color format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is a signed integer color format, false otherwise</returns> - public static bool IsSint(this Format format) - { - switch (format) - { - case Format.R8Sint: - case Format.R16Sint: - case Format.R32Sint: - case Format.R8G8Sint: - case Format.R16G16Sint: - case Format.R32G32Sint: - case Format.R8G8B8Sint: - case Format.R16G16B16Sint: - case Format.R32G32B32Sint: - case Format.R8G8B8A8Sint: - case Format.R16G16B16A16Sint: - case Format.R32G32B32A32Sint: - case Format.R10G10B10A2Sint: - return true; - } - - return false; - } - - /// <summary> - /// Checks if the texture format is an integer color format. - /// </summary> - /// <param name="format">Texture format</param> - /// <returns>True if the texture format is an integer color format, false otherwise</returns> - public static bool IsInteger(this Format format) - { - return format.IsUint() || format.IsSint(); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/FrontFace.cs b/Ryujinx.Graphics.GAL/FrontFace.cs deleted file mode 100644 index aa6bfdc5..00000000 --- a/Ryujinx.Graphics.GAL/FrontFace.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum FrontFace - { - Clockwise = 0x900, - CounterClockwise = 0x901 - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/HardwareInfo.cs b/Ryujinx.Graphics.GAL/HardwareInfo.cs deleted file mode 100644 index 4dd6849b..00000000 --- a/Ryujinx.Graphics.GAL/HardwareInfo.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct HardwareInfo - { - public string GpuVendor { get; } - public string GpuModel { get; } - - public HardwareInfo(string gpuVendor, string gpuModel) - { - GpuVendor = gpuVendor; - GpuModel = gpuModel; - } - } -} diff --git a/Ryujinx.Graphics.GAL/ICounterEvent.cs b/Ryujinx.Graphics.GAL/ICounterEvent.cs deleted file mode 100644 index 13b15ae4..00000000 --- a/Ryujinx.Graphics.GAL/ICounterEvent.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface ICounterEvent : IDisposable - { - bool Invalid { get; set; } - - bool ReserveForHostAccess(); - - void Flush(); - } -} diff --git a/Ryujinx.Graphics.GAL/IPipeline.cs b/Ryujinx.Graphics.GAL/IPipeline.cs deleted file mode 100644 index 0a362081..00000000 --- a/Ryujinx.Graphics.GAL/IPipeline.cs +++ /dev/null @@ -1,113 +0,0 @@ -using Ryujinx.Graphics.Shader; -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface IPipeline - { - void Barrier(); - - void BeginTransformFeedback(PrimitiveTopology topology); - - void ClearBuffer(BufferHandle destination, int offset, int size, uint value); - - void ClearRenderTargetColor(int index, int layer, int layerCount, uint componentMask, ColorF color); - - void ClearRenderTargetDepthStencil( - int layer, - int layerCount, - float depthValue, - bool depthMask, - int stencilValue, - int stencilMask); - - void CommandBufferBarrier(); - - void CopyBuffer(BufferHandle source, BufferHandle destination, int srcOffset, int dstOffset, int size); - - void DispatchCompute(int groupsX, int groupsY, int groupsZ); - - void Draw(int vertexCount, int instanceCount, int firstVertex, int firstInstance); - void DrawIndexed( - int indexCount, - int instanceCount, - int firstIndex, - int firstVertex, - int firstInstance); - void DrawIndexedIndirect(BufferRange indirectBuffer); - void DrawIndexedIndirectCount(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride); - void DrawIndirect(BufferRange indirectBuffer); - void DrawIndirectCount(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride); - void DrawTexture(ITexture texture, ISampler sampler, Extents2DF srcRegion, Extents2DF dstRegion); - - void EndTransformFeedback(); - - void SetAlphaTest(bool enable, float reference, CompareOp op); - - void SetBlendState(AdvancedBlendDescriptor blend); - void SetBlendState(int index, BlendDescriptor blend); - - void SetDepthBias(PolygonModeMask enables, float factor, float units, float clamp); - void SetDepthClamp(bool clamp); - void SetDepthMode(DepthMode mode); - void SetDepthTest(DepthTestDescriptor depthTest); - - void SetFaceCulling(bool enable, Face face); - - void SetFrontFace(FrontFace frontFace); - - void SetIndexBuffer(BufferRange buffer, IndexType type); - - void SetImage(int binding, ITexture texture, Format imageFormat); - - void SetLineParameters(float width, bool smooth); - - void SetLogicOpState(bool enable, LogicalOp op); - - void SetMultisampleState(MultisampleDescriptor multisample); - - void SetPatchParameters(int vertices, ReadOnlySpan<float> defaultOuterLevel, ReadOnlySpan<float> defaultInnerLevel); - void SetPointParameters(float size, bool isProgramPointSize, bool enablePointSprite, Origin origin); - - void SetPolygonMode(PolygonMode frontMode, PolygonMode backMode); - - void SetPrimitiveRestart(bool enable, int index); - - void SetPrimitiveTopology(PrimitiveTopology topology); - - void SetProgram(IProgram program); - - void SetRasterizerDiscard(bool discard); - - void SetRenderTargetScale(float scale); - void SetRenderTargetColorMasks(ReadOnlySpan<uint> componentMask); - void SetRenderTargets(ITexture[] colors, ITexture depthStencil); - - void SetScissors(ReadOnlySpan<Rectangle<int>> regions); - - void SetStencilTest(StencilTestDescriptor stencilTest); - - void SetStorageBuffers(ReadOnlySpan<BufferAssignment> buffers); - - void SetTextureAndSampler(ShaderStage stage, int binding, ITexture texture, ISampler sampler); - - void SetTransformFeedbackBuffers(ReadOnlySpan<BufferRange> buffers); - void SetUniformBuffers(ReadOnlySpan<BufferAssignment> buffers); - - void SetUserClipDistance(int index, bool enableClip); - - void SetVertexAttribs(ReadOnlySpan<VertexAttribDescriptor> vertexAttribs); - void SetVertexBuffers(ReadOnlySpan<VertexBufferDescriptor> vertexBuffers); - - void SetViewports(ReadOnlySpan<Viewport> viewports, bool disableTransform); - - void TextureBarrier(); - void TextureBarrierTiled(); - - bool TryHostConditionalRendering(ICounterEvent value, ulong compare, bool isEqual); - bool TryHostConditionalRendering(ICounterEvent value, ICounterEvent compare, bool isEqual); - void EndHostConditionalRendering(); - - void UpdateRenderScale(ReadOnlySpan<float> scales, int totalCount, int fragmentCount); - } -} diff --git a/Ryujinx.Graphics.GAL/IProgram.cs b/Ryujinx.Graphics.GAL/IProgram.cs deleted file mode 100644 index 272a2f7d..00000000 --- a/Ryujinx.Graphics.GAL/IProgram.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface IProgram : IDisposable - { - ProgramLinkStatus CheckProgramLink(bool blocking); - - byte[] GetBinary(); - } -} diff --git a/Ryujinx.Graphics.GAL/IRenderer.cs b/Ryujinx.Graphics.GAL/IRenderer.cs deleted file mode 100644 index 2af7b5db..00000000 --- a/Ryujinx.Graphics.GAL/IRenderer.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Ryujinx.Common.Configuration; -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface IRenderer : IDisposable - { - event EventHandler<ScreenCaptureImageInfo> ScreenCaptured; - - bool PreferThreading { get; } - - IPipeline Pipeline { get; } - - IWindow Window { get; } - - void BackgroundContextAction(Action action, bool alwaysBackground = false); - - BufferHandle CreateBuffer(int size, BufferHandle storageHint); - - BufferHandle CreateBuffer(int size) - { - return CreateBuffer(size, BufferHandle.Null); - } - - IProgram CreateProgram(ShaderSource[] shaders, ShaderInfo info); - - ISampler CreateSampler(SamplerCreateInfo info); - ITexture CreateTexture(TextureCreateInfo info, float scale); - - void CreateSync(ulong id, bool strict); - - void DeleteBuffer(BufferHandle buffer); - - PinnedSpan<byte> GetBufferData(BufferHandle buffer, int offset, int size); - - Capabilities GetCapabilities(); - ulong GetCurrentSync(); - HardwareInfo GetHardwareInfo(); - - IProgram LoadProgramBinary(byte[] programBinary, bool hasFragmentShader, ShaderInfo info); - - void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan<byte> data); - - void UpdateCounters(); - - void PreFrame(); - - ICounterEvent ReportCounter(CounterType type, EventHandler<ulong> resultHandler, bool hostReserved); - - void ResetCounter(CounterType type); - - void RunLoop(Action gpuLoop) - { - gpuLoop(); - } - - void WaitSync(ulong id); - - void Initialize(GraphicsDebugLevel logLevel); - - void SetInterruptAction(Action<Action> interruptAction); - - void Screenshot(); - } -} diff --git a/Ryujinx.Graphics.GAL/ISampler.cs b/Ryujinx.Graphics.GAL/ISampler.cs deleted file mode 100644 index 3aefc6a7..00000000 --- a/Ryujinx.Graphics.GAL/ISampler.cs +++ /dev/null @@ -1,6 +0,0 @@ -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface ISampler : IDisposable { } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/ITexture.cs b/Ryujinx.Graphics.GAL/ITexture.cs deleted file mode 100644 index 792c863c..00000000 --- a/Ryujinx.Graphics.GAL/ITexture.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Ryujinx.Common.Memory; -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface ITexture - { - int Width { get; } - int Height { get; } - float ScaleFactor { get; } - - void CopyTo(ITexture destination, int firstLayer, int firstLevel); - void CopyTo(ITexture destination, int srcLayer, int dstLayer, int srcLevel, int dstLevel); - void CopyTo(ITexture destination, Extents2D srcRegion, Extents2D dstRegion, bool linearFilter); - - ITexture CreateView(TextureCreateInfo info, int firstLayer, int firstLevel); - - PinnedSpan<byte> GetData(); - PinnedSpan<byte> GetData(int layer, int level); - - void SetData(SpanOrArray<byte> data); - void SetData(SpanOrArray<byte> data, int layer, int level); - void SetData(SpanOrArray<byte> data, int layer, int level, Rectangle<int> region); - void SetStorage(BufferRange buffer); - void Release(); - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/IWindow.cs b/Ryujinx.Graphics.GAL/IWindow.cs deleted file mode 100644 index 1221d685..00000000 --- a/Ryujinx.Graphics.GAL/IWindow.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; - -namespace Ryujinx.Graphics.GAL -{ - public interface IWindow - { - void Present(ITexture texture, ImageCrop crop, Action swapBuffersCallback); - - void SetSize(int width, int height); - - void ChangeVSyncMode(bool vsyncEnabled); - - void SetAntiAliasing(AntiAliasing antialiasing); - void SetScalingFilter(ScalingFilter type); - void SetScalingFilterLevel(float level); - } -} diff --git a/Ryujinx.Graphics.GAL/ImageCrop.cs b/Ryujinx.Graphics.GAL/ImageCrop.cs deleted file mode 100644 index e8220974..00000000 --- a/Ryujinx.Graphics.GAL/ImageCrop.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct ImageCrop - { - public int Left { get; } - public int Right { get; } - public int Top { get; } - public int Bottom { get; } - public bool FlipX { get; } - public bool FlipY { get; } - public bool IsStretched { get; } - public float AspectRatioX { get; } - public float AspectRatioY { get; } - - public ImageCrop( - int left, - int right, - int top, - int bottom, - bool flipX, - bool flipY, - bool isStretched, - float aspectRatioX, - float aspectRatioY) - { - Left = left; - Right = right; - Top = top; - Bottom = bottom; - FlipX = flipX; - FlipY = flipY; - IsStretched = isStretched; - AspectRatioX = aspectRatioX; - AspectRatioY = aspectRatioY; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/IndexType.cs b/Ryujinx.Graphics.GAL/IndexType.cs deleted file mode 100644 index 4abf28d9..00000000 --- a/Ryujinx.Graphics.GAL/IndexType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum IndexType - { - UByte, - UShort, - UInt - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/LogicalOp.cs b/Ryujinx.Graphics.GAL/LogicalOp.cs deleted file mode 100644 index 848215d0..00000000 --- a/Ryujinx.Graphics.GAL/LogicalOp.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum LogicalOp - { - Clear = 0x1500, - And = 0x1501, - AndReverse = 0x1502, - Copy = 0x1503, - AndInverted = 0x1504, - Noop = 0x1505, - Xor = 0x1506, - Or = 0x1507, - Nor = 0x1508, - Equiv = 0x1509, - Invert = 0x150A, - OrReverse = 0x150B, - CopyInverted = 0x150C, - OrInverted = 0x150D, - Nand = 0x150E, - Set = 0x150F - } -} diff --git a/Ryujinx.Graphics.GAL/MagFilter.cs b/Ryujinx.Graphics.GAL/MagFilter.cs deleted file mode 100644 index f20d095e..00000000 --- a/Ryujinx.Graphics.GAL/MagFilter.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum MagFilter - { - Nearest = 1, - Linear - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/MinFilter.cs b/Ryujinx.Graphics.GAL/MinFilter.cs deleted file mode 100644 index b7a0740b..00000000 --- a/Ryujinx.Graphics.GAL/MinFilter.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum MinFilter - { - Nearest = 1, - Linear, - NearestMipmapNearest, - LinearMipmapNearest, - NearestMipmapLinear, - LinearMipmapLinear - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/MultisampleDescriptor.cs b/Ryujinx.Graphics.GAL/MultisampleDescriptor.cs deleted file mode 100644 index a6fb65aa..00000000 --- a/Ryujinx.Graphics.GAL/MultisampleDescriptor.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct MultisampleDescriptor - { - public bool AlphaToCoverageEnable { get; } - public bool AlphaToCoverageDitherEnable { get; } - public bool AlphaToOneEnable { get; } - - public MultisampleDescriptor( - bool alphaToCoverageEnable, - bool alphaToCoverageDitherEnable, - bool alphaToOneEnable) - { - AlphaToCoverageEnable = alphaToCoverageEnable; - AlphaToCoverageDitherEnable = alphaToCoverageDitherEnable; - AlphaToOneEnable = alphaToOneEnable; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs b/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs deleted file mode 100644 index 24b0af2d..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs +++ /dev/null @@ -1,194 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - /// <summary> - /// Buffer handles given to the client are not the same as those provided by the backend, - /// as their handle is created at a later point on the queue. - /// The handle returned is a unique identifier that will map to the real buffer when it is available. - /// Note that any uses within the queue should be safe, but outside you must use MapBufferBlocking. - /// </summary> - class BufferMap - { - private ulong _bufferHandle = 0; - - private Dictionary<BufferHandle, BufferHandle> _bufferMap = new Dictionary<BufferHandle, BufferHandle>(); - private HashSet<BufferHandle> _inFlight = new HashSet<BufferHandle>(); - private AutoResetEvent _inFlightChanged = new AutoResetEvent(false); - - internal BufferHandle CreateBufferHandle() - { - ulong handle64 = Interlocked.Increment(ref _bufferHandle); - - BufferHandle threadedHandle = Unsafe.As<ulong, BufferHandle>(ref handle64); - - lock (_inFlight) - { - _inFlight.Add(threadedHandle); - } - - return threadedHandle; - } - - internal void AssignBuffer(BufferHandle threadedHandle, BufferHandle realHandle) - { - lock (_bufferMap) - { - _bufferMap[threadedHandle] = realHandle; - } - - lock (_inFlight) - { - _inFlight.Remove(threadedHandle); - } - - _inFlightChanged.Set(); - } - - internal void UnassignBuffer(BufferHandle threadedHandle) - { - lock (_bufferMap) - { - _bufferMap.Remove(threadedHandle); - } - } - - internal BufferHandle MapBuffer(BufferHandle handle) - { - // Maps a threaded buffer to a backend one. - // Threaded buffers are returned on creation as the buffer - // isn't actually created until the queue runs the command. - - BufferHandle result; - - lock (_bufferMap) - { - if (!_bufferMap.TryGetValue(handle, out result)) - { - result = BufferHandle.Null; - } - - return result; - } - } - - internal BufferHandle MapBufferBlocking(BufferHandle handle) - { - // Blocks until the handle is available. - - BufferHandle result; - - lock (_bufferMap) - { - if (_bufferMap.TryGetValue(handle, out result)) - { - return result; - } - } - - bool signal = false; - - while (true) - { - lock (_inFlight) - { - if (!_inFlight.Contains(handle)) - { - break; - } - } - - _inFlightChanged.WaitOne(); - signal = true; - } - - if (signal) - { - // Signal other threads which might still be waiting. - _inFlightChanged.Set(); - } - - return MapBuffer(handle); - } - - internal BufferRange MapBufferRange(BufferRange range) - { - return new BufferRange(MapBuffer(range.Handle), range.Offset, range.Size); - } - - internal Span<BufferRange> MapBufferRanges(Span<BufferRange> ranges) - { - // Rewrite the buffer ranges to point to the mapped handles. - - lock (_bufferMap) - { - for (int i = 0; i < ranges.Length; i++) - { - ref BufferRange range = ref ranges[i]; - BufferHandle result; - - if (!_bufferMap.TryGetValue(range.Handle, out result)) - { - result = BufferHandle.Null; - } - - range = new BufferRange(result, range.Offset, range.Size); - } - } - - return ranges; - } - - internal Span<BufferAssignment> MapBufferRanges(Span<BufferAssignment> ranges) - { - // Rewrite the buffer ranges to point to the mapped handles. - - lock (_bufferMap) - { - for (int i = 0; i < ranges.Length; i++) - { - ref BufferAssignment assignment = ref ranges[i]; - BufferRange range = assignment.Range; - BufferHandle result; - - if (!_bufferMap.TryGetValue(range.Handle, out result)) - { - result = BufferHandle.Null; - } - - assignment = new BufferAssignment(ranges[i].Binding, new BufferRange(result, range.Offset, range.Size)); - } - } - - return ranges; - } - - internal Span<VertexBufferDescriptor> MapBufferRanges(Span<VertexBufferDescriptor> ranges) - { - // Rewrite the buffer ranges to point to the mapped handles. - - lock (_bufferMap) - { - for (int i = 0; i < ranges.Length; i++) - { - BufferRange range = ranges[i].Buffer; - BufferHandle result; - - if (!_bufferMap.TryGetValue(range.Handle, out result)) - { - result = BufferHandle.Null; - } - - range = new BufferRange(result, range.Offset, range.Size); - - ranges[i] = new VertexBufferDescriptor(range, ranges[i].Stride, ranges[i].Divisor); - } - } - - return ranges; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs b/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs deleted file mode 100644 index 063b7edf..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs +++ /dev/null @@ -1,149 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Commands; -using Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer; -using Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent; -using Ryujinx.Graphics.GAL.Multithreading.Commands.Program; -using Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer; -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.Linq; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - static class CommandHelper - { - private delegate void CommandDelegate(Span<byte> memory, ThreadedRenderer threaded, IRenderer renderer); - - private static int _totalCommands = (int)Enum.GetValues<CommandType>().Max() + 1; - private static CommandDelegate[] _lookup = new CommandDelegate[_totalCommands]; - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static ref T GetCommand<T>(Span<byte> memory) - { - return ref Unsafe.As<byte, T>(ref MemoryMarshal.GetReference(memory)); - } - - public static int GetMaxCommandSize() - { - return InitLookup() + 1; // 1 byte reserved for command size. - } - - private static int InitLookup() - { - int maxCommandSize = 0; - - void Register<T>(CommandType commandType) where T : unmanaged, IGALCommand, IGALCommand<T> - { - maxCommandSize = Math.Max(maxCommandSize, Unsafe.SizeOf<T>()); - _lookup[(int)commandType] = (memory, threaded, renderer) => T.Run(ref GetCommand<T>(memory), threaded, renderer); - } - - Register<ActionCommand>(CommandType.Action); - Register<CreateBufferCommand>(CommandType.CreateBuffer); - Register<CreateProgramCommand>(CommandType.CreateProgram); - Register<CreateSamplerCommand>(CommandType.CreateSampler); - Register<CreateSyncCommand>(CommandType.CreateSync); - Register<CreateTextureCommand>(CommandType.CreateTexture); - Register<GetCapabilitiesCommand>(CommandType.GetCapabilities); - Register<PreFrameCommand>(CommandType.PreFrame); - Register<ReportCounterCommand>(CommandType.ReportCounter); - Register<ResetCounterCommand>(CommandType.ResetCounter); - Register<UpdateCountersCommand>(CommandType.UpdateCounters); - - Register<BufferDisposeCommand>(CommandType.BufferDispose); - Register<BufferGetDataCommand>(CommandType.BufferGetData); - Register<BufferSetDataCommand>(CommandType.BufferSetData); - - Register<CounterEventDisposeCommand>(CommandType.CounterEventDispose); - Register<CounterEventFlushCommand>(CommandType.CounterEventFlush); - - Register<ProgramDisposeCommand>(CommandType.ProgramDispose); - Register<ProgramGetBinaryCommand>(CommandType.ProgramGetBinary); - Register<ProgramCheckLinkCommand>(CommandType.ProgramCheckLink); - - Register<SamplerDisposeCommand>(CommandType.SamplerDispose); - - Register<TextureCopyToCommand>(CommandType.TextureCopyTo); - Register<TextureCopyToScaledCommand>(CommandType.TextureCopyToScaled); - Register<TextureCopyToSliceCommand>(CommandType.TextureCopyToSlice); - Register<TextureCreateViewCommand>(CommandType.TextureCreateView); - Register<TextureGetDataCommand>(CommandType.TextureGetData); - Register<TextureGetDataSliceCommand>(CommandType.TextureGetDataSlice); - Register<TextureReleaseCommand>(CommandType.TextureRelease); - Register<TextureSetDataCommand>(CommandType.TextureSetData); - Register<TextureSetDataSliceCommand>(CommandType.TextureSetDataSlice); - Register<TextureSetDataSliceRegionCommand>(CommandType.TextureSetDataSliceRegion); - Register<TextureSetStorageCommand>(CommandType.TextureSetStorage); - - Register<WindowPresentCommand>(CommandType.WindowPresent); - - Register<BarrierCommand>(CommandType.Barrier); - Register<BeginTransformFeedbackCommand>(CommandType.BeginTransformFeedback); - Register<ClearBufferCommand>(CommandType.ClearBuffer); - Register<ClearRenderTargetColorCommand>(CommandType.ClearRenderTargetColor); - Register<ClearRenderTargetDepthStencilCommand>(CommandType.ClearRenderTargetDepthStencil); - Register<CommandBufferBarrierCommand>(CommandType.CommandBufferBarrier); - Register<CopyBufferCommand>(CommandType.CopyBuffer); - Register<DispatchComputeCommand>(CommandType.DispatchCompute); - Register<DrawCommand>(CommandType.Draw); - Register<DrawIndexedCommand>(CommandType.DrawIndexed); - Register<DrawIndexedIndirectCommand>(CommandType.DrawIndexedIndirect); - Register<DrawIndexedIndirectCountCommand>(CommandType.DrawIndexedIndirectCount); - Register<DrawIndirectCommand>(CommandType.DrawIndirect); - Register<DrawIndirectCountCommand>(CommandType.DrawIndirectCount); - Register<DrawTextureCommand>(CommandType.DrawTexture); - Register<EndHostConditionalRenderingCommand>(CommandType.EndHostConditionalRendering); - Register<EndTransformFeedbackCommand>(CommandType.EndTransformFeedback); - Register<SetAlphaTestCommand>(CommandType.SetAlphaTest); - Register<SetBlendStateAdvancedCommand>(CommandType.SetBlendStateAdvanced); - Register<SetBlendStateCommand>(CommandType.SetBlendState); - Register<SetDepthBiasCommand>(CommandType.SetDepthBias); - Register<SetDepthClampCommand>(CommandType.SetDepthClamp); - Register<SetDepthModeCommand>(CommandType.SetDepthMode); - Register<SetDepthTestCommand>(CommandType.SetDepthTest); - Register<SetFaceCullingCommand>(CommandType.SetFaceCulling); - Register<SetFrontFaceCommand>(CommandType.SetFrontFace); - Register<SetStorageBuffersCommand>(CommandType.SetStorageBuffers); - Register<SetTransformFeedbackBuffersCommand>(CommandType.SetTransformFeedbackBuffers); - Register<SetUniformBuffersCommand>(CommandType.SetUniformBuffers); - Register<SetImageCommand>(CommandType.SetImage); - Register<SetIndexBufferCommand>(CommandType.SetIndexBuffer); - Register<SetLineParametersCommand>(CommandType.SetLineParameters); - Register<SetLogicOpStateCommand>(CommandType.SetLogicOpState); - Register<SetMultisampleStateCommand>(CommandType.SetMultisampleState); - Register<SetPatchParametersCommand>(CommandType.SetPatchParameters); - Register<SetPointParametersCommand>(CommandType.SetPointParameters); - Register<SetPolygonModeCommand>(CommandType.SetPolygonMode); - Register<SetPrimitiveRestartCommand>(CommandType.SetPrimitiveRestart); - Register<SetPrimitiveTopologyCommand>(CommandType.SetPrimitiveTopology); - Register<SetProgramCommand>(CommandType.SetProgram); - Register<SetRasterizerDiscardCommand>(CommandType.SetRasterizerDiscard); - Register<SetRenderTargetColorMasksCommand>(CommandType.SetRenderTargetColorMasks); - Register<SetRenderTargetScaleCommand>(CommandType.SetRenderTargetScale); - Register<SetRenderTargetsCommand>(CommandType.SetRenderTargets); - Register<SetScissorsCommand>(CommandType.SetScissor); - Register<SetStencilTestCommand>(CommandType.SetStencilTest); - Register<SetTextureAndSamplerCommand>(CommandType.SetTextureAndSampler); - Register<SetUserClipDistanceCommand>(CommandType.SetUserClipDistance); - Register<SetVertexAttribsCommand>(CommandType.SetVertexAttribs); - Register<SetVertexBuffersCommand>(CommandType.SetVertexBuffers); - Register<SetViewportsCommand>(CommandType.SetViewports); - Register<TextureBarrierCommand>(CommandType.TextureBarrier); - Register<TextureBarrierTiledCommand>(CommandType.TextureBarrierTiled); - Register<TryHostConditionalRenderingCommand>(CommandType.TryHostConditionalRendering); - Register<TryHostConditionalRenderingFlushCommand>(CommandType.TryHostConditionalRenderingFlush); - Register<UpdateRenderScaleCommand>(CommandType.UpdateRenderScale); - - return maxCommandSize; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void RunCommand(Span<byte> memory, ThreadedRenderer threaded, IRenderer renderer) - { - _lookup[memory[memory.Length - 1]](memory, threaded, renderer); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs b/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs deleted file mode 100644 index 61e729b4..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs +++ /dev/null @@ -1,102 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading -{ - enum CommandType : byte - { - Action, - CreateBuffer, - CreateProgram, - CreateSampler, - CreateSync, - CreateTexture, - GetCapabilities, - Unused, - PreFrame, - ReportCounter, - ResetCounter, - UpdateCounters, - - BufferDispose, - BufferGetData, - BufferSetData, - - CounterEventDispose, - CounterEventFlush, - - ProgramDispose, - ProgramGetBinary, - ProgramCheckLink, - - SamplerDispose, - - TextureCopyTo, - TextureCopyToScaled, - TextureCopyToSlice, - TextureCreateView, - TextureGetData, - TextureGetDataSlice, - TextureRelease, - TextureSetData, - TextureSetDataSlice, - TextureSetDataSliceRegion, - TextureSetStorage, - - WindowPresent, - - Barrier, - BeginTransformFeedback, - ClearBuffer, - ClearRenderTargetColor, - ClearRenderTargetDepthStencil, - CommandBufferBarrier, - CopyBuffer, - DispatchCompute, - Draw, - DrawIndexed, - DrawIndexedIndirect, - DrawIndexedIndirectCount, - DrawIndirect, - DrawIndirectCount, - DrawTexture, - EndHostConditionalRendering, - EndTransformFeedback, - SetAlphaTest, - SetBlendStateAdvanced, - SetBlendState, - SetDepthBias, - SetDepthClamp, - SetDepthMode, - SetDepthTest, - SetFaceCulling, - SetFrontFace, - SetStorageBuffers, - SetTransformFeedbackBuffers, - SetUniformBuffers, - SetImage, - SetIndexBuffer, - SetLineParameters, - SetLogicOpState, - SetMultisampleState, - SetPatchParameters, - SetPointParameters, - SetPolygonMode, - SetPrimitiveRestart, - SetPrimitiveTopology, - SetProgram, - SetRasterizerDiscard, - SetRenderTargetColorMasks, - SetRenderTargetScale, - SetRenderTargets, - SetScissor, - SetStencilTest, - SetTextureAndSampler, - SetUserClipDistance, - SetVertexAttribs, - SetVertexBuffers, - SetViewports, - TextureBarrier, - TextureBarrierTiled, - TryHostConditionalRendering, - TryHostConditionalRenderingFlush, - UpdateRenderScale - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs deleted file mode 100644 index 4f8e1b08..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct BarrierCommand : IGALCommand, IGALCommand<BarrierCommand> - { - public CommandType CommandType => CommandType.Barrier; - - public static void Run(ref BarrierCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.Barrier(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs deleted file mode 100644 index 50032635..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct BeginTransformFeedbackCommand : IGALCommand, IGALCommand<BeginTransformFeedbackCommand> - { - public CommandType CommandType => CommandType.BeginTransformFeedback; - private PrimitiveTopology _topology; - - public void Set(PrimitiveTopology topology) - { - _topology = topology; - } - - public static void Run(ref BeginTransformFeedbackCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.BeginTransformFeedback(command._topology); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs deleted file mode 100644 index 5be42fff..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer -{ - struct BufferDisposeCommand : IGALCommand, IGALCommand<BufferDisposeCommand> - { - public CommandType CommandType => CommandType.BufferDispose; - private BufferHandle _buffer; - - public void Set(BufferHandle buffer) - { - _buffer = buffer; - } - - public static void Run(ref BufferDisposeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.DeleteBuffer(threaded.Buffers.MapBuffer(command._buffer)); - threaded.Buffers.UnassignBuffer(command._buffer); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs deleted file mode 100644 index 031c6153..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer -{ - struct BufferGetDataCommand : IGALCommand, IGALCommand<BufferGetDataCommand> - { - public CommandType CommandType => CommandType.BufferGetData; - private BufferHandle _buffer; - private int _offset; - private int _size; - private TableRef<ResultBox<PinnedSpan<byte>>> _result; - - public void Set(BufferHandle buffer, int offset, int size, TableRef<ResultBox<PinnedSpan<byte>>> result) - { - _buffer = buffer; - _offset = offset; - _size = size; - _result = result; - } - - public static void Run(ref BufferGetDataCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - PinnedSpan<byte> result = renderer.GetBufferData(threaded.Buffers.MapBuffer(command._buffer), command._offset, command._size); - - command._result.Get(threaded).Result = result; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs deleted file mode 100644 index dcb8c2f2..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer -{ - struct BufferSetDataCommand : IGALCommand, IGALCommand<BufferSetDataCommand> - { - public CommandType CommandType => CommandType.BufferSetData; - private BufferHandle _buffer; - private int _offset; - private SpanRef<byte> _data; - - public void Set(BufferHandle buffer, int offset, SpanRef<byte> data) - { - _buffer = buffer; - _offset = offset; - _data = data; - } - - public static void Run(ref BufferSetDataCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ReadOnlySpan<byte> data = command._data.Get(threaded); - renderer.SetBufferData(threaded.Buffers.MapBuffer(command._buffer), command._offset, data); - command._data.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs deleted file mode 100644 index 1d70460a..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct ClearBufferCommand : IGALCommand, IGALCommand<ClearBufferCommand> - { - public CommandType CommandType => CommandType.ClearBuffer; - private BufferHandle _destination; - private int _offset; - private int _size; - private uint _value; - - public void Set(BufferHandle destination, int offset, int size, uint value) - { - _destination = destination; - _offset = offset; - _size = size; - _value = value; - } - - public static void Run(ref ClearBufferCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.ClearBuffer(threaded.Buffers.MapBuffer(command._destination), command._offset, command._size, command._value); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs deleted file mode 100644 index f8c2bdfe..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct ClearRenderTargetColorCommand : IGALCommand, IGALCommand<ClearRenderTargetColorCommand> - { - public CommandType CommandType => CommandType.ClearRenderTargetColor; - private int _index; - private int _layer; - private int _layerCount; - private uint _componentMask; - private ColorF _color; - - public void Set(int index, int layer, int layerCount, uint componentMask, ColorF color) - { - _index = index; - _layer = layer; - _layerCount = layerCount; - _componentMask = componentMask; - _color = color; - } - - public static void Run(ref ClearRenderTargetColorCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.ClearRenderTargetColor(command._index, command._layer, command._layerCount, command._componentMask, command._color); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs deleted file mode 100644 index ca86673e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct ClearRenderTargetDepthStencilCommand : IGALCommand, IGALCommand<ClearRenderTargetDepthStencilCommand> - { - public CommandType CommandType => CommandType.ClearRenderTargetDepthStencil; - private int _layer; - private int _layerCount; - private float _depthValue; - private bool _depthMask; - private int _stencilValue; - private int _stencilMask; - - public void Set(int layer, int layerCount, float depthValue, bool depthMask, int stencilValue, int stencilMask) - { - _layer = layer; - _layerCount = layerCount; - _depthValue = depthValue; - _depthMask = depthMask; - _stencilValue = stencilValue; - _stencilMask = stencilMask; - } - - public static void Run(ref ClearRenderTargetDepthStencilCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.ClearRenderTargetDepthStencil(command._layer, command._layerCount, command._depthValue, command._depthMask, command._stencilValue, command._stencilMask); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs deleted file mode 100644 index ad3ab0f8..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct CommandBufferBarrierCommand : IGALCommand, IGALCommand<CommandBufferBarrierCommand> - { - public CommandType CommandType => CommandType.CommandBufferBarrier; - - public static void Run(ref CommandBufferBarrierCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.CommandBufferBarrier(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs deleted file mode 100644 index 43111bce..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct CopyBufferCommand : IGALCommand, IGALCommand<CopyBufferCommand> - { - public CommandType CommandType => CommandType.CopyBuffer; - private BufferHandle _source; - private BufferHandle _destination; - private int _srcOffset; - private int _dstOffset; - private int _size; - - public void Set(BufferHandle source, BufferHandle destination, int srcOffset, int dstOffset, int size) - { - _source = source; - _destination = destination; - _srcOffset = srcOffset; - _dstOffset = dstOffset; - _size = size; - } - - public static void Run(ref CopyBufferCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.CopyBuffer(threaded.Buffers.MapBuffer(command._source), threaded.Buffers.MapBuffer(command._destination), command._srcOffset, command._dstOffset, command._size); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs deleted file mode 100644 index e5250212..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent -{ - struct CounterEventDisposeCommand : IGALCommand, IGALCommand<CounterEventDisposeCommand> - { - public CommandType CommandType => CommandType.CounterEventDispose; - private TableRef<ThreadedCounterEvent> _event; - - public void Set(TableRef<ThreadedCounterEvent> evt) - { - _event = evt; - } - - public static void Run(ref CounterEventDisposeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._event.Get(threaded).Base.Dispose(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs deleted file mode 100644 index 608cf8f9..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent -{ - struct CounterEventFlushCommand : IGALCommand, IGALCommand<CounterEventFlushCommand> - { - public CommandType CommandType => CommandType.CounterEventFlush; - private TableRef<ThreadedCounterEvent> _event; - - public void Set(TableRef<ThreadedCounterEvent> evt) - { - _event = evt; - } - - public static void Run(ref CounterEventFlushCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._event.Get(threaded).Base.Flush(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs deleted file mode 100644 index 29568837..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DispatchComputeCommand : IGALCommand, IGALCommand<DispatchComputeCommand> - { - public CommandType CommandType => CommandType.DispatchCompute; - private int _groupsX; - private int _groupsY; - private int _groupsZ; - - public void Set(int groupsX, int groupsY, int groupsZ) - { - _groupsX = groupsX; - _groupsY = groupsY; - _groupsZ = groupsZ; - } - - public static void Run(ref DispatchComputeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DispatchCompute(command._groupsX, command._groupsY, command._groupsZ); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs deleted file mode 100644 index 804eaa49..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawIndexedCommand : IGALCommand, IGALCommand<DrawIndexedCommand> - { - public CommandType CommandType => CommandType.DrawIndexed; - private int _indexCount; - private int _instanceCount; - private int _firstIndex; - private int _firstVertex; - private int _firstInstance; - - public void Set(int indexCount, int instanceCount, int firstIndex, int firstVertex, int firstInstance) - { - _indexCount = indexCount; - _instanceCount = instanceCount; - _firstIndex = firstIndex; - _firstVertex = firstVertex; - _firstInstance = firstInstance; - } - - public static void Run(ref DrawIndexedCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DrawIndexed(command._indexCount, command._instanceCount, command._firstIndex, command._firstVertex, command._firstInstance); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs deleted file mode 100644 index 1b28afcd..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawCommand : IGALCommand, IGALCommand<DrawCommand> - { - public CommandType CommandType => CommandType.Draw; - private int _vertexCount; - private int _instanceCount; - private int _firstVertex; - private int _firstInstance; - - public void Set(int vertexCount, int instanceCount, int firstVertex, int firstInstance) - { - _vertexCount = vertexCount; - _instanceCount = instanceCount; - _firstVertex = firstVertex; - _firstInstance = firstInstance; - } - - public static void Run(ref DrawCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.Draw(command._vertexCount, command._instanceCount, command._firstVertex, command._firstInstance); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs deleted file mode 100644 index 521b2f0c..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawIndexedIndirectCommand : IGALCommand, IGALCommand<DrawIndexedIndirectCommand> - { - public CommandType CommandType => CommandType.DrawIndexedIndirect; - private BufferRange _indirectBuffer; - - public void Set(BufferRange indirectBuffer) - { - _indirectBuffer = indirectBuffer; - } - - public static void Run(ref DrawIndexedIndirectCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DrawIndexedIndirect(threaded.Buffers.MapBufferRange(command._indirectBuffer)); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs deleted file mode 100644 index 6bdf376d..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawIndexedIndirectCountCommand : IGALCommand, IGALCommand<DrawIndexedIndirectCountCommand> - { - public CommandType CommandType => CommandType.DrawIndexedIndirectCount; - private BufferRange _indirectBuffer; - private BufferRange _parameterBuffer; - private int _maxDrawCount; - private int _stride; - - public void Set(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride) - { - _indirectBuffer = indirectBuffer; - _parameterBuffer = parameterBuffer; - _maxDrawCount = maxDrawCount; - _stride = stride; - } - - public static void Run(ref DrawIndexedIndirectCountCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DrawIndexedIndirectCount( - threaded.Buffers.MapBufferRange(command._indirectBuffer), - threaded.Buffers.MapBufferRange(command._parameterBuffer), - command._maxDrawCount, - command._stride - ); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs deleted file mode 100644 index e1947084..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawIndirectCommand : IGALCommand, IGALCommand<DrawIndirectCommand> - { - public CommandType CommandType => CommandType.DrawIndirect; - private BufferRange _indirectBuffer; - - public void Set(BufferRange indirectBuffer) - { - _indirectBuffer = indirectBuffer; - } - - public static void Run(ref DrawIndirectCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DrawIndirect(threaded.Buffers.MapBufferRange(command._indirectBuffer)); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs deleted file mode 100644 index ef56ffb2..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawIndirectCountCommand : IGALCommand, IGALCommand<DrawIndirectCountCommand> - { - public CommandType CommandType => CommandType.DrawIndirectCount; - private BufferRange _indirectBuffer; - private BufferRange _parameterBuffer; - private int _maxDrawCount; - private int _stride; - - public void Set(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride) - { - _indirectBuffer = indirectBuffer; - _parameterBuffer = parameterBuffer; - _maxDrawCount = maxDrawCount; - _stride = stride; - } - - public static void Run(ref DrawIndirectCountCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DrawIndirectCount( - threaded.Buffers.MapBufferRange(command._indirectBuffer), - threaded.Buffers.MapBufferRange(command._parameterBuffer), - command._maxDrawCount, - command._stride - ); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs deleted file mode 100644 index b3e9c4b5..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct DrawTextureCommand : IGALCommand, IGALCommand<DrawTextureCommand> - { - public CommandType CommandType => CommandType.DrawTexture; - private TableRef<ITexture> _texture; - private TableRef<ISampler> _sampler; - private Extents2DF _srcRegion; - private Extents2DF _dstRegion; - - public void Set(TableRef<ITexture> texture, TableRef<ISampler> sampler, Extents2DF srcRegion, Extents2DF dstRegion) - { - _texture = texture; - _sampler = sampler; - _srcRegion = srcRegion; - _dstRegion = dstRegion; - } - - public static void Run(ref DrawTextureCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.DrawTexture( - command._texture.GetAs<ThreadedTexture>(threaded)?.Base, - command._sampler.GetAs<ThreadedSampler>(threaded)?.Base, - command._srcRegion, - command._dstRegion); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs deleted file mode 100644 index 877af23b..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct EndHostConditionalRenderingCommand : IGALCommand, IGALCommand<EndHostConditionalRenderingCommand> - { - public CommandType CommandType => CommandType.EndHostConditionalRendering; - - 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 deleted file mode 100644 index 33df325f..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct EndTransformFeedbackCommand : IGALCommand, IGALCommand<EndTransformFeedbackCommand> - { - public CommandType CommandType => CommandType.EndTransformFeedback; - - public static void Run(ref EndTransformFeedbackCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.EndTransformFeedback(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs deleted file mode 100644 index ea831c8d..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - interface IGALCommand - { - CommandType CommandType { get; } - } - - interface IGALCommand<T> 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 deleted file mode 100644 index f3662424..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program -{ - struct ProgramCheckLinkCommand : IGALCommand, IGALCommand<ProgramCheckLinkCommand> - { - public CommandType CommandType => CommandType.ProgramCheckLink; - private TableRef<ThreadedProgram> _program; - private bool _blocking; - private TableRef<ResultBox<ProgramLinkStatus>> _result; - - public void Set(TableRef<ThreadedProgram> program, bool blocking, TableRef<ResultBox<ProgramLinkStatus>> result) - { - _program = program; - _blocking = blocking; - _result = result; - } - - public static void Run(ref ProgramCheckLinkCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ProgramLinkStatus result = command._program.Get(threaded).Base.CheckProgramLink(command._blocking); - - command._result.Get(threaded).Result = result; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs deleted file mode 100644 index d1ec4298..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program -{ - struct ProgramDisposeCommand : IGALCommand, IGALCommand<ProgramDisposeCommand> - { - public CommandType CommandType => CommandType.ProgramDispose; - private TableRef<ThreadedProgram> _program; - - public void Set(TableRef<ThreadedProgram> program) - { - _program = program; - } - - public static void Run(ref ProgramDisposeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._program.Get(threaded).Base.Dispose(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs deleted file mode 100644 index 16963245..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program -{ - struct ProgramGetBinaryCommand : IGALCommand, IGALCommand<ProgramGetBinaryCommand> - { - public CommandType CommandType => CommandType.ProgramGetBinary; - private TableRef<ThreadedProgram> _program; - private TableRef<ResultBox<byte[]>> _result; - - public void Set(TableRef<ThreadedProgram> program, TableRef<ResultBox<byte[]>> result) - { - _program = program; - _result = result; - } - - public static void Run(ref ProgramGetBinaryCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - byte[] result = command._program.Get(threaded).Base.GetBinary(); - - command._result.Get(threaded).Result = result; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs deleted file mode 100644 index 41987da1..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct ActionCommand : IGALCommand, IGALCommand<ActionCommand> - { - public CommandType CommandType => CommandType.Action; - private TableRef<Action> _action; - - public void Set(TableRef<Action> action) - { - _action = action; - } - - public static void Run(ref ActionCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._action.Get(threaded)(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs deleted file mode 100644 index b36d8bbe..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct CreateBufferCommand : IGALCommand, IGALCommand<CreateBufferCommand> - { - public CommandType CommandType => CommandType.CreateBuffer; - private BufferHandle _threadedHandle; - private int _size; - private BufferHandle _storageHint; - - public void Set(BufferHandle threadedHandle, int size, BufferHandle storageHint) - { - _threadedHandle = threadedHandle; - _size = size; - _storageHint = storageHint; - } - - public static void Run(ref CreateBufferCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - BufferHandle hint = BufferHandle.Null; - - if (command._storageHint != BufferHandle.Null) - { - hint = threaded.Buffers.MapBuffer(command._storageHint); - } - - threaded.Buffers.AssignBuffer(command._threadedHandle, renderer.CreateBuffer(command._size, hint)); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs deleted file mode 100644 index 19563e12..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct CreateProgramCommand : IGALCommand, IGALCommand<CreateProgramCommand> - { - public CommandType CommandType => CommandType.CreateProgram; - private TableRef<IProgramRequest> _request; - - public void Set(TableRef<IProgramRequest> request) - { - _request = request; - } - - public static void Run(ref CreateProgramCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - IProgramRequest request = command._request.Get(threaded); - - if (request.Threaded.Base == null) - { - request.Threaded.Base = request.Create(renderer); - } - - threaded.Programs.ProcessQueue(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs deleted file mode 100644 index 6ab862d4..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct CreateSamplerCommand : IGALCommand, IGALCommand<CreateSamplerCommand> - { - public CommandType CommandType => CommandType.CreateSampler; - private TableRef<ThreadedSampler> _sampler; - private SamplerCreateInfo _info; - - public void Set(TableRef<ThreadedSampler> sampler, SamplerCreateInfo info) - { - _sampler = sampler; - _info = info; - } - - public static void Run(ref CreateSamplerCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._sampler.Get(threaded).Base = renderer.CreateSampler(command._info); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs deleted file mode 100644 index 32afb051..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct CreateSyncCommand : IGALCommand, IGALCommand<CreateSyncCommand> - { - public CommandType CommandType => CommandType.CreateSync; - private ulong _id; - private bool _strict; - - public void Set(ulong id, bool strict) - { - _id = id; - _strict = strict; - } - - public static void Run(ref CreateSyncCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.CreateSync(command._id, command._strict); - - threaded.Sync.AssignSync(command._id); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs deleted file mode 100644 index 0347ded4..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct CreateTextureCommand : IGALCommand, IGALCommand<CreateTextureCommand> - { - public CommandType CommandType => CommandType.CreateTexture; - private TableRef<ThreadedTexture> _texture; - private TextureCreateInfo _info; - private float _scale; - - public void Set(TableRef<ThreadedTexture> texture, TextureCreateInfo info, float scale) - { - _texture = texture; - _info = info; - _scale = scale; - } - - public static void Run(ref CreateTextureCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._texture.Get(threaded).Base = renderer.CreateTexture(command._info, command._scale); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs deleted file mode 100644 index 4111dcfd..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct GetCapabilitiesCommand : IGALCommand, IGALCommand<GetCapabilitiesCommand> - { - public CommandType CommandType => CommandType.GetCapabilities; - private TableRef<ResultBox<Capabilities>> _result; - - public void Set(TableRef<ResultBox<Capabilities>> result) - { - _result = result; - } - - public static void Run(ref GetCapabilitiesCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._result.Get(threaded).Result = renderer.GetCapabilities(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs deleted file mode 100644 index 820908f3..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct PreFrameCommand : IGALCommand, IGALCommand<PreFrameCommand> - { - public CommandType CommandType => CommandType.PreFrame; - - public static void Run(ref PreFrameCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.PreFrame(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs deleted file mode 100644 index 4b0210cb..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct ReportCounterCommand : IGALCommand, IGALCommand<ReportCounterCommand> - { - public CommandType CommandType => CommandType.ReportCounter; - private TableRef<ThreadedCounterEvent> _event; - private CounterType _type; - private TableRef<EventHandler<ulong>> _resultHandler; - private bool _hostReserved; - - public void Set(TableRef<ThreadedCounterEvent> evt, CounterType type, TableRef<EventHandler<ulong>> resultHandler, bool hostReserved) - { - _event = evt; - _type = type; - _resultHandler = resultHandler; - _hostReserved = hostReserved; - } - - public static void Run(ref ReportCounterCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedCounterEvent evt = command._event.Get(threaded); - - evt.Create(renderer, command._type, command._resultHandler.Get(threaded), command._hostReserved); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs deleted file mode 100644 index 3d796041..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct ResetCounterCommand : IGALCommand, IGALCommand<ResetCounterCommand> - { - public CommandType CommandType => CommandType.ResetCounter; - private CounterType _type; - - public void Set(CounterType type) - { - _type = type; - } - - public static void Run(ref ResetCounterCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.ResetCounter(command._type); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs deleted file mode 100644 index c7076c0e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer -{ - struct UpdateCountersCommand : IGALCommand, IGALCommand<UpdateCountersCommand> - { - public CommandType CommandType => CommandType.UpdateCounters; - - public static void Run(ref UpdateCountersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.UpdateCounters(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs deleted file mode 100644 index 9485e9a1..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler -{ - struct SamplerDisposeCommand : IGALCommand, IGALCommand<SamplerDisposeCommand> - { - public CommandType CommandType => CommandType.SamplerDispose; - private TableRef<ThreadedSampler> _sampler; - - public void Set(TableRef<ThreadedSampler> sampler) - { - _sampler = sampler; - } - - public static void Run(ref SamplerDisposeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._sampler.Get(threaded).Base.Dispose(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs deleted file mode 100644 index a96879ff..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetAlphaTestCommand : IGALCommand, IGALCommand<SetAlphaTestCommand> - { - public CommandType CommandType => CommandType.SetAlphaTest; - private bool _enable; - private float _reference; - private CompareOp _op; - - public void Set(bool enable, float reference, CompareOp op) - { - _enable = enable; - _reference = reference; - _op = op; - } - - public static void Run(ref SetAlphaTestCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetAlphaTest(command._enable, command._reference, command._op); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateAdvancedCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateAdvancedCommand.cs deleted file mode 100644 index 2ec10a50..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateAdvancedCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetBlendStateAdvancedCommand : IGALCommand, IGALCommand<SetBlendStateAdvancedCommand> - { - public CommandType CommandType => CommandType.SetBlendStateAdvanced; - private AdvancedBlendDescriptor _blend; - - public void Set(AdvancedBlendDescriptor blend) - { - _blend = blend; - } - - public static void Run(ref SetBlendStateAdvancedCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetBlendState(command._blend); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs deleted file mode 100644 index 68e48da5..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetBlendStateCommand : IGALCommand, IGALCommand<SetBlendStateCommand> - { - public CommandType CommandType => CommandType.SetBlendState; - private int _index; - private BlendDescriptor _blend; - - public void Set(int index, BlendDescriptor blend) - { - _index = index; - _blend = blend; - } - - public static void Run(ref SetBlendStateCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetBlendState(command._index, command._blend); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs deleted file mode 100644 index eb8d4a72..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetDepthBiasCommand : IGALCommand, IGALCommand<SetDepthBiasCommand> - { - public CommandType CommandType => CommandType.SetDepthBias; - private PolygonModeMask _enables; - private float _factor; - private float _units; - private float _clamp; - - public void Set(PolygonModeMask enables, float factor, float units, float clamp) - { - _enables = enables; - _factor = factor; - _units = units; - _clamp = clamp; - } - - public static void Run(ref SetDepthBiasCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetDepthBias(command._enables, command._factor, command._units, command._clamp); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs deleted file mode 100644 index 15159cb4..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetDepthClampCommand : IGALCommand, IGALCommand<SetDepthClampCommand> - { - public CommandType CommandType => CommandType.SetDepthClamp; - private bool _clamp; - - public void Set(bool clamp) - { - _clamp = clamp; - } - - public static void Run(ref SetDepthClampCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetDepthClamp(command._clamp); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs deleted file mode 100644 index 3e169164..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetDepthModeCommand : IGALCommand, IGALCommand<SetDepthModeCommand> - { - public CommandType CommandType => CommandType.SetDepthMode; - private DepthMode _mode; - - public void Set(DepthMode mode) - { - _mode = mode; - } - - public static void Run(ref SetDepthModeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetDepthMode(command._mode); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs deleted file mode 100644 index 2abaeb78..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetDepthTestCommand : IGALCommand, IGALCommand<SetDepthTestCommand> - { - public CommandType CommandType => CommandType.SetDepthTest; - private DepthTestDescriptor _depthTest; - - public void Set(DepthTestDescriptor depthTest) - { - _depthTest = depthTest; - } - - public static void Run(ref SetDepthTestCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetDepthTest(command._depthTest); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs deleted file mode 100644 index 54311e95..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetFaceCullingCommand : IGALCommand, IGALCommand<SetFaceCullingCommand> - { - public CommandType CommandType => CommandType.SetFaceCulling; - private bool _enable; - private Face _face; - - public void Set(bool enable, Face face) - { - _enable = enable; - _face = face; - } - - public static void Run(ref SetFaceCullingCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetFaceCulling(command._enable, command._face); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs deleted file mode 100644 index e4d7b814..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetFrontFaceCommand : IGALCommand, IGALCommand<SetFrontFaceCommand> - { - public CommandType CommandType => CommandType.SetFrontFace; - private FrontFace _frontFace; - - public void Set(FrontFace frontFace) - { - _frontFace = frontFace; - } - - public static void Run(ref SetFrontFaceCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetFrontFace(command._frontFace); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs deleted file mode 100644 index 7836acd7..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetImageCommand : IGALCommand, IGALCommand<SetImageCommand> - { - public CommandType CommandType => CommandType.SetImage; - private int _binding; - private TableRef<ITexture> _texture; - private Format _imageFormat; - - public void Set(int binding, TableRef<ITexture> texture, Format imageFormat) - { - _binding = binding; - _texture = texture; - _imageFormat = imageFormat; - } - - public static void Run(ref SetImageCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetImage(command._binding, command._texture.GetAs<ThreadedTexture>(threaded)?.Base, command._imageFormat); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs deleted file mode 100644 index ded44c55..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetIndexBufferCommand : IGALCommand, IGALCommand<SetIndexBufferCommand> - { - public CommandType CommandType => CommandType.SetIndexBuffer; - private BufferRange _buffer; - private IndexType _type; - - public void Set(BufferRange buffer, IndexType type) - { - _buffer = buffer; - _type = type; - } - - public static void Run(ref SetIndexBufferCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - BufferRange range = threaded.Buffers.MapBufferRange(command._buffer); - renderer.Pipeline.SetIndexBuffer(range, command._type); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs deleted file mode 100644 index 68331932..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetLineParametersCommand : IGALCommand, IGALCommand<SetLineParametersCommand> - { - public CommandType CommandType => CommandType.SetLineParameters; - private float _width; - private bool _smooth; - - public void Set(float width, bool smooth) - { - _width = width; - _smooth = smooth; - } - - public static void Run(ref SetLineParametersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetLineParameters(command._width, command._smooth); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs deleted file mode 100644 index 2d7fc169..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetLogicOpStateCommand : IGALCommand, IGALCommand<SetLogicOpStateCommand> - { - public CommandType CommandType => CommandType.SetLogicOpState; - private bool _enable; - private LogicalOp _op; - - public void Set(bool enable, LogicalOp op) - { - _enable = enable; - _op = op; - } - - public static void Run(ref SetLogicOpStateCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetLogicOpState(command._enable, command._op); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs deleted file mode 100644 index f7b4969a..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetMultisampleStateCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetMultisampleStateCommand : IGALCommand, IGALCommand<SetMultisampleStateCommand> - { - public CommandType CommandType => CommandType.SetMultisampleState; - private MultisampleDescriptor _multisample; - - public void Set(MultisampleDescriptor multisample) - { - _multisample = multisample; - } - - public static void Run(ref SetMultisampleStateCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetMultisampleState(command._multisample); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs deleted file mode 100644 index 815bc3c2..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPatchParametersCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Common.Memory; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetPatchParametersCommand : IGALCommand, IGALCommand<SetPatchParametersCommand> - { - public CommandType CommandType => CommandType.SetPatchParameters; - private int _vertices; - private Array4<float> _defaultOuterLevel; - private Array2<float> _defaultInnerLevel; - - public void Set(int vertices, ReadOnlySpan<float> defaultOuterLevel, ReadOnlySpan<float> defaultInnerLevel) - { - _vertices = vertices; - defaultOuterLevel.CopyTo(_defaultOuterLevel.AsSpan()); - defaultInnerLevel.CopyTo(_defaultInnerLevel.AsSpan()); - } - - public static void Run(ref SetPatchParametersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetPatchParameters(command._vertices, command._defaultOuterLevel.AsSpan(), command._defaultInnerLevel.AsSpan()); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs deleted file mode 100644 index e3fad0f8..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetPointParametersCommand : IGALCommand, IGALCommand<SetPointParametersCommand> - { - public CommandType CommandType => CommandType.SetPointParameters; - private float _size; - private bool _isProgramPointSize; - private bool _enablePointSprite; - private Origin _origin; - - public void Set(float size, bool isProgramPointSize, bool enablePointSprite, Origin origin) - { - _size = size; - _isProgramPointSize = isProgramPointSize; - _enablePointSprite = enablePointSprite; - _origin = origin; - } - - public static void Run(ref SetPointParametersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetPointParameters(command._size, command._isProgramPointSize, command._enablePointSprite, command._origin); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs deleted file mode 100644 index ea2f838b..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPolygonModeCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetPolygonModeCommand : IGALCommand, IGALCommand<SetPolygonModeCommand> - { - public CommandType CommandType => CommandType.SetPolygonMode; - private PolygonMode _frontMode; - private PolygonMode _backMode; - - public void Set(PolygonMode frontMode, PolygonMode backMode) - { - _frontMode = frontMode; - _backMode = backMode; - } - - public static void Run(ref SetPolygonModeCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetPolygonMode(command._frontMode, command._backMode); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs deleted file mode 100644 index 26b88b01..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetPrimitiveRestartCommand : IGALCommand, IGALCommand<SetPrimitiveRestartCommand> - { - public CommandType CommandType => CommandType.SetPrimitiveRestart; - private bool _enable; - private int _index; - - public void Set(bool enable, int index) - { - _enable = enable; - _index = index; - } - - public static void Run(ref SetPrimitiveRestartCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetPrimitiveRestart(command._enable, command._index); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs deleted file mode 100644 index 062c4e57..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetPrimitiveTopologyCommand : IGALCommand, IGALCommand<SetPrimitiveTopologyCommand> - { - public CommandType CommandType => CommandType.SetPrimitiveTopology; - private PrimitiveTopology _topology; - - public void Set(PrimitiveTopology topology) - { - _topology = topology; - } - - public static void Run(ref SetPrimitiveTopologyCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetPrimitiveTopology(command._topology); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs deleted file mode 100644 index fa2e9a8a..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetProgramCommand : IGALCommand, IGALCommand<SetProgramCommand> - { - public CommandType CommandType => CommandType.SetProgram; - private TableRef<IProgram> _program; - - public void Set(TableRef<IProgram> program) - { - _program = program; - } - - public static void Run(ref SetProgramCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedProgram program = command._program.GetAs<ThreadedProgram>(threaded); - - threaded.Programs.WaitForProgram(program); - - renderer.Pipeline.SetProgram(program.Base); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs deleted file mode 100644 index d2095a4f..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetRasterizerDiscardCommand : IGALCommand, IGALCommand<SetRasterizerDiscardCommand> - { - public CommandType CommandType => CommandType.SetRasterizerDiscard; - private bool _discard; - - public void Set(bool discard) - { - _discard = discard; - } - - public static void Run(ref SetRasterizerDiscardCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetRasterizerDiscard(command._discard); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs deleted file mode 100644 index c247ff3a..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetRenderTargetColorMasksCommand : IGALCommand, IGALCommand<SetRenderTargetColorMasksCommand> - { - public CommandType CommandType => CommandType.SetRenderTargetColorMasks; - private SpanRef<uint> _componentMask; - - public void Set(SpanRef<uint> componentMask) - { - _componentMask = componentMask; - } - - public static void Run(ref SetRenderTargetColorMasksCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ReadOnlySpan<uint> componentMask = command._componentMask.Get(threaded); - renderer.Pipeline.SetRenderTargetColorMasks(componentMask); - command._componentMask.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs deleted file mode 100644 index 7cb5ec11..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetScaleCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetRenderTargetScaleCommand : IGALCommand, IGALCommand<SetRenderTargetScaleCommand> - { - public CommandType CommandType => CommandType.SetRenderTargetScale; - private float _scale; - - public void Set(float scale) - { - _scale = scale; - } - - public static void Run(ref SetRenderTargetScaleCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetRenderTargetScale(command._scale); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs deleted file mode 100644 index 0b175a72..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System.Linq; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetRenderTargetsCommand : IGALCommand, IGALCommand<SetRenderTargetsCommand> - { - public CommandType CommandType => CommandType.SetRenderTargets; - private TableRef<ITexture[]> _colors; - private TableRef<ITexture> _depthStencil; - - public void Set(TableRef<ITexture[]> colors, TableRef<ITexture> depthStencil) - { - _colors = colors; - _depthStencil = depthStencil; - } - - public static void Run(ref SetRenderTargetsCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetRenderTargets(command._colors.Get(threaded).Select(color => ((ThreadedTexture)color)?.Base).ToArray(), command._depthStencil.GetAs<ThreadedTexture>(threaded)?.Base); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs deleted file mode 100644 index 985d775e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetScissorsCommand : IGALCommand, IGALCommand<SetScissorsCommand> - { - public CommandType CommandType => CommandType.SetScissor; - private SpanRef<Rectangle<int>> _scissors; - - public void Set(SpanRef<Rectangle<int>> scissors) - { - _scissors = scissors; - } - - public static void Run(ref SetScissorsCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetScissors(command._scissors.Get(threaded)); - - command._scissors.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs deleted file mode 100644 index 41bff97e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetStencilTestCommand : IGALCommand, IGALCommand<SetStencilTestCommand> - { - public CommandType CommandType => CommandType.SetStencilTest; - private StencilTestDescriptor _stencilTest; - - public void Set(StencilTestDescriptor stencilTest) - { - _stencilTest = stencilTest; - } - - public static void Run(ref SetStencilTestCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetStencilTest(command._stencilTest); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs deleted file mode 100644 index 6ecb0989..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetStorageBuffersCommand : IGALCommand, IGALCommand<SetStorageBuffersCommand> - { - public CommandType CommandType => CommandType.SetStorageBuffers; - private SpanRef<BufferAssignment> _buffers; - - public void Set(SpanRef<BufferAssignment> buffers) - { - _buffers = buffers; - } - - public static void Run(ref SetStorageBuffersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - Span<BufferAssignment> buffers = command._buffers.Get(threaded); - renderer.Pipeline.SetStorageBuffers(threaded.Buffers.MapBufferRanges(buffers)); - command._buffers.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs deleted file mode 100644 index 5e8e0854..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using Ryujinx.Graphics.Shader; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetTextureAndSamplerCommand : IGALCommand, IGALCommand<SetTextureAndSamplerCommand> - { - public CommandType CommandType => CommandType.SetTextureAndSampler; - private ShaderStage _stage; - private int _binding; - private TableRef<ITexture> _texture; - private TableRef<ISampler> _sampler; - - public void Set(ShaderStage stage, int binding, TableRef<ITexture> texture, TableRef<ISampler> sampler) - { - _stage = stage; - _binding = binding; - _texture = texture; - _sampler = sampler; - } - - public static void Run(ref SetTextureAndSamplerCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetTextureAndSampler(command._stage, command._binding, command._texture.GetAs<ThreadedTexture>(threaded)?.Base, command._sampler.GetAs<ThreadedSampler>(threaded)?.Base); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs deleted file mode 100644 index e0d4ef2d..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetTransformFeedbackBuffersCommand : IGALCommand, IGALCommand<SetTransformFeedbackBuffersCommand> - { - public CommandType CommandType => CommandType.SetTransformFeedbackBuffers; - private SpanRef<BufferRange> _buffers; - - public void Set(SpanRef<BufferRange> buffers) - { - _buffers = buffers; - } - - public static void Run(ref SetTransformFeedbackBuffersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - Span<BufferRange> buffers = command._buffers.Get(threaded); - renderer.Pipeline.SetTransformFeedbackBuffers(threaded.Buffers.MapBufferRanges(buffers)); - command._buffers.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs deleted file mode 100644 index 9e93db9e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetUniformBuffersCommand : IGALCommand, IGALCommand<SetUniformBuffersCommand> - { - public CommandType CommandType => CommandType.SetUniformBuffers; - private SpanRef<BufferAssignment> _buffers; - - public void Set(SpanRef<BufferAssignment> buffers) - { - _buffers = buffers; - } - - public static void Run(ref SetUniformBuffersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - Span<BufferAssignment> buffers = command._buffers.Get(threaded); - renderer.Pipeline.SetUniformBuffers(threaded.Buffers.MapBufferRanges(buffers)); - command._buffers.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs deleted file mode 100644 index 4336ce49..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetUserClipDistanceCommand : IGALCommand, IGALCommand<SetUserClipDistanceCommand> - { - public CommandType CommandType => CommandType.SetUserClipDistance; - private int _index; - private bool _enableClip; - - public void Set(int index, bool enableClip) - { - _index = index; - _enableClip = enableClip; - } - - public static void Run(ref SetUserClipDistanceCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.SetUserClipDistance(command._index, command._enableClip); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs deleted file mode 100644 index e442c72d..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetVertexAttribsCommand : IGALCommand, IGALCommand<SetVertexAttribsCommand> - { - public CommandType CommandType => CommandType.SetVertexAttribs; - private SpanRef<VertexAttribDescriptor> _vertexAttribs; - - public void Set(SpanRef<VertexAttribDescriptor> vertexAttribs) - { - _vertexAttribs = vertexAttribs; - } - - public static void Run(ref SetVertexAttribsCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ReadOnlySpan<VertexAttribDescriptor> vertexAttribs = command._vertexAttribs.Get(threaded); - renderer.Pipeline.SetVertexAttribs(vertexAttribs); - command._vertexAttribs.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs deleted file mode 100644 index 585da2a4..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetVertexBuffersCommand : IGALCommand, IGALCommand<SetVertexBuffersCommand> - { - public CommandType CommandType => CommandType.SetVertexBuffers; - private SpanRef<VertexBufferDescriptor> _vertexBuffers; - - public void Set(SpanRef<VertexBufferDescriptor> vertexBuffers) - { - _vertexBuffers = vertexBuffers; - } - - public static void Run(ref SetVertexBuffersCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - Span<VertexBufferDescriptor> vertexBuffers = command._vertexBuffers.Get(threaded); - renderer.Pipeline.SetVertexBuffers(threaded.Buffers.MapBufferRanges(vertexBuffers)); - command._vertexBuffers.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs deleted file mode 100644 index c18bd811..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct SetViewportsCommand : IGALCommand, IGALCommand<SetViewportsCommand> - { - public CommandType CommandType => CommandType.SetViewports; - private SpanRef<Viewport> _viewports; - private bool _disableTransform; - - public void Set(SpanRef<Viewport> viewports, bool disableTransform) - { - _viewports = viewports; - _disableTransform = disableTransform; - } - - public static void Run(ref SetViewportsCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ReadOnlySpan<Viewport> viewports = command._viewports.Get(threaded); - renderer.Pipeline.SetViewports(viewports, command._disableTransform); - command._viewports.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs deleted file mode 100644 index 02d0b639..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureCopyToCommand : IGALCommand, IGALCommand<TextureCopyToCommand> - { - public CommandType CommandType => CommandType.TextureCopyTo; - private TableRef<ThreadedTexture> _texture; - private TableRef<ThreadedTexture> _destination; - private int _firstLayer; - private int _firstLevel; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<ThreadedTexture> destination, int firstLayer, int firstLevel) - { - _texture = texture; - _destination = destination; - _firstLayer = firstLayer; - _firstLevel = firstLevel; - } - - public static void Run(ref TextureCopyToCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture source = command._texture.Get(threaded); - source.Base.CopyTo(command._destination.Get(threaded).Base, command._firstLayer, command._firstLevel); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs deleted file mode 100644 index 6b83d3f8..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureCopyToScaledCommand : IGALCommand, IGALCommand<TextureCopyToScaledCommand> - { - public CommandType CommandType => CommandType.TextureCopyToScaled; - private TableRef<ThreadedTexture> _texture; - private TableRef<ThreadedTexture> _destination; - private Extents2D _srcRegion; - private Extents2D _dstRegion; - private bool _linearFilter; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<ThreadedTexture> destination, Extents2D srcRegion, Extents2D dstRegion, bool linearFilter) - { - _texture = texture; - _destination = destination; - _srcRegion = srcRegion; - _dstRegion = dstRegion; - _linearFilter = linearFilter; - } - - public static void Run(ref TextureCopyToScaledCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture source = command._texture.Get(threaded); - source.Base.CopyTo(command._destination.Get(threaded).Base, command._srcRegion, command._dstRegion, command._linearFilter); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs deleted file mode 100644 index 2a340a70..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureCopyToSliceCommand : IGALCommand, IGALCommand<TextureCopyToSliceCommand> - { - public CommandType CommandType => CommandType.TextureCopyToSlice; - private TableRef<ThreadedTexture> _texture; - private TableRef<ThreadedTexture> _destination; - private int _srcLayer; - private int _dstLayer; - private int _srcLevel; - private int _dstLevel; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<ThreadedTexture> destination, int srcLayer, int dstLayer, int srcLevel, int dstLevel) - { - _texture = texture; - _destination = destination; - _srcLayer = srcLayer; - _dstLayer = dstLayer; - _srcLevel = srcLevel; - _dstLevel = dstLevel; - } - - public static void Run(ref TextureCopyToSliceCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture source = command._texture.Get(threaded); - source.Base.CopyTo(command._destination.Get(threaded).Base, command._srcLayer, command._dstLayer, command._srcLevel, command._dstLevel); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs deleted file mode 100644 index 09e9ca2f..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureCreateViewCommand : IGALCommand, IGALCommand<TextureCreateViewCommand> - { - public CommandType CommandType => CommandType.TextureCreateView; - private TableRef<ThreadedTexture> _texture; - private TableRef<ThreadedTexture> _destination; - private TextureCreateInfo _info; - private int _firstLayer; - private int _firstLevel; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<ThreadedTexture> destination, TextureCreateInfo info, int firstLayer, int firstLevel) - { - _texture = texture; - _destination = destination; - _info = info; - _firstLayer = firstLayer; - _firstLevel = firstLevel; - } - - public static void Run(ref TextureCreateViewCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture source = command._texture.Get(threaded); - command._destination.Get(threaded).Base = source.Base.CreateView(command._info, command._firstLayer, command._firstLevel); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs deleted file mode 100644 index 91320d45..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureGetDataCommand : IGALCommand, IGALCommand<TextureGetDataCommand> - { - public CommandType CommandType => CommandType.TextureGetData; - private TableRef<ThreadedTexture> _texture; - private TableRef<ResultBox<PinnedSpan<byte>>> _result; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<ResultBox<PinnedSpan<byte>>> result) - { - _texture = texture; - _result = result; - } - - public static void Run(ref TextureGetDataCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - PinnedSpan<byte> result = command._texture.Get(threaded).Base.GetData(); - - command._result.Get(threaded).Result = result; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs deleted file mode 100644 index ec06cc4d..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureGetDataSliceCommand : IGALCommand, IGALCommand<TextureGetDataSliceCommand> - { - public CommandType CommandType => CommandType.TextureGetDataSlice; - private TableRef<ThreadedTexture> _texture; - private TableRef<ResultBox<PinnedSpan<byte>>> _result; - private int _layer; - private int _level; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<ResultBox<PinnedSpan<byte>>> result, int layer, int level) - { - _texture = texture; - _result = result; - _layer = layer; - _level = level; - } - - public static void Run(ref TextureGetDataSliceCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - PinnedSpan<byte> result = command._texture.Get(threaded).Base.GetData(command._layer, command._level); - - command._result.Get(threaded).Result = result; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs deleted file mode 100644 index 61486e09..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureReleaseCommand : IGALCommand, IGALCommand<TextureReleaseCommand> - { - public CommandType CommandType => CommandType.TextureRelease; - private TableRef<ThreadedTexture> _texture; - - public void Set(TableRef<ThreadedTexture> texture) - { - _texture = texture; - } - - public static void Run(ref TextureReleaseCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._texture.Get(threaded).Base.Release(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs deleted file mode 100644 index cfbaffd3..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureSetDataCommand : IGALCommand, IGALCommand<TextureSetDataCommand> - { - public CommandType CommandType => CommandType.TextureSetData; - private TableRef<ThreadedTexture> _texture; - private TableRef<byte[]> _data; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<byte[]> data) - { - _texture = texture; - _data = data; - } - - public static void Run(ref TextureSetDataCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture texture = command._texture.Get(threaded); - texture.Base.SetData(new ReadOnlySpan<byte>(command._data.Get(threaded))); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs deleted file mode 100644 index a7126f61..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureSetDataSliceCommand : IGALCommand, IGALCommand<TextureSetDataSliceCommand> - { - public CommandType CommandType => CommandType.TextureSetDataSlice; - private TableRef<ThreadedTexture> _texture; - private TableRef<byte[]> _data; - private int _layer; - private int _level; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<byte[]> data, int layer, int level) - { - _texture = texture; - _data = data; - _layer = layer; - _level = level; - } - - public static void Run(ref TextureSetDataSliceCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture texture = command._texture.Get(threaded); - texture.Base.SetData(new ReadOnlySpan<byte>(command._data.Get(threaded)), command._layer, command._level); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs deleted file mode 100644 index 4df83e08..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceRegionCommand.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureSetDataSliceRegionCommand : IGALCommand, IGALCommand<TextureSetDataSliceRegionCommand> - { - public CommandType CommandType => CommandType.TextureSetDataSliceRegion; - private TableRef<ThreadedTexture> _texture; - private TableRef<byte[]> _data; - private int _layer; - private int _level; - private Rectangle<int> _region; - - public void Set(TableRef<ThreadedTexture> texture, TableRef<byte[]> data, int layer, int level, Rectangle<int> region) - { - _texture = texture; - _data = data; - _layer = layer; - _level = level; - _region = region; - } - - public static void Run(ref TextureSetDataSliceRegionCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - ThreadedTexture texture = command._texture.Get(threaded); - texture.Base.SetData(new ReadOnlySpan<byte>(command._data.Get(threaded)), command._layer, command._level, command._region); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs deleted file mode 100644 index 2a1943a9..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture -{ - struct TextureSetStorageCommand : IGALCommand, IGALCommand<TextureSetStorageCommand> - { - public CommandType CommandType => CommandType.TextureSetStorage; - private TableRef<ThreadedTexture> _texture; - private BufferRange _storage; - - public void Set(TableRef<ThreadedTexture> texture, BufferRange storage) - { - _texture = texture; - _storage = storage; - } - - public static void Run(ref TextureSetStorageCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - command._texture.Get(threaded).Base.SetStorage(threaded.Buffers.MapBufferRange(command._storage)); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs deleted file mode 100644 index ce1a83a7..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct TextureBarrierCommand : IGALCommand, IGALCommand<TextureBarrierCommand> - { - public CommandType CommandType => CommandType.TextureBarrier; - - public static void Run(ref TextureBarrierCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.TextureBarrier(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs deleted file mode 100644 index c65ffe2e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct TextureBarrierTiledCommand : IGALCommand, IGALCommand<TextureBarrierTiledCommand> - { - public CommandType CommandType => CommandType.TextureBarrierTiled; - - public static void Run(ref TextureBarrierTiledCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.TextureBarrierTiled(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs deleted file mode 100644 index 9124ca1f..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct TryHostConditionalRenderingCommand : IGALCommand, IGALCommand<TryHostConditionalRenderingCommand> - { - public CommandType CommandType => CommandType.TryHostConditionalRendering; - private TableRef<ThreadedCounterEvent> _value; - private ulong _compare; - private bool _isEqual; - - public void Set(TableRef<ThreadedCounterEvent> value, ulong compare, bool isEqual) - { - _value = value; - _compare = compare; - _isEqual = isEqual; - } - - public static void Run(ref TryHostConditionalRenderingCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.TryHostConditionalRendering(command._value.Get(threaded)?.Base, command._compare, command._isEqual); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs deleted file mode 100644 index a5d07640..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct TryHostConditionalRenderingFlushCommand : IGALCommand, IGALCommand<TryHostConditionalRenderingFlushCommand> - { - public CommandType CommandType => CommandType.TryHostConditionalRenderingFlush; - private TableRef<ThreadedCounterEvent> _value; - private TableRef<ThreadedCounterEvent> _compare; - private bool _isEqual; - - public void Set(TableRef<ThreadedCounterEvent> value, TableRef<ThreadedCounterEvent> compare, bool isEqual) - { - _value = value; - _compare = compare; - _isEqual = isEqual; - } - - public static void Run(ref TryHostConditionalRenderingFlushCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.TryHostConditionalRendering(command._value.Get(threaded)?.Base, command._compare.Get(threaded)?.Base, command._isEqual); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs deleted file mode 100644 index ebe14150..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/UpdateRenderScaleCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands -{ - struct UpdateRenderScaleCommand : IGALCommand, IGALCommand<UpdateRenderScaleCommand> - { - public CommandType CommandType => CommandType.UpdateRenderScale; - private SpanRef<float> _scales; - private int _totalCount; - private int _fragmentCount; - - public void Set(SpanRef<float> scales, int totalCount, int fragmentCount) - { - _scales = scales; - _totalCount = totalCount; - _fragmentCount = fragmentCount; - } - - public static void Run(ref UpdateRenderScaleCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - renderer.Pipeline.UpdateRenderScale(command._scales.Get(threaded), command._totalCount, command._fragmentCount); - command._scales.Dispose(threaded); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs deleted file mode 100644 index 6a24cd35..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Window -{ - struct WindowPresentCommand : IGALCommand, IGALCommand<WindowPresentCommand> - { - public CommandType CommandType => CommandType.WindowPresent; - private TableRef<ThreadedTexture> _texture; - private ImageCrop _crop; - private TableRef<Action> _swapBuffersCallback; - - public void Set(TableRef<ThreadedTexture> texture, ImageCrop crop, TableRef<Action> swapBuffersCallback) - { - _texture = texture; - _crop = crop; - _swapBuffersCallback = swapBuffersCallback; - } - - public static void Run(ref WindowPresentCommand command, ThreadedRenderer threaded, IRenderer renderer) - { - threaded.SignalFrame(); - renderer.Window.Present(command._texture.Get(threaded)?.Base, command._crop, command._swapBuffersCallback.Get(threaded)); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs b/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs deleted file mode 100644 index 4ea1a2c7..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading.Model -{ - /// <summary> - /// A memory pool for passing through Span<T> resources with one producer and consumer. - /// Data is copied on creation to part of the pool, then that region is reserved until it is disposed by the consumer. - /// Similar to the command queue, this pool assumes that data is created and disposed in the same order. - /// </summary> - class CircularSpanPool - { - private ThreadedRenderer _renderer; - private byte[] _pool; - private int _size; - - private int _producerPtr; - private int _producerSkipPosition = -1; - private int _consumerPtr; - - public CircularSpanPool(ThreadedRenderer renderer, int size) - { - _renderer = renderer; - _size = size; - _pool = new byte[size]; - } - - public SpanRef<T> Insert<T>(ReadOnlySpan<T> data) where T : unmanaged - { - int size = data.Length * Unsafe.SizeOf<T>(); - - // Wrapping aware circular queue. - // If there's no space at the end of the pool for this span, we can't fragment it. - // So just loop back around to the start. Remember the last skipped position. - - bool wraparound = _producerPtr + size >= _size; - int index = wraparound ? 0 : _producerPtr; - - // _consumerPtr is from another thread, and we're taking it without a lock, so treat this as a snapshot in the past. - // We know that it will always be before or equal to the producer pointer, and it cannot pass it. - // This is enough to reason about if there is space in the queue for the data, even if we're checking against an outdated value. - - int consumer = _consumerPtr; - bool beforeConsumer = _producerPtr < consumer; - - if (size > _size - 1 || (wraparound && beforeConsumer) || ((index < consumer || wraparound) && index + size >= consumer)) - { - // Just get an array in the following situations: - // - The data is too large to fit in the pool. - // - A wraparound would happen but the consumer would be covered by it. - // - The producer would catch up to the consumer as a result. - - return new SpanRef<T>(_renderer, data.ToArray()); - } - - data.CopyTo(MemoryMarshal.Cast<byte, T>(new Span<byte>(_pool).Slice(index, size))); - - if (wraparound) - { - _producerSkipPosition = _producerPtr; - } - - _producerPtr = index + size; - - return new SpanRef<T>(data.Length); - } - - public Span<T> Get<T>(int length) where T : unmanaged - { - int size = length * Unsafe.SizeOf<T>(); - - if (_consumerPtr == Interlocked.CompareExchange(ref _producerSkipPosition, -1, _consumerPtr)) - { - _consumerPtr = 0; - } - - return MemoryMarshal.Cast<byte, T>(new Span<byte>(_pool).Slice(_consumerPtr, size)); - } - - public void Dispose<T>(int length) where T : unmanaged - { - int size = length * Unsafe.SizeOf<T>(); - - _consumerPtr = _consumerPtr + size; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs b/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs deleted file mode 100644 index 7a0be785..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Model -{ - public class ResultBox<T> - { - public T Result; - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs b/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs deleted file mode 100644 index 7dbebc76..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Model -{ - struct SpanRef<T> where T : unmanaged - { - private int _packedLengthId; - - public SpanRef(ThreadedRenderer renderer, T[] data) - { - _packedLengthId = -(renderer.AddTableRef(data) + 1); - } - - public SpanRef(int length) - { - _packedLengthId = length; - } - - public Span<T> Get(ThreadedRenderer renderer) - { - if (_packedLengthId >= 0) - { - return renderer.SpanPool.Get<T>(_packedLengthId); - } - else - { - return new Span<T>((T[])renderer.RemoveTableRef(-(_packedLengthId + 1))); - } - } - - public void Dispose(ThreadedRenderer renderer) - { - if (_packedLengthId > 0) - { - renderer.SpanPool.Dispose<T>(_packedLengthId); - } - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs b/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs deleted file mode 100644 index 166aa71a..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Model -{ - struct TableRef<T> - { - private int _index; - - public TableRef(ThreadedRenderer renderer, T reference) - { - _index = renderer.AddTableRef(reference); - } - - public T Get(ThreadedRenderer renderer) - { - return (T)renderer.RemoveTableRef(_index); - } - - public T2 GetAs<T2>(ThreadedRenderer renderer) where T2 : T - { - return (T2)renderer.RemoveTableRef(_index); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs deleted file mode 100644 index 3f982d31..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs +++ /dev/null @@ -1,107 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs; -using System; -using System.Collections.Generic; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading.Resources -{ - /// <summary> - /// A structure handling multithreaded compilation for programs. - /// </summary> - class ProgramQueue - { - private const int MaxConcurrentCompilations = 8; - - private IRenderer _renderer; - - private Queue<IProgramRequest> _toCompile; - private List<ThreadedProgram> _inProgress; - - public ProgramQueue(IRenderer renderer) - { - _renderer = renderer; - - _toCompile = new Queue<IProgramRequest>(); - _inProgress = new List<ThreadedProgram>(); - } - - public void Add(IProgramRequest request) - { - lock (_toCompile) - { - _toCompile.Enqueue(request); - } - } - - public void ProcessQueue() - { - for (int i = 0; i < _inProgress.Count; i++) - { - ThreadedProgram program = _inProgress[i]; - - ProgramLinkStatus status = program.Base.CheckProgramLink(false); - - if (status != ProgramLinkStatus.Incomplete) - { - program.Compiled = true; - _inProgress.RemoveAt(i--); - } - } - - int freeSpace = MaxConcurrentCompilations - _inProgress.Count; - - for (int i = 0; i < freeSpace; i++) - { - // Begin compilation of some programs in the compile queue. - IProgramRequest program; - - lock (_toCompile) - { - if (!_toCompile.TryDequeue(out program)) - { - break; - } - } - - if (program.Threaded.Base != null) - { - ProgramLinkStatus status = program.Threaded.Base.CheckProgramLink(false); - - if (status != ProgramLinkStatus.Incomplete) - { - // This program is already compiled. Keep going through the queue. - program.Threaded.Compiled = true; - i--; - continue; - } - } - else - { - program.Threaded.Base = program.Create(_renderer); - } - - _inProgress.Add(program.Threaded); - } - } - - /// <summary> - /// Process the queue until the given program has finished compiling. - /// This will begin compilation of other programs on the queue as well. - /// </summary> - /// <param name="program">The program to wait for</param> - public void WaitForProgram(ThreadedProgram program) - { - Span<SpinWait> spinWait = stackalloc SpinWait[1]; - - while (!program.Compiled) - { - ProcessQueue(); - - if (!program.Compiled) - { - spinWait[0].SpinOnce(-1); - } - } - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs deleted file mode 100644 index b4c6853f..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs -{ - class BinaryProgramRequest : IProgramRequest - { - public ThreadedProgram Threaded { get; set; } - - private byte[] _data; - private bool _hasFragmentShader; - private ShaderInfo _info; - - public BinaryProgramRequest(ThreadedProgram program, byte[] data, bool hasFragmentShader, ShaderInfo info) - { - Threaded = program; - - _data = data; - _hasFragmentShader = hasFragmentShader; - _info = info; - } - - public IProgram Create(IRenderer renderer) - { - return renderer.LoadProgramBinary(_data, _hasFragmentShader, _info); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs deleted file mode 100644 index cdbfe03c..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs -{ - interface IProgramRequest - { - ThreadedProgram Threaded { get; set; } - IProgram Create(IRenderer renderer); - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs deleted file mode 100644 index ff06abb1..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs -{ - class SourceProgramRequest : IProgramRequest - { - public ThreadedProgram Threaded { get; set; } - - private ShaderSource[] _shaders; - private ShaderInfo _info; - - public SourceProgramRequest(ThreadedProgram program, ShaderSource[] shaders, ShaderInfo info) - { - Threaded = program; - - _shaders = shaders; - _info = info; - } - - public IProgram Create(IRenderer renderer) - { - return renderer.CreateProgram(_shaders, _info); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs deleted file mode 100644 index 4b7471d6..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent; -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading.Resources -{ - class ThreadedCounterEvent : ICounterEvent - { - private ThreadedRenderer _renderer; - public ICounterEvent Base; - - public bool Invalid { get; set; } - - public CounterType Type { get; } - public bool ClearCounter { get; } - - private bool _reserved; - private int _createLock; - - public ThreadedCounterEvent(ThreadedRenderer renderer, CounterType type, bool clearCounter) - { - _renderer = renderer; - Type = type; - ClearCounter = clearCounter; - } - - private TableRef<T> Ref<T>(T reference) - { - return new TableRef<T>(_renderer, reference); - } - - public void Dispose() - { - _renderer.New<CounterEventDisposeCommand>().Set(Ref(this)); - _renderer.QueueCommand(); - } - - public void Flush() - { - ThreadedHelpers.SpinUntilNonNull(ref Base); - - Base.Flush(); - } - - public bool ReserveForHostAccess() - { - if (Base != null) - { - return Base.ReserveForHostAccess(); - } - else - { - bool result = true; - - // A very light lock, as this case is uncommon. - ThreadedHelpers.SpinUntilExchange(ref _createLock, 1, 0); - - if (Base != null) - { - result = Base.ReserveForHostAccess(); - } - else - { - _reserved = true; - } - - Volatile.Write(ref _createLock, 0); - - return result; - } - } - - public void Create(IRenderer renderer, CounterType type, System.EventHandler<ulong> eventHandler, bool hostReserved) - { - ThreadedHelpers.SpinUntilExchange(ref _createLock, 1, 0); - Base = renderer.ReportCounter(type, eventHandler, hostReserved || _reserved); - Volatile.Write(ref _createLock, 0); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs deleted file mode 100644 index 068d058e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Commands.Program; -using Ryujinx.Graphics.GAL.Multithreading.Model; - -namespace Ryujinx.Graphics.GAL.Multithreading.Resources -{ - class ThreadedProgram : IProgram - { - private ThreadedRenderer _renderer; - - public IProgram Base; - - internal bool Compiled; - - public ThreadedProgram(ThreadedRenderer renderer) - { - _renderer = renderer; - } - - private TableRef<T> Ref<T>(T reference) - { - return new TableRef<T>(_renderer, reference); - } - - public void Dispose() - { - _renderer.New<ProgramDisposeCommand>().Set(Ref(this)); - _renderer.QueueCommand(); - } - - public byte[] GetBinary() - { - ResultBox<byte[]> box = new ResultBox<byte[]>(); - _renderer.New<ProgramGetBinaryCommand>().Set(Ref(this), Ref(box)); - _renderer.InvokeCommand(); - - return box.Result; - } - - public ProgramLinkStatus CheckProgramLink(bool blocking) - { - ResultBox<ProgramLinkStatus> box = new ResultBox<ProgramLinkStatus>(); - _renderer.New<ProgramCheckLinkCommand>().Set(Ref(this), blocking, Ref(box)); - _renderer.InvokeCommand(); - - return box.Result; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs deleted file mode 100644 index d8de9a70..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler; -using Ryujinx.Graphics.GAL.Multithreading.Model; - -namespace Ryujinx.Graphics.GAL.Multithreading.Resources -{ - class ThreadedSampler : ISampler - { - private ThreadedRenderer _renderer; - public ISampler Base; - - public ThreadedSampler(ThreadedRenderer renderer) - { - _renderer = renderer; - } - - public void Dispose() - { - _renderer.New<SamplerDisposeCommand>().Set(new TableRef<ThreadedSampler>(_renderer, this)); - _renderer.QueueCommand(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs b/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs deleted file mode 100644 index ee1cfa29..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs +++ /dev/null @@ -1,141 +0,0 @@ -using Ryujinx.Common.Memory; -using Ryujinx.Graphics.GAL.Multithreading.Commands.Texture; -using Ryujinx.Graphics.GAL.Multithreading.Model; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading.Resources -{ - /// <summary> - /// Threaded representation of a texture. - /// </summary> - class ThreadedTexture : ITexture - { - private ThreadedRenderer _renderer; - private TextureCreateInfo _info; - public ITexture Base; - - public int Width => _info.Width; - - public int Height => _info.Height; - - public float ScaleFactor { get; } - - public ThreadedTexture(ThreadedRenderer renderer, TextureCreateInfo info, float scale) - { - _renderer = renderer; - _info = info; - ScaleFactor = scale; - } - - private TableRef<T> Ref<T>(T reference) - { - return new TableRef<T>(_renderer, reference); - } - - public void CopyTo(ITexture destination, int firstLayer, int firstLevel) - { - _renderer.New<TextureCopyToCommand>().Set(Ref(this), Ref((ThreadedTexture)destination), firstLayer, firstLevel); - _renderer.QueueCommand(); - } - - public void CopyTo(ITexture destination, int srcLayer, int dstLayer, int srcLevel, int dstLevel) - { - _renderer.New<TextureCopyToSliceCommand>().Set(Ref(this), Ref((ThreadedTexture)destination), srcLayer, dstLayer, srcLevel, dstLevel); - _renderer.QueueCommand(); - } - - public void CopyTo(ITexture destination, Extents2D srcRegion, Extents2D dstRegion, bool linearFilter) - { - ThreadedTexture dest = (ThreadedTexture)destination; - - if (_renderer.IsGpuThread()) - { - _renderer.New<TextureCopyToScaledCommand>().Set(Ref(this), Ref(dest), srcRegion, dstRegion, linearFilter); - _renderer.QueueCommand(); - } - else - { - // Scaled copy can happen on another thread for a res scale flush. - ThreadedHelpers.SpinUntilNonNull(ref Base); - ThreadedHelpers.SpinUntilNonNull(ref dest.Base); - - Base.CopyTo(dest.Base, srcRegion, dstRegion, linearFilter); - } - } - - public ITexture CreateView(TextureCreateInfo info, int firstLayer, int firstLevel) - { - ThreadedTexture newTex = new ThreadedTexture(_renderer, info, ScaleFactor); - _renderer.New<TextureCreateViewCommand>().Set(Ref(this), Ref(newTex), info, firstLayer, firstLevel); - _renderer.QueueCommand(); - - return newTex; - } - - public PinnedSpan<byte> GetData() - { - if (_renderer.IsGpuThread()) - { - ResultBox<PinnedSpan<byte>> box = new ResultBox<PinnedSpan<byte>>(); - _renderer.New<TextureGetDataCommand>().Set(Ref(this), Ref(box)); - _renderer.InvokeCommand(); - - return box.Result; - } - else - { - ThreadedHelpers.SpinUntilNonNull(ref Base); - - return Base.GetData(); - } - } - - public PinnedSpan<byte> GetData(int layer, int level) - { - if (_renderer.IsGpuThread()) - { - ResultBox<PinnedSpan<byte>> box = new ResultBox<PinnedSpan<byte>>(); - _renderer.New<TextureGetDataSliceCommand>().Set(Ref(this), Ref(box), layer, level); - _renderer.InvokeCommand(); - - return box.Result; - } - else - { - ThreadedHelpers.SpinUntilNonNull(ref Base); - - return Base.GetData(layer, level); - } - } - - public void SetData(SpanOrArray<byte> data) - { - _renderer.New<TextureSetDataCommand>().Set(Ref(this), Ref(data.ToArray())); - _renderer.QueueCommand(); - } - - public void SetData(SpanOrArray<byte> data, int layer, int level) - { - _renderer.New<TextureSetDataSliceCommand>().Set(Ref(this), Ref(data.ToArray()), layer, level); - _renderer.QueueCommand(); - } - - public void SetData(SpanOrArray<byte> data, int layer, int level, Rectangle<int> region) - { - _renderer.New<TextureSetDataSliceRegionCommand>().Set(Ref(this), Ref(data.ToArray()), layer, level, region); - _renderer.QueueCommand(); - } - - public void SetStorage(BufferRange buffer) - { - _renderer.New<TextureSetStorageCommand>().Set(Ref(this), buffer); - _renderer.QueueCommand(); - } - - public void Release() - { - _renderer.New<TextureReleaseCommand>().Set(Ref(this)); - _renderer.QueueCommand(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs b/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs deleted file mode 100644 index ae09e852..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - class SyncMap : IDisposable - { - private HashSet<ulong> _inFlight = new HashSet<ulong>(); - private AutoResetEvent _inFlightChanged = new AutoResetEvent(false); - - internal void CreateSyncHandle(ulong id) - { - lock (_inFlight) - { - _inFlight.Add(id); - } - } - - internal void AssignSync(ulong id) - { - lock (_inFlight) - { - _inFlight.Remove(id); - } - - _inFlightChanged.Set(); - } - - internal void WaitSyncAvailability(ulong id) - { - // Blocks until the handle is available. - - bool signal = false; - - while (true) - { - lock (_inFlight) - { - if (!_inFlight.Contains(id)) - { - break; - } - } - - _inFlightChanged.WaitOne(); - signal = true; - } - - if (signal) - { - // Signal other threads which might still be waiting. - _inFlightChanged.Set(); - } - } - - public void Dispose() - { - _inFlightChanged.Dispose(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs b/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs deleted file mode 100644 index 7ddb19e6..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - static class ThreadedHelpers - { - public static void SpinUntilNonNull<T>(ref T obj) where T : class - { - Span<SpinWait> spinWait = stackalloc SpinWait[1]; - - while (obj == null) - { - spinWait[0].SpinOnce(-1); - } - } - - public static void SpinUntilExchange(ref int target, int value, int comparand) - { - Span<SpinWait> spinWait = stackalloc SpinWait[1]; - - while (Interlocked.CompareExchange(ref target, value, comparand) != comparand) - { - spinWait[0].SpinOnce(-1); - } - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs b/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs deleted file mode 100644 index 1bdc9cf4..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs +++ /dev/null @@ -1,380 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Commands; -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using Ryujinx.Graphics.Shader; -using System; -using System.Linq; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - public class ThreadedPipeline : IPipeline - { - private ThreadedRenderer _renderer; - private IPipeline _impl; - - public ThreadedPipeline(ThreadedRenderer renderer, IPipeline impl) - { - _renderer = renderer; - _impl = impl; - } - - private TableRef<T> Ref<T>(T reference) - { - return new TableRef<T>(_renderer, reference); - } - - public void Barrier() - { - _renderer.New<BarrierCommand>(); - _renderer.QueueCommand(); - } - - public void BeginTransformFeedback(PrimitiveTopology topology) - { - _renderer.New<BeginTransformFeedbackCommand>().Set(topology); - _renderer.QueueCommand(); - } - - public void ClearBuffer(BufferHandle destination, int offset, int size, uint value) - { - _renderer.New<ClearBufferCommand>().Set(destination, offset, size, value); - _renderer.QueueCommand(); - } - - public void ClearRenderTargetColor(int index, int layer, int layerCount, uint componentMask, ColorF color) - { - _renderer.New<ClearRenderTargetColorCommand>().Set(index, layer, layerCount, componentMask, color); - _renderer.QueueCommand(); - } - - public void ClearRenderTargetDepthStencil(int layer, int layerCount, float depthValue, bool depthMask, int stencilValue, int stencilMask) - { - _renderer.New<ClearRenderTargetDepthStencilCommand>().Set(layer, layerCount, depthValue, depthMask, stencilValue, stencilMask); - _renderer.QueueCommand(); - } - - public void CommandBufferBarrier() - { - _renderer.New<CommandBufferBarrierCommand>(); - _renderer.QueueCommand(); - } - - public void CopyBuffer(BufferHandle source, BufferHandle destination, int srcOffset, int dstOffset, int size) - { - _renderer.New<CopyBufferCommand>().Set(source, destination, srcOffset, dstOffset, size); - _renderer.QueueCommand(); - } - - public void DispatchCompute(int groupsX, int groupsY, int groupsZ) - { - _renderer.New<DispatchComputeCommand>().Set(groupsX, groupsY, groupsZ); - _renderer.QueueCommand(); - } - - public void Draw(int vertexCount, int instanceCount, int firstVertex, int firstInstance) - { - _renderer.New<DrawCommand>().Set(vertexCount, instanceCount, firstVertex, firstInstance); - _renderer.QueueCommand(); - } - - public void DrawIndexed(int indexCount, int instanceCount, int firstIndex, int firstVertex, int firstInstance) - { - _renderer.New<DrawIndexedCommand>().Set(indexCount, instanceCount, firstIndex, firstVertex, firstInstance); - _renderer.QueueCommand(); - } - - public void DrawIndexedIndirect(BufferRange indirectBuffer) - { - _renderer.New<DrawIndexedIndirectCommand>().Set(indirectBuffer); - _renderer.QueueCommand(); - } - - public void DrawIndexedIndirectCount(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride) - { - _renderer.New<DrawIndexedIndirectCountCommand>().Set(indirectBuffer, parameterBuffer, maxDrawCount, stride); - _renderer.QueueCommand(); - } - - public void DrawIndirect(BufferRange indirectBuffer) - { - _renderer.New<DrawIndirectCommand>().Set(indirectBuffer); - _renderer.QueueCommand(); - } - - public void DrawIndirectCount(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride) - { - _renderer.New<DrawIndirectCountCommand>().Set(indirectBuffer, parameterBuffer, maxDrawCount, stride); - _renderer.QueueCommand(); - } - - public void DrawTexture(ITexture texture, ISampler sampler, Extents2DF srcRegion, Extents2DF dstRegion) - { - _renderer.New<DrawTextureCommand>().Set(Ref(texture), Ref(sampler), srcRegion, dstRegion); - _renderer.QueueCommand(); - } - - public void EndHostConditionalRendering() - { - _renderer.New<EndHostConditionalRenderingCommand>(); - _renderer.QueueCommand(); - } - - public void EndTransformFeedback() - { - _renderer.New<EndTransformFeedbackCommand>(); - _renderer.QueueCommand(); - } - - public void SetAlphaTest(bool enable, float reference, CompareOp op) - { - _renderer.New<SetAlphaTestCommand>().Set(enable, reference, op); - _renderer.QueueCommand(); - } - - public void SetBlendState(AdvancedBlendDescriptor blend) - { - _renderer.New<SetBlendStateAdvancedCommand>().Set(blend); - _renderer.QueueCommand(); - } - - public void SetBlendState(int index, BlendDescriptor blend) - { - _renderer.New<SetBlendStateCommand>().Set(index, blend); - _renderer.QueueCommand(); - } - - public void SetDepthBias(PolygonModeMask enables, float factor, float units, float clamp) - { - _renderer.New<SetDepthBiasCommand>().Set(enables, factor, units, clamp); - _renderer.QueueCommand(); - } - - public void SetDepthClamp(bool clamp) - { - _renderer.New<SetDepthClampCommand>().Set(clamp); - _renderer.QueueCommand(); - } - - public void SetDepthMode(DepthMode mode) - { - _renderer.New<SetDepthModeCommand>().Set(mode); - _renderer.QueueCommand(); - } - - public void SetDepthTest(DepthTestDescriptor depthTest) - { - _renderer.New<SetDepthTestCommand>().Set(depthTest); - _renderer.QueueCommand(); - } - - public void SetFaceCulling(bool enable, Face face) - { - _renderer.New<SetFaceCullingCommand>().Set(enable, face); - _renderer.QueueCommand(); - } - - public void SetFrontFace(FrontFace frontFace) - { - _renderer.New<SetFrontFaceCommand>().Set(frontFace); - _renderer.QueueCommand(); - } - - public void SetImage(int binding, ITexture texture, Format imageFormat) - { - _renderer.New<SetImageCommand>().Set(binding, Ref(texture), imageFormat); - _renderer.QueueCommand(); - } - - public void SetIndexBuffer(BufferRange buffer, IndexType type) - { - _renderer.New<SetIndexBufferCommand>().Set(buffer, type); - _renderer.QueueCommand(); - } - - public void SetLineParameters(float width, bool smooth) - { - _renderer.New<SetLineParametersCommand>().Set(width, smooth); - _renderer.QueueCommand(); - } - - public void SetLogicOpState(bool enable, LogicalOp op) - { - _renderer.New<SetLogicOpStateCommand>().Set(enable, op); - _renderer.QueueCommand(); - } - - public void SetMultisampleState(MultisampleDescriptor multisample) - { - _renderer.New<SetMultisampleStateCommand>().Set(multisample); - _renderer.QueueCommand(); - } - - public void SetPatchParameters(int vertices, ReadOnlySpan<float> defaultOuterLevel, ReadOnlySpan<float> defaultInnerLevel) - { - _renderer.New<SetPatchParametersCommand>().Set(vertices, defaultOuterLevel, defaultInnerLevel); - _renderer.QueueCommand(); - } - - public void SetPointParameters(float size, bool isProgramPointSize, bool enablePointSprite, Origin origin) - { - _renderer.New<SetPointParametersCommand>().Set(size, isProgramPointSize, enablePointSprite, origin); - _renderer.QueueCommand(); - } - - public void SetPolygonMode(PolygonMode frontMode, PolygonMode backMode) - { - _renderer.New<SetPolygonModeCommand>().Set(frontMode, backMode); - _renderer.QueueCommand(); - } - - public void SetPrimitiveRestart(bool enable, int index) - { - _renderer.New<SetPrimitiveRestartCommand>().Set(enable, index); - _renderer.QueueCommand(); - } - - public void SetPrimitiveTopology(PrimitiveTopology topology) - { - _renderer.New<SetPrimitiveTopologyCommand>().Set(topology); - _renderer.QueueCommand(); - } - - public void SetProgram(IProgram program) - { - _renderer.New<SetProgramCommand>().Set(Ref(program)); - _renderer.QueueCommand(); - } - - public void SetRasterizerDiscard(bool discard) - { - _renderer.New<SetRasterizerDiscardCommand>().Set(discard); - _renderer.QueueCommand(); - } - - public void SetRenderTargetColorMasks(ReadOnlySpan<uint> componentMask) - { - _renderer.New<SetRenderTargetColorMasksCommand>().Set(_renderer.CopySpan(componentMask)); - _renderer.QueueCommand(); - } - - public void SetRenderTargets(ITexture[] colors, ITexture depthStencil) - { - _renderer.New<SetRenderTargetsCommand>().Set(Ref(colors.ToArray()), Ref(depthStencil)); - _renderer.QueueCommand(); - } - - public void SetRenderTargetScale(float scale) - { - _renderer.New<SetRenderTargetScaleCommand>().Set(scale); - _renderer.QueueCommand(); - } - - public void SetScissors(ReadOnlySpan<Rectangle<int>> scissors) - { - _renderer.New<SetScissorsCommand>().Set(_renderer.CopySpan(scissors)); - _renderer.QueueCommand(); - } - - public void SetStencilTest(StencilTestDescriptor stencilTest) - { - _renderer.New<SetStencilTestCommand>().Set(stencilTest); - _renderer.QueueCommand(); - } - - public void SetStorageBuffers(ReadOnlySpan<BufferAssignment> buffers) - { - _renderer.New<SetStorageBuffersCommand>().Set(_renderer.CopySpan(buffers)); - _renderer.QueueCommand(); - } - - public void SetTextureAndSampler(ShaderStage stage, int binding, ITexture texture, ISampler sampler) - { - _renderer.New<SetTextureAndSamplerCommand>().Set(stage, binding, Ref(texture), Ref(sampler)); - _renderer.QueueCommand(); - } - - public void SetTransformFeedbackBuffers(ReadOnlySpan<BufferRange> buffers) - { - _renderer.New<SetTransformFeedbackBuffersCommand>().Set(_renderer.CopySpan(buffers)); - _renderer.QueueCommand(); - } - - public void SetUniformBuffers(ReadOnlySpan<BufferAssignment> buffers) - { - _renderer.New<SetUniformBuffersCommand>().Set(_renderer.CopySpan(buffers)); - _renderer.QueueCommand(); - } - - public void SetUserClipDistance(int index, bool enableClip) - { - _renderer.New<SetUserClipDistanceCommand>().Set(index, enableClip); - _renderer.QueueCommand(); - } - - public void SetVertexAttribs(ReadOnlySpan<VertexAttribDescriptor> vertexAttribs) - { - _renderer.New<SetVertexAttribsCommand>().Set(_renderer.CopySpan(vertexAttribs)); - _renderer.QueueCommand(); - } - - public void SetVertexBuffers(ReadOnlySpan<VertexBufferDescriptor> vertexBuffers) - { - _renderer.New<SetVertexBuffersCommand>().Set(_renderer.CopySpan(vertexBuffers)); - _renderer.QueueCommand(); - } - - public void SetViewports(ReadOnlySpan<Viewport> viewports, bool disableTransform) - { - _renderer.New<SetViewportsCommand>().Set(_renderer.CopySpan(viewports), disableTransform); - _renderer.QueueCommand(); - } - - public void TextureBarrier() - { - _renderer.New<TextureBarrierCommand>(); - _renderer.QueueCommand(); - } - - public void TextureBarrierTiled() - { - _renderer.New<TextureBarrierTiledCommand>(); - _renderer.QueueCommand(); - } - - public bool TryHostConditionalRendering(ICounterEvent value, ulong compare, bool isEqual) - { - var evt = value as ThreadedCounterEvent; - if (evt != null) - { - if (compare == 0 && evt.Type == CounterType.SamplesPassed && evt.ClearCounter) - { - if (!evt.ReserveForHostAccess()) - { - return false; - } - - _renderer.New<TryHostConditionalRenderingCommand>().Set(Ref(evt), compare, isEqual); - _renderer.QueueCommand(); - return true; - } - } - - _renderer.New<TryHostConditionalRenderingFlushCommand>().Set(Ref(evt), Ref<ThreadedCounterEvent>(null), isEqual); - _renderer.QueueCommand(); - return false; - } - - public bool TryHostConditionalRendering(ICounterEvent value, ICounterEvent compare, bool isEqual) - { - _renderer.New<TryHostConditionalRenderingFlushCommand>().Set(Ref(value as ThreadedCounterEvent), Ref(compare as ThreadedCounterEvent), isEqual); - _renderer.QueueCommand(); - return false; - } - - public void UpdateRenderScale(ReadOnlySpan<float> scales, int totalCount, int fragmentCount) - { - _renderer.New<UpdateRenderScaleCommand>().Set(_renderer.CopySpan(scales.Slice(0, totalCount)), totalCount, fragmentCount); - _renderer.QueueCommand(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs b/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs deleted file mode 100644 index 2148f43f..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs +++ /dev/null @@ -1,488 +0,0 @@ -using Ryujinx.Common; -using Ryujinx.Common.Configuration; -using Ryujinx.Graphics.GAL.Multithreading.Commands; -using Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer; -using Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer; -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs; -using System; -using System.Diagnostics; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Threading; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - /// <summary> - /// The ThreadedRenderer is a layer that can be put in front of any Renderer backend to make - /// its processing happen on a separate thread, rather than intertwined with the GPU emulation. - /// A new thread is created to handle the GPU command processing, separate from the renderer thread. - /// Calls to the renderer, pipeline and resources are queued to happen on the renderer thread. - /// </summary> - public class ThreadedRenderer : IRenderer - { - private const int SpanPoolBytes = 4 * 1024 * 1024; - private const int MaxRefsPerCommand = 2; - private const int QueueCount = 10000; - - private int _elementSize; - private IRenderer _baseRenderer; - private Thread _gpuThread; - private Thread _backendThread; - private bool _disposed; - private bool _running; - - private AutoResetEvent _frameComplete = new AutoResetEvent(true); - - private ManualResetEventSlim _galWorkAvailable; - private CircularSpanPool _spanPool; - - private ManualResetEventSlim _invokeRun; - private AutoResetEvent _interruptRun; - - private bool _lastSampleCounterClear = true; - - private byte[] _commandQueue; - private object[] _refQueue; - - private int _consumerPtr; - private int _commandCount; - - private int _producerPtr; - private int _lastProducedPtr; - private int _invokePtr; - - private int _refProducerPtr; - private int _refConsumerPtr; - - private Action _interruptAction; - - public event EventHandler<ScreenCaptureImageInfo> ScreenCaptured; - - internal BufferMap Buffers { get; } - internal SyncMap Sync { get; } - internal CircularSpanPool SpanPool { get; } - internal ProgramQueue Programs { get; } - - public IPipeline Pipeline { get; } - public IWindow Window { get; } - - public IRenderer BaseRenderer => _baseRenderer; - - public bool PreferThreading => _baseRenderer.PreferThreading; - - public ThreadedRenderer(IRenderer renderer) - { - _baseRenderer = renderer; - - renderer.ScreenCaptured += (sender, info) => ScreenCaptured?.Invoke(this, info); - renderer.SetInterruptAction(Interrupt); - - Pipeline = new ThreadedPipeline(this, renderer.Pipeline); - Window = new ThreadedWindow(this, renderer); - Buffers = new BufferMap(); - Sync = new SyncMap(); - Programs = new ProgramQueue(renderer); - - _galWorkAvailable = new ManualResetEventSlim(false); - _invokeRun = new ManualResetEventSlim(); - _interruptRun = new AutoResetEvent(false); - _spanPool = new CircularSpanPool(this, SpanPoolBytes); - SpanPool = _spanPool; - - _elementSize = BitUtils.AlignUp(CommandHelper.GetMaxCommandSize(), 4); - - _commandQueue = new byte[_elementSize * QueueCount]; - _refQueue = new object[MaxRefsPerCommand * QueueCount]; - } - - public void RunLoop(Action gpuLoop) - { - _running = true; - - _backendThread = Thread.CurrentThread; - - _gpuThread = new Thread(() => { - gpuLoop(); - _running = false; - _galWorkAvailable.Set(); - }); - - _gpuThread.Name = "GPU.MainThread"; - _gpuThread.Start(); - - RenderLoop(); - } - - public void RenderLoop() - { - // Power through the render queue until the Gpu thread work is done. - - while (_running && !_disposed) - { - _galWorkAvailable.Wait(); - _galWorkAvailable.Reset(); - - if (Volatile.Read(ref _interruptAction) != null) - { - _interruptAction(); - _interruptRun.Set(); - - Interlocked.Exchange(ref _interruptAction, null); - } - - // The other thread can only increase the command count. - // We can assume that if it is above 0, it will stay there or get higher. - - while (Volatile.Read(ref _commandCount) > 0 && Volatile.Read(ref _interruptAction) == null) - { - int commandPtr = _consumerPtr; - - Span<byte> command = new Span<byte>(_commandQueue, commandPtr * _elementSize, _elementSize); - - // Run the command. - - CommandHelper.RunCommand(command, this, _baseRenderer); - - if (Interlocked.CompareExchange(ref _invokePtr, -1, commandPtr) == commandPtr) - { - _invokeRun.Set(); - } - - _consumerPtr = (_consumerPtr + 1) % QueueCount; - - Interlocked.Decrement(ref _commandCount); - } - } - } - - internal SpanRef<T> CopySpan<T>(ReadOnlySpan<T> data) where T : unmanaged - { - return _spanPool.Insert(data); - } - - private TableRef<T> Ref<T>(T reference) - { - return new TableRef<T>(this, reference); - } - - internal ref T New<T>() where T : struct - { - while (_producerPtr == (Volatile.Read(ref _consumerPtr) + QueueCount - 1) % QueueCount) - { - // If incrementing the producer pointer would overflow, we need to wait. - // _consumerPtr can only move forward, so there's no race to worry about here. - - Thread.Sleep(1); - } - - int taken = _producerPtr; - _lastProducedPtr = taken; - - _producerPtr = (_producerPtr + 1) % QueueCount; - - Span<byte> memory = new Span<byte>(_commandQueue, taken * _elementSize, _elementSize); - ref T result = ref Unsafe.As<byte, T>(ref MemoryMarshal.GetReference(memory)); - - memory[memory.Length - 1] = (byte)((IGALCommand)result).CommandType; - - return ref result; - } - - internal int AddTableRef(object obj) - { - // The reference table is sized so that it will never overflow, so long as the references are taken after the command is allocated. - - int index = _refProducerPtr; - - _refQueue[index] = obj; - - _refProducerPtr = (_refProducerPtr + 1) % _refQueue.Length; - - return index; - } - - internal object RemoveTableRef(int index) - { - Debug.Assert(index == _refConsumerPtr); - - object result = _refQueue[_refConsumerPtr]; - _refQueue[_refConsumerPtr] = null; - - _refConsumerPtr = (_refConsumerPtr + 1) % _refQueue.Length; - - return result; - } - - internal void QueueCommand() - { - int result = Interlocked.Increment(ref _commandCount); - - if (result == 1) - { - _galWorkAvailable.Set(); - } - } - - internal void InvokeCommand() - { - _invokeRun.Reset(); - _invokePtr = _lastProducedPtr; - - QueueCommand(); - - // Wait for the command to complete. - _invokeRun.Wait(); - } - - internal void WaitForFrame() - { - _frameComplete.WaitOne(); - } - - internal void SignalFrame() - { - _frameComplete.Set(); - } - - internal bool IsGpuThread() - { - return Thread.CurrentThread == _gpuThread; - } - - public void BackgroundContextAction(Action action, bool alwaysBackground = false) - { - if (IsGpuThread() && !alwaysBackground) - { - // The action must be performed on the render thread. - New<ActionCommand>().Set(Ref(action)); - InvokeCommand(); - } - else - { - _baseRenderer.BackgroundContextAction(action, true); - } - } - - public BufferHandle CreateBuffer(int size, BufferHandle storageHint) - { - BufferHandle handle = Buffers.CreateBufferHandle(); - New<CreateBufferCommand>().Set(handle, size, storageHint); - QueueCommand(); - - return handle; - } - - public IProgram CreateProgram(ShaderSource[] shaders, ShaderInfo info) - { - var program = new ThreadedProgram(this); - - SourceProgramRequest request = new SourceProgramRequest(program, shaders, info); - - Programs.Add(request); - - New<CreateProgramCommand>().Set(Ref((IProgramRequest)request)); - QueueCommand(); - - return program; - } - - public ISampler CreateSampler(SamplerCreateInfo info) - { - var sampler = new ThreadedSampler(this); - New<CreateSamplerCommand>().Set(Ref(sampler), info); - QueueCommand(); - - return sampler; - } - - public void CreateSync(ulong id, bool strict) - { - Sync.CreateSyncHandle(id); - New<CreateSyncCommand>().Set(id, strict); - QueueCommand(); - } - - public ITexture CreateTexture(TextureCreateInfo info, float scale) - { - if (IsGpuThread()) - { - var texture = new ThreadedTexture(this, info, scale); - New<CreateTextureCommand>().Set(Ref(texture), info, scale); - QueueCommand(); - - return texture; - } - else - { - var texture = new ThreadedTexture(this, info, scale); - texture.Base = _baseRenderer.CreateTexture(info, scale); - - return texture; - } - } - - public void DeleteBuffer(BufferHandle buffer) - { - New<BufferDisposeCommand>().Set(buffer); - QueueCommand(); - } - - public PinnedSpan<byte> GetBufferData(BufferHandle buffer, int offset, int size) - { - if (IsGpuThread()) - { - ResultBox<PinnedSpan<byte>> box = new ResultBox<PinnedSpan<byte>>(); - New<BufferGetDataCommand>().Set(buffer, offset, size, Ref(box)); - InvokeCommand(); - - return box.Result; - } - else - { - return _baseRenderer.GetBufferData(Buffers.MapBufferBlocking(buffer), offset, size); - } - } - - public Capabilities GetCapabilities() - { - ResultBox<Capabilities> box = new ResultBox<Capabilities>(); - New<GetCapabilitiesCommand>().Set(Ref(box)); - InvokeCommand(); - - return box.Result; - } - - public ulong GetCurrentSync() - { - return _baseRenderer.GetCurrentSync(); - } - - public HardwareInfo GetHardwareInfo() - { - return _baseRenderer.GetHardwareInfo(); - } - - /// <summary> - /// Initialize the base renderer. Must be called on the render thread. - /// </summary> - /// <param name="logLevel">Log level to use</param> - public void Initialize(GraphicsDebugLevel logLevel) - { - _baseRenderer.Initialize(logLevel); - } - - public IProgram LoadProgramBinary(byte[] programBinary, bool hasFragmentShader, ShaderInfo info) - { - var program = new ThreadedProgram(this); - - BinaryProgramRequest request = new BinaryProgramRequest(program, programBinary, hasFragmentShader, info); - Programs.Add(request); - - New<CreateProgramCommand>().Set(Ref((IProgramRequest)request)); - QueueCommand(); - - return program; - } - - public void PreFrame() - { - New<PreFrameCommand>(); - QueueCommand(); - } - - public ICounterEvent ReportCounter(CounterType type, EventHandler<ulong> resultHandler, bool hostReserved) - { - ThreadedCounterEvent evt = new ThreadedCounterEvent(this, type, _lastSampleCounterClear); - New<ReportCounterCommand>().Set(Ref(evt), type, Ref(resultHandler), hostReserved); - QueueCommand(); - - if (type == CounterType.SamplesPassed) - { - _lastSampleCounterClear = false; - } - - return evt; - } - - public void ResetCounter(CounterType type) - { - New<ResetCounterCommand>().Set(type); - QueueCommand(); - _lastSampleCounterClear = true; - } - - public void Screenshot() - { - _baseRenderer.Screenshot(); - } - - public void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan<byte> data) - { - New<BufferSetDataCommand>().Set(buffer, offset, CopySpan(data)); - QueueCommand(); - } - - public void UpdateCounters() - { - New<UpdateCountersCommand>(); - QueueCommand(); - } - - public void WaitSync(ulong id) - { - Sync.WaitSyncAvailability(id); - - _baseRenderer.WaitSync(id); - } - - private void Interrupt(Action action) - { - // Interrupt the backend thread from any external thread and invoke the given action. - - if (Thread.CurrentThread == _backendThread) - { - // If this is called from the backend thread, the action can run immediately. - action(); - } - else - { - while (Interlocked.CompareExchange(ref _interruptAction, action, null) != null) { } - - _galWorkAvailable.Set(); - - _interruptRun.WaitOne(); - } - } - - public void SetInterruptAction(Action<Action> interruptAction) - { - // Threaded renderer ignores given interrupt action, as it provides its own to the child renderer. - } - - public void Dispose() - { - // Dispose must happen from the render thread, after all commands have completed. - - // Stop the GPU thread. - _disposed = true; - - if (_gpuThread != null && _gpuThread.IsAlive) - { - _gpuThread.Join(); - } - - // Dispose the renderer. - _baseRenderer.Dispose(); - - // Dispose events. - _frameComplete.Dispose(); - _galWorkAvailable.Dispose(); - _invokeRun.Dispose(); - _interruptRun.Dispose(); - - Sync.Dispose(); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs b/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs deleted file mode 100644 index a647d37e..00000000 --- a/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Ryujinx.Graphics.GAL.Multithreading.Commands.Window; -using Ryujinx.Graphics.GAL.Multithreading.Model; -using Ryujinx.Graphics.GAL.Multithreading.Resources; -using System; - -namespace Ryujinx.Graphics.GAL.Multithreading -{ - public class ThreadedWindow : IWindow - { - private ThreadedRenderer _renderer; - private IRenderer _impl; - - public ThreadedWindow(ThreadedRenderer renderer, IRenderer impl) - { - _renderer = renderer; - _impl = impl; - } - - public void Present(ITexture texture, ImageCrop crop, Action swapBuffersCallback) - { - // If there's already a frame in the pipeline, wait for it to be presented first. - // This is a multithread rate limit - we can't be more than one frame behind the command queue. - - _renderer.WaitForFrame(); - _renderer.New<WindowPresentCommand>().Set(new TableRef<ThreadedTexture>(_renderer, texture as ThreadedTexture), crop, new TableRef<Action>(_renderer, swapBuffersCallback)); - _renderer.QueueCommand(); - } - - public void SetSize(int width, int height) - { - _impl.Window.SetSize(width, height); - } - - public void ChangeVSyncMode(bool vsyncEnabled) { } - - public void SetAntiAliasing(AntiAliasing effect) { } - - public void SetScalingFilter(ScalingFilter type) { } - - public void SetScalingFilterLevel(float level) { } - } -} diff --git a/Ryujinx.Graphics.GAL/Origin.cs b/Ryujinx.Graphics.GAL/Origin.cs deleted file mode 100644 index d1b69cfd..00000000 --- a/Ryujinx.Graphics.GAL/Origin.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum Origin - { - UpperLeft, - LowerLeft - } -} diff --git a/Ryujinx.Graphics.GAL/PinnedSpan.cs b/Ryujinx.Graphics.GAL/PinnedSpan.cs deleted file mode 100644 index 275b3b86..00000000 --- a/Ryujinx.Graphics.GAL/PinnedSpan.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace Ryujinx.Graphics.GAL -{ - public unsafe struct PinnedSpan<T> : IDisposable where T : unmanaged - { - private void* _ptr; - private int _size; - private Action _disposeAction; - - /// <summary> - /// Creates a new PinnedSpan from an existing ReadOnlySpan. The span *must* be pinned in memory. - /// The data must be guaranteed to live until disposeAction is called. - /// </summary> - /// <param name="span">Existing span</param> - /// <param name="disposeAction">Action to call on dispose</param> - /// <remarks> - /// If a dispose action is not provided, it is safe to assume the resource will be available until the next call. - /// </remarks> - public static PinnedSpan<T> UnsafeFromSpan(ReadOnlySpan<T> span, Action disposeAction = null) - { - return new PinnedSpan<T>(Unsafe.AsPointer(ref MemoryMarshal.GetReference(span)), span.Length, disposeAction); - } - - /// <summary> - /// Creates a new PinnedSpan from an existing unsafe region. The data must be guaranteed to live until disposeAction is called. - /// </summary> - /// <param name="ptr">Pointer to the region</param> - /// <param name="size">The total items of T the region contains</param> - /// <param name="disposeAction">Action to call on dispose</param> - /// <remarks> - /// If a dispose action is not provided, it is safe to assume the resource will be available until the next call. - /// </remarks> - public PinnedSpan(void* ptr, int size, Action disposeAction = null) - { - _ptr = ptr; - _size = size; - _disposeAction = disposeAction; - } - - public ReadOnlySpan<T> Get() - { - return new ReadOnlySpan<T>(_ptr, _size * Unsafe.SizeOf<T>()); - } - - public void Dispose() - { - _disposeAction?.Invoke(); - } - } -} diff --git a/Ryujinx.Graphics.GAL/PolygonMode.cs b/Ryujinx.Graphics.GAL/PolygonMode.cs deleted file mode 100644 index d6110c1b..00000000 --- a/Ryujinx.Graphics.GAL/PolygonMode.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum PolygonMode - { - Point = 0x1b00, - Line = 0x1b01, - Fill = 0x1b02 - } -} diff --git a/Ryujinx.Graphics.GAL/PolygonModeMask.cs b/Ryujinx.Graphics.GAL/PolygonModeMask.cs deleted file mode 100644 index 514b4231..00000000 --- a/Ryujinx.Graphics.GAL/PolygonModeMask.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace Ryujinx.Graphics.GAL -{ - [Flags] - public enum PolygonModeMask - { - Point = 1 << 0, - Line = 1 << 1, - Fill = 1 << 2 - } -} diff --git a/Ryujinx.Graphics.GAL/PrimitiveTopology.cs b/Ryujinx.Graphics.GAL/PrimitiveTopology.cs deleted file mode 100644 index ed567a68..00000000 --- a/Ryujinx.Graphics.GAL/PrimitiveTopology.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum PrimitiveTopology - { - Points, - Lines, - LineLoop, - LineStrip, - Triangles, - TriangleStrip, - TriangleFan, - Quads, - QuadStrip, - Polygon, - LinesAdjacency, - LineStripAdjacency, - TrianglesAdjacency, - TriangleStripAdjacency, - Patches - } -} diff --git a/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs b/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs deleted file mode 100644 index 5ca1be8c..00000000 --- a/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum ProgramLinkStatus - { - Incomplete, - Success, - Failure - } -} diff --git a/Ryujinx.Graphics.GAL/ProgramPipelineState.cs b/Ryujinx.Graphics.GAL/ProgramPipelineState.cs deleted file mode 100644 index 41afb34b..00000000 --- a/Ryujinx.Graphics.GAL/ProgramPipelineState.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Ryujinx.Common.Memory; -using System; - -namespace Ryujinx.Graphics.GAL -{ - /// <summary> - /// Descriptor for a pipeline buffer binding. - /// </summary> - public readonly struct BufferPipelineDescriptor - { - public bool Enable { get; } - public int Stride { get; } - public int Divisor { get; } - - public BufferPipelineDescriptor(bool enable, int stride, int divisor) - { - Enable = enable; - Stride = stride; - Divisor = divisor; - } - } - - /// <summary> - /// State required for a program to compile shaders. - /// </summary> - public struct ProgramPipelineState - { - // Some state is considered always dynamic and should not be included: - // - Viewports/Scissors - // - Bias values (not enable) - - public int SamplesCount; - public Array8<bool> AttachmentEnable; - public Array8<Format> AttachmentFormats; - public bool DepthStencilEnable; - public Format DepthStencilFormat; - - public bool LogicOpEnable; - public LogicalOp LogicOp; - public Array8<BlendDescriptor> BlendDescriptors; - public Array8<uint> ColorWriteMask; - - public int VertexAttribCount; - public Array32<VertexAttribDescriptor> VertexAttribs; - - public int VertexBufferCount; - public Array32<BufferPipelineDescriptor> VertexBuffers; - - // TODO: Min/max depth bounds. - public DepthTestDescriptor DepthTest; - public StencilTestDescriptor StencilTest; - public FrontFace FrontFace; - public Face CullMode; - public bool CullEnable; - - public PolygonModeMask BiasEnable; - - public float LineWidth; - // TODO: Polygon mode. - public bool DepthClampEnable; - public bool RasterizerDiscard; - public PrimitiveTopology Topology; - public bool PrimitiveRestartEnable; - public uint PatchControlPoints; - - public void SetVertexAttribs(ReadOnlySpan<VertexAttribDescriptor> vertexAttribs) - { - VertexAttribCount = vertexAttribs.Length; - vertexAttribs.CopyTo(VertexAttribs.AsSpan()); - } - - public void SetLogicOpState(bool enable, LogicalOp op) - { - LogicOp = op; - LogicOpEnable = enable; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Rectangle.cs b/Ryujinx.Graphics.GAL/Rectangle.cs deleted file mode 100644 index c8fa93d9..00000000 --- a/Ryujinx.Graphics.GAL/Rectangle.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct Rectangle<T> where T : unmanaged - { - public T X { get; } - public T Y { get; } - public T Width { get; } - public T Height { get; } - - public Rectangle(T x, T y, T width, T height) - { - X = x; - Y = y; - Width = width; - Height = height; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Ryujinx.Graphics.GAL.csproj b/Ryujinx.Graphics.GAL/Ryujinx.Graphics.GAL.csproj deleted file mode 100644 index 189108a3..00000000 --- a/Ryujinx.Graphics.GAL/Ryujinx.Graphics.GAL.csproj +++ /dev/null @@ -1,20 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - - <PropertyGroup> - <TargetFramework>net7.0</TargetFramework> - </PropertyGroup> - - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - </PropertyGroup> - - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - </PropertyGroup> - - <ItemGroup> - <ProjectReference Include="..\Ryujinx.Graphics.Shader\Ryujinx.Graphics.Shader.csproj" /> - <ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" /> - </ItemGroup> - -</Project> diff --git a/Ryujinx.Graphics.GAL/SamplerCreateInfo.cs b/Ryujinx.Graphics.GAL/SamplerCreateInfo.cs deleted file mode 100644 index 990c302e..00000000 --- a/Ryujinx.Graphics.GAL/SamplerCreateInfo.cs +++ /dev/null @@ -1,72 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct SamplerCreateInfo - { - public MinFilter MinFilter { get; } - public MagFilter MagFilter { get; } - - public bool SeamlessCubemap { get; } - - public AddressMode AddressU { get; } - public AddressMode AddressV { get; } - public AddressMode AddressP { get; } - - public CompareMode CompareMode { get; } - public CompareOp CompareOp { get; } - - public ColorF BorderColor { get; } - - public float MinLod { get; } - public float MaxLod { get; } - public float MipLodBias { get; } - public float MaxAnisotropy { get; } - - public SamplerCreateInfo( - MinFilter minFilter, - MagFilter magFilter, - bool seamlessCubemap, - AddressMode addressU, - AddressMode addressV, - AddressMode addressP, - CompareMode compareMode, - CompareOp compareOp, - ColorF borderColor, - float minLod, - float maxLod, - float mipLodBias, - float maxAnisotropy) - { - MinFilter = minFilter; - MagFilter = magFilter; - SeamlessCubemap = seamlessCubemap; - AddressU = addressU; - AddressV = addressV; - AddressP = addressP; - CompareMode = compareMode; - CompareOp = compareOp; - BorderColor = borderColor; - MinLod = minLod; - MaxLod = maxLod; - MipLodBias = mipLodBias; - MaxAnisotropy = maxAnisotropy; - } - - public static SamplerCreateInfo Create(MinFilter minFilter, MagFilter magFilter) - { - return new SamplerCreateInfo( - minFilter, - magFilter, - false, - AddressMode.ClampToEdge, - AddressMode.ClampToEdge, - AddressMode.ClampToEdge, - CompareMode.None, - CompareOp.Always, - new ColorF(0f, 0f, 0f, 0f), - 0f, - 0f, - 0f, - 1f); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/ScreenCaptureImageInfo.cs b/Ryujinx.Graphics.GAL/ScreenCaptureImageInfo.cs deleted file mode 100644 index 129913ec..00000000 --- a/Ryujinx.Graphics.GAL/ScreenCaptureImageInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct ScreenCaptureImageInfo - { - public ScreenCaptureImageInfo(int width, int height, bool isBgra, byte[] data, bool flipX, bool flipY) - { - Width = width; - Height = height; - IsBgra = isBgra; - Data = data; - FlipX = flipX; - FlipY = flipY; - } - - public int Width { get; } - public int Height { get; } - public byte[] Data { get; } - public bool IsBgra { get; } - public bool FlipX { get; } - public bool FlipY { get; } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/ShaderBindings.cs b/Ryujinx.Graphics.GAL/ShaderBindings.cs deleted file mode 100644 index 6ab29382..00000000 --- a/Ryujinx.Graphics.GAL/ShaderBindings.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; - -namespace Ryujinx.Graphics.GAL -{ - public readonly struct ShaderBindings - { - public IReadOnlyCollection<int> UniformBufferBindings { get; } - public IReadOnlyCollection<int> StorageBufferBindings { get; } - public IReadOnlyCollection<int> TextureBindings { get; } - public IReadOnlyCollection<int> ImageBindings { get; } - - public ShaderBindings( - IReadOnlyCollection<int> uniformBufferBindings, - IReadOnlyCollection<int> storageBufferBindings, - IReadOnlyCollection<int> textureBindings, - IReadOnlyCollection<int> imageBindings) - { - UniformBufferBindings = uniformBufferBindings; - StorageBufferBindings = storageBufferBindings; - TextureBindings = textureBindings; - ImageBindings = imageBindings; - } - } -} diff --git a/Ryujinx.Graphics.GAL/ShaderInfo.cs b/Ryujinx.Graphics.GAL/ShaderInfo.cs deleted file mode 100644 index b4c87117..00000000 --- a/Ryujinx.Graphics.GAL/ShaderInfo.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public struct ShaderInfo - { - public int FragmentOutputMap { get; } - public ProgramPipelineState? State { get; } - public bool FromCache { get; set; } - - public ShaderInfo(int fragmentOutputMap, ProgramPipelineState state, bool fromCache = false) - { - FragmentOutputMap = fragmentOutputMap; - State = state; - FromCache = fromCache; - } - - public ShaderInfo(int fragmentOutputMap, bool fromCache = false) - { - FragmentOutputMap = fragmentOutputMap; - State = null; - FromCache = fromCache; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/ShaderSource.cs b/Ryujinx.Graphics.GAL/ShaderSource.cs deleted file mode 100644 index 91d3a632..00000000 --- a/Ryujinx.Graphics.GAL/ShaderSource.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Ryujinx.Graphics.Shader; -using Ryujinx.Graphics.Shader.Translation; - -namespace Ryujinx.Graphics.GAL -{ - public readonly struct ShaderSource - { - public string Code { get; } - public byte[] BinaryCode { get; } - public ShaderBindings Bindings { get; } - public ShaderStage Stage { get; } - public TargetLanguage Language { get; } - - public ShaderSource(string code, byte[] binaryCode, ShaderBindings bindings, ShaderStage stage, TargetLanguage language) - { - Code = code; - BinaryCode = binaryCode; - Bindings = bindings; - Stage = stage; - Language = language; - } - - public ShaderSource(string code, ShaderBindings bindings, ShaderStage stage, TargetLanguage language) : this(code, null, bindings, stage, language) - { - } - - public ShaderSource(byte[] binaryCode, ShaderBindings bindings, ShaderStage stage, TargetLanguage language) : this(null, binaryCode, bindings, stage, language) - { - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/StencilOp.cs b/Ryujinx.Graphics.GAL/StencilOp.cs deleted file mode 100644 index fe999b0f..00000000 --- a/Ryujinx.Graphics.GAL/StencilOp.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum StencilOp - { - Keep = 1, - Zero, - Replace, - IncrementAndClamp, - DecrementAndClamp, - Invert, - IncrementAndWrap, - DecrementAndWrap, - - ZeroGl = 0x0, - InvertGl = 0x150a, - KeepGl = 0x1e00, - ReplaceGl = 0x1e01, - IncrementAndClampGl = 0x1e02, - DecrementAndClampGl = 0x1e03, - IncrementAndWrapGl = 0x8507, - DecrementAndWrapGl = 0x8508 - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/StencilTestDescriptor.cs b/Ryujinx.Graphics.GAL/StencilTestDescriptor.cs deleted file mode 100644 index db46c957..00000000 --- a/Ryujinx.Graphics.GAL/StencilTestDescriptor.cs +++ /dev/null @@ -1,56 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct StencilTestDescriptor - { - public bool TestEnable { get; } - - public CompareOp FrontFunc { get; } - public StencilOp FrontSFail { get; } - public StencilOp FrontDpPass { get; } - public StencilOp FrontDpFail { get; } - public int FrontFuncRef { get; } - public int FrontFuncMask { get; } - public int FrontMask { get; } - public CompareOp BackFunc { get; } - public StencilOp BackSFail { get; } - public StencilOp BackDpPass { get; } - public StencilOp BackDpFail { get; } - public int BackFuncRef { get; } - public int BackFuncMask { get; } - public int BackMask { get; } - - public StencilTestDescriptor( - bool testEnable, - CompareOp frontFunc, - StencilOp frontSFail, - StencilOp frontDpPass, - StencilOp frontDpFail, - int frontFuncRef, - int frontFuncMask, - int frontMask, - CompareOp backFunc, - StencilOp backSFail, - StencilOp backDpPass, - StencilOp backDpFail, - int backFuncRef, - int backFuncMask, - int backMask) - { - TestEnable = testEnable; - FrontFunc = frontFunc; - FrontSFail = frontSFail; - FrontDpPass = frontDpPass; - FrontDpFail = frontDpFail; - FrontFuncRef = frontFuncRef; - FrontFuncMask = frontFuncMask; - FrontMask = frontMask; - BackFunc = backFunc; - BackSFail = backSFail; - BackDpPass = backDpPass; - BackDpFail = backDpFail; - BackFuncRef = backFuncRef; - BackFuncMask = backFuncMask; - BackMask = backMask; - } - } -} diff --git a/Ryujinx.Graphics.GAL/SupportBufferUpdater.cs b/Ryujinx.Graphics.GAL/SupportBufferUpdater.cs deleted file mode 100644 index 6eeddb6c..00000000 --- a/Ryujinx.Graphics.GAL/SupportBufferUpdater.cs +++ /dev/null @@ -1,101 +0,0 @@ -using Ryujinx.Graphics.Shader; -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace Ryujinx.Graphics.GAL -{ - public class SupportBufferUpdater : IDisposable - { - public SupportBuffer Data; - public BufferHandle Handle; - - private IRenderer _renderer; - private int _startOffset = -1; - private int _endOffset = -1; - - public SupportBufferUpdater(IRenderer renderer) - { - _renderer = renderer; - Handle = renderer.CreateBuffer(SupportBuffer.RequiredSize); - renderer.Pipeline.ClearBuffer(Handle, 0, SupportBuffer.RequiredSize, 0); - } - - private void MarkDirty(int startOffset, int byteSize) - { - int endOffset = startOffset + byteSize; - - if (_startOffset == -1) - { - _startOffset = startOffset; - _endOffset = endOffset; - } - else - { - if (startOffset < _startOffset) - { - _startOffset = startOffset; - } - - if (endOffset > _endOffset) - { - _endOffset = endOffset; - } - } - } - - public void UpdateFragmentRenderScaleCount(int count) - { - if (Data.FragmentRenderScaleCount.X != count) - { - Data.FragmentRenderScaleCount.X = count; - - MarkDirty(SupportBuffer.FragmentRenderScaleCountOffset, sizeof(int)); - } - } - - private void UpdateGenericField<T>(int baseOffset, ReadOnlySpan<T> data, Span<T> target, int offset, int count) where T : unmanaged - { - data.Slice(0, count).CopyTo(target.Slice(offset)); - - int elemSize = Unsafe.SizeOf<T>(); - - MarkDirty(baseOffset + offset * elemSize, count * elemSize); - } - - public void UpdateRenderScale(ReadOnlySpan<Vector4<float>> data, int offset, int count) - { - UpdateGenericField(SupportBuffer.GraphicsRenderScaleOffset, data, Data.RenderScale.AsSpan(), offset, count); - } - - public void UpdateFragmentIsBgra(ReadOnlySpan<Vector4<int>> data, int offset, int count) - { - UpdateGenericField(SupportBuffer.FragmentIsBgraOffset, data, Data.FragmentIsBgra.AsSpan(), offset, count); - } - - public void UpdateViewportInverse(Vector4<float> data) - { - Data.ViewportInverse = data; - - MarkDirty(SupportBuffer.ViewportInverseOffset, SupportBuffer.FieldSize); - } - - public void Commit() - { - if (_startOffset != -1) - { - ReadOnlySpan<byte> data = MemoryMarshal.Cast<SupportBuffer, byte>(MemoryMarshal.CreateSpan(ref Data, 1)); - - _renderer.SetBufferData(Handle, _startOffset, data.Slice(_startOffset, _endOffset - _startOffset)); - - _startOffset = -1; - _endOffset = -1; - } - } - - public void Dispose() - { - _renderer.DeleteBuffer(Handle); - } - } -} diff --git a/Ryujinx.Graphics.GAL/SwizzleComponent.cs b/Ryujinx.Graphics.GAL/SwizzleComponent.cs deleted file mode 100644 index a405bd13..00000000 --- a/Ryujinx.Graphics.GAL/SwizzleComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum SwizzleComponent - { - Zero, - One, - Red, - Green, - Blue, - Alpha - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/Target.cs b/Ryujinx.Graphics.GAL/Target.cs deleted file mode 100644 index 711eea24..00000000 --- a/Ryujinx.Graphics.GAL/Target.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum Target - { - Texture1D, - Texture2D, - Texture3D, - Texture1DArray, - Texture2DArray, - Texture2DMultisample, - Texture2DMultisampleArray, - Cubemap, - CubemapArray, - TextureBuffer - } - - public static class TargetExtensions - { - public static bool IsMultisample(this Target target) - { - return target == Target.Texture2DMultisample || target == Target.Texture2DMultisampleArray; - } - - public static bool HasDepthOrLayers(this Target target) - { - return target == Target.Texture3D || - target == Target.Texture1DArray || - target == Target.Texture2DArray || - target == Target.Texture2DMultisampleArray || - target == Target.Cubemap || - target == Target.CubemapArray; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/TextureCreateInfo.cs b/Ryujinx.Graphics.GAL/TextureCreateInfo.cs deleted file mode 100644 index 52b3b11f..00000000 --- a/Ryujinx.Graphics.GAL/TextureCreateInfo.cs +++ /dev/null @@ -1,164 +0,0 @@ -using Ryujinx.Common; -using System; -using System.Numerics; - -namespace Ryujinx.Graphics.GAL -{ - public readonly struct TextureCreateInfo : IEquatable<TextureCreateInfo> - { - public int Width { get; } - public int Height { get; } - public int Depth { get; } - public int Levels { get; } - public int Samples { get; } - public int BlockWidth { get; } - public int BlockHeight { get; } - public int BytesPerPixel { get; } - - public bool IsCompressed => (BlockWidth | BlockHeight) != 1; - - public Format Format { get; } - - public DepthStencilMode DepthStencilMode { get; } - - public Target Target { get; } - - public SwizzleComponent SwizzleR { get; } - public SwizzleComponent SwizzleG { get; } - public SwizzleComponent SwizzleB { get; } - public SwizzleComponent SwizzleA { get; } - - public TextureCreateInfo( - int width, - int height, - int depth, - int levels, - int samples, - int blockWidth, - int blockHeight, - int bytesPerPixel, - Format format, - DepthStencilMode depthStencilMode, - Target target, - SwizzleComponent swizzleR, - SwizzleComponent swizzleG, - SwizzleComponent swizzleB, - SwizzleComponent swizzleA) - { - Width = width; - Height = height; - Depth = depth; - Levels = levels; - Samples = samples; - BlockWidth = blockWidth; - BlockHeight = blockHeight; - BytesPerPixel = bytesPerPixel; - Format = format; - DepthStencilMode = depthStencilMode; - Target = target; - SwizzleR = swizzleR; - SwizzleG = swizzleG; - SwizzleB = swizzleB; - SwizzleA = swizzleA; - } - - public int GetMipSize(int level) - { - return GetMipStride(level) * GetLevelHeight(level) * GetLevelDepth(level); - } - - public int GetMipSize2D(int level) - { - return GetMipStride(level) * GetLevelHeight(level); - } - - public int GetMipStride(int level) - { - return BitUtils.AlignUp(GetLevelWidth(level) * BytesPerPixel, 4); - } - - private int GetLevelWidth(int level) - { - return BitUtils.DivRoundUp(GetLevelSize(Width, level), BlockWidth); - } - - private int GetLevelHeight(int level) - { - return BitUtils.DivRoundUp(GetLevelSize(Height, level), BlockHeight); - } - - private int GetLevelDepth(int level) - { - return Target == Target.Texture3D ? GetLevelSize(Depth, level) : GetLayers(); - } - - public int GetDepthOrLayers() - { - return Target == Target.Texture3D ? Depth : GetLayers(); - } - - public int GetLayers() - { - if (Target == Target.Texture2DArray || - Target == Target.Texture2DMultisampleArray || - Target == Target.CubemapArray) - { - return Depth; - } - else if (Target == Target.Cubemap) - { - return 6; - } - - return 1; - } - - public int GetLevelsClamped() - { - int maxSize = Width; - - if (Target != Target.Texture1D && - Target != Target.Texture1DArray) - { - maxSize = Math.Max(maxSize, Height); - } - - if (Target == Target.Texture3D) - { - maxSize = Math.Max(maxSize, Depth); - } - - int maxLevels = BitOperations.Log2((uint)maxSize) + 1; - return Math.Min(Levels, maxLevels); - } - - private static int GetLevelSize(int size, int level) - { - return Math.Max(1, size >> level); - } - - public override int GetHashCode() - { - return HashCode.Combine(Width, Height); - } - - bool IEquatable<TextureCreateInfo>.Equals(TextureCreateInfo other) - { - return Width == other.Width && - Height == other.Height && - Depth == other.Depth && - Levels == other.Levels && - Samples == other.Samples && - BlockWidth == other.BlockWidth && - BlockHeight == other.BlockHeight && - BytesPerPixel == other.BytesPerPixel && - Format == other.Format && - DepthStencilMode == other.DepthStencilMode && - Target == other.Target && - SwizzleR == other.SwizzleR && - SwizzleG == other.SwizzleG && - SwizzleB == other.SwizzleB && - SwizzleA == other.SwizzleA; - } - } -} diff --git a/Ryujinx.Graphics.GAL/TextureReleaseCallback.cs b/Ryujinx.Graphics.GAL/TextureReleaseCallback.cs deleted file mode 100644 index c058df2b..00000000 --- a/Ryujinx.Graphics.GAL/TextureReleaseCallback.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public delegate void TextureReleaseCallback(object context); -} diff --git a/Ryujinx.Graphics.GAL/UpscaleType.cs b/Ryujinx.Graphics.GAL/UpscaleType.cs deleted file mode 100644 index 442b65f2..00000000 --- a/Ryujinx.Graphics.GAL/UpscaleType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum ScalingFilter - { - Bilinear, - Nearest, - Fsr - } -}
\ No newline at end of file diff --git a/Ryujinx.Graphics.GAL/VertexAttribDescriptor.cs b/Ryujinx.Graphics.GAL/VertexAttribDescriptor.cs deleted file mode 100644 index 4f5ea6a6..00000000 --- a/Ryujinx.Graphics.GAL/VertexAttribDescriptor.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly record struct VertexAttribDescriptor(int BufferIndex, int Offset, bool IsZero, Format Format); -} diff --git a/Ryujinx.Graphics.GAL/VertexBufferDescriptor.cs b/Ryujinx.Graphics.GAL/VertexBufferDescriptor.cs deleted file mode 100644 index 15f0dff8..00000000 --- a/Ryujinx.Graphics.GAL/VertexBufferDescriptor.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct VertexBufferDescriptor - { - public BufferRange Buffer { get; } - - public int Stride { get; } - public int Divisor { get; } - - public VertexBufferDescriptor(BufferRange buffer, int stride, int divisor) - { - Buffer = buffer; - Stride = stride; - Divisor = divisor; - } - } -} diff --git a/Ryujinx.Graphics.GAL/Viewport.cs b/Ryujinx.Graphics.GAL/Viewport.cs deleted file mode 100644 index 94012c00..00000000 --- a/Ryujinx.Graphics.GAL/Viewport.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public readonly struct Viewport - { - public Rectangle<float> Region { get; } - - public ViewportSwizzle SwizzleX { get; } - public ViewportSwizzle SwizzleY { get; } - public ViewportSwizzle SwizzleZ { get; } - public ViewportSwizzle SwizzleW { get; } - - public float DepthNear { get; } - public float DepthFar { get; } - - public Viewport( - Rectangle<float> region, - ViewportSwizzle swizzleX, - ViewportSwizzle swizzleY, - ViewportSwizzle swizzleZ, - ViewportSwizzle swizzleW, - float depthNear, - float depthFar) - { - Region = region; - SwizzleX = swizzleX; - SwizzleY = swizzleY; - SwizzleZ = swizzleZ; - SwizzleW = swizzleW; - DepthNear = depthNear; - DepthFar = depthFar; - } - } -} diff --git a/Ryujinx.Graphics.GAL/ViewportSwizzle.cs b/Ryujinx.Graphics.GAL/ViewportSwizzle.cs deleted file mode 100644 index c24a2246..00000000 --- a/Ryujinx.Graphics.GAL/ViewportSwizzle.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Ryujinx.Graphics.GAL -{ - public enum ViewportSwizzle - { - PositiveX = 0, - NegativeX = 1, - PositiveY = 2, - NegativeY = 3, - PositiveZ = 4, - NegativeZ = 5, - PositiveW = 6, - NegativeW = 7, - - NegativeFlag = 1 - } -} |
