Initial work
This commit is contained in:
parent
f617fb542a
commit
1876b346fe
518 changed files with 15170 additions and 12486 deletions
26
Ryujinx.Graphics.OpenGL/Converters/AddressModeConverter.cs
Normal file
26
Ryujinx.Graphics.OpenGL/Converters/AddressModeConverter.cs
Normal file
|
@ -0,0 +1,26 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Sampler;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class AddressModeConverter
|
||||
{
|
||||
public static TextureWrapMode Convert(this AddressMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case AddressMode.Clamp : return TextureWrapMode.Clamp;
|
||||
case AddressMode.Repeat : return TextureWrapMode.Repeat;
|
||||
case AddressMode.MirrorClamp : return (TextureWrapMode)ExtTextureMirrorClamp.MirrorClampExt;
|
||||
case AddressMode.MirrorClampToEdge : return (TextureWrapMode)ExtTextureMirrorClamp.MirrorClampToEdgeExt;
|
||||
case AddressMode.MirrorClampToBorder : return (TextureWrapMode)ExtTextureMirrorClamp.MirrorClampToBorderExt;
|
||||
case AddressMode.ClampToBorder : return TextureWrapMode.ClampToBorder;
|
||||
case AddressMode.MirroredRepeat : return TextureWrapMode.MirroredRepeat;
|
||||
case AddressMode.ClampToEdge : return TextureWrapMode.ClampToEdge;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid address mode \"{mode}\".");
|
||||
}
|
||||
}
|
||||
}
|
39
Ryujinx.Graphics.OpenGL/Converters/BlendFactorConverter.cs
Normal file
39
Ryujinx.Graphics.OpenGL/Converters/BlendFactorConverter.cs
Normal file
|
@ -0,0 +1,39 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Blend;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class BlendFactorConverter
|
||||
{
|
||||
public static All Convert(this BlendFactor factor)
|
||||
{
|
||||
switch (factor)
|
||||
{
|
||||
case BlendFactor.Zero: return All.Zero;
|
||||
case BlendFactor.One: return All.One;
|
||||
case BlendFactor.SrcColor: return All.SrcColor;
|
||||
case BlendFactor.OneMinusSrcColor: return All.OneMinusSrcColor;
|
||||
case BlendFactor.SrcAlpha: return All.SrcAlpha;
|
||||
case BlendFactor.OneMinusSrcAlpha: return All.OneMinusSrcAlpha;
|
||||
case BlendFactor.DstAlpha: return All.DstAlpha;
|
||||
case BlendFactor.OneMinusDstAlpha: return All.OneMinusDstAlpha;
|
||||
case BlendFactor.DstColor: return All.DstColor;
|
||||
case BlendFactor.OneMinusDstColor: return All.OneMinusDstColor;
|
||||
case BlendFactor.SrcAlphaSaturate: return All.SrcAlphaSaturate;
|
||||
case BlendFactor.Src1Color: return All.Src1Color;
|
||||
case BlendFactor.OneMinusSrc1Color: return All.OneMinusSrc1Color;
|
||||
case BlendFactor.Src1Alpha: return All.Src1Alpha;
|
||||
case BlendFactor.OneMinusSrc1Alpha: return All.OneMinusSrc1Alpha;
|
||||
case BlendFactor.ConstantColor: return All.ConstantColor;
|
||||
case BlendFactor.OneMinusConstantColor: return All.OneMinusConstantColor;
|
||||
case BlendFactor.ConstantAlpha: return All.ConstantAlpha;
|
||||
case BlendFactor.OneMinusConstantAlpha: return All.OneMinusConstantAlpha;
|
||||
}
|
||||
|
||||
return All.Zero;
|
||||
|
||||
throw new ArgumentException($"Invalid blend factor \"{factor}\".");
|
||||
}
|
||||
}
|
||||
}
|
25
Ryujinx.Graphics.OpenGL/Converters/BlendOpConverter.cs
Normal file
25
Ryujinx.Graphics.OpenGL/Converters/BlendOpConverter.cs
Normal file
|
@ -0,0 +1,25 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Blend;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class BlendOpConverter
|
||||
{
|
||||
public static BlendEquationMode Convert(this BlendOp op)
|
||||
{
|
||||
switch (op)
|
||||
{
|
||||
case BlendOp.Add: return BlendEquationMode.FuncAdd;
|
||||
case BlendOp.Subtract: return BlendEquationMode.FuncSubtract;
|
||||
case BlendOp.ReverseSubtract: return BlendEquationMode.FuncReverseSubtract;
|
||||
case BlendOp.Minimum: return BlendEquationMode.Min;
|
||||
case BlendOp.Maximum: return BlendEquationMode.Max;
|
||||
}
|
||||
|
||||
return BlendEquationMode.FuncAdd;
|
||||
|
||||
throw new ArgumentException($"Invalid blend operation \"{op}\".");
|
||||
}
|
||||
}
|
||||
}
|
20
Ryujinx.Graphics.OpenGL/Converters/CompareModeConverter.cs
Normal file
20
Ryujinx.Graphics.OpenGL/Converters/CompareModeConverter.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Sampler;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class CompareModeConverter
|
||||
{
|
||||
public static TextureCompareMode Convert(this CompareMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case CompareMode.None: return TextureCompareMode.None;
|
||||
case CompareMode.CompareRToTexture: return TextureCompareMode.CompareRToTexture;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid compare mode \"{mode}\".");
|
||||
}
|
||||
}
|
||||
}
|
28
Ryujinx.Graphics.OpenGL/Converters/CompareOpConverter.cs
Normal file
28
Ryujinx.Graphics.OpenGL/Converters/CompareOpConverter.cs
Normal file
|
@ -0,0 +1,28 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class CompareOpConverter
|
||||
{
|
||||
public static All Convert(this CompareOp op)
|
||||
{
|
||||
switch (op)
|
||||
{
|
||||
case CompareOp.Never: return All.Never;
|
||||
case CompareOp.Less: return All.Less;
|
||||
case CompareOp.Equal: return All.Equal;
|
||||
case CompareOp.LessOrEqual: return All.Lequal;
|
||||
case CompareOp.Greater: return All.Greater;
|
||||
case CompareOp.NotEqual: return All.Notequal;
|
||||
case CompareOp.GreaterOrEqual: return All.Gequal;
|
||||
case CompareOp.Always: return All.Always;
|
||||
}
|
||||
|
||||
return All.Never;
|
||||
|
||||
throw new ArgumentException($"Invalid compare operation \"{op}\".");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Texture;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class DepthStencilModeConverter
|
||||
{
|
||||
public static All Convert(this DepthStencilMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case DepthStencilMode.Depth: return All.Depth;
|
||||
case DepthStencilMode.Stencil: return All.Stencil;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid depth stencil mode \"{mode}\".");
|
||||
}
|
||||
}
|
||||
}
|
23
Ryujinx.Graphics.OpenGL/Converters/FaceConverter.cs
Normal file
23
Ryujinx.Graphics.OpenGL/Converters/FaceConverter.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class FaceConverter
|
||||
{
|
||||
public static CullFaceMode Convert(this Face face)
|
||||
{
|
||||
switch (face)
|
||||
{
|
||||
case Face.Back: return CullFaceMode.Back;
|
||||
case Face.Front: return CullFaceMode.Front;
|
||||
case Face.FrontAndBack: return CullFaceMode.FrontAndBack;
|
||||
}
|
||||
|
||||
return CullFaceMode.FrontAndBack;
|
||||
|
||||
throw new ArgumentException($"Invalid face \"{face}\".");
|
||||
}
|
||||
}
|
||||
}
|
22
Ryujinx.Graphics.OpenGL/Converters/FrontFaceConverter.cs
Normal file
22
Ryujinx.Graphics.OpenGL/Converters/FrontFaceConverter.cs
Normal file
|
@ -0,0 +1,22 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class FrontFaceConverter
|
||||
{
|
||||
public static FrontFaceDirection Convert(this FrontFace frontFace)
|
||||
{
|
||||
switch (frontFace)
|
||||
{
|
||||
case FrontFace.Clockwise: return FrontFaceDirection.Cw;
|
||||
case FrontFace.CounterClockwise: return FrontFaceDirection.Ccw;
|
||||
}
|
||||
|
||||
return FrontFaceDirection.Cw;
|
||||
|
||||
throw new ArgumentException($"Invalid front face \"{frontFace}\".");
|
||||
}
|
||||
}
|
||||
}
|
21
Ryujinx.Graphics.OpenGL/Converters/IndexTypeConverter.cs
Normal file
21
Ryujinx.Graphics.OpenGL/Converters/IndexTypeConverter.cs
Normal file
|
@ -0,0 +1,21 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class IndexTypeConverter
|
||||
{
|
||||
public static DrawElementsType Convert(this IndexType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case IndexType.UByte: return DrawElementsType.UnsignedByte;
|
||||
case IndexType.UShort: return DrawElementsType.UnsignedShort;
|
||||
case IndexType.UInt: return DrawElementsType.UnsignedInt;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid index type \"{type}\".");
|
||||
}
|
||||
}
|
||||
}
|
20
Ryujinx.Graphics.OpenGL/Converters/MagFilterConverter.cs
Normal file
20
Ryujinx.Graphics.OpenGL/Converters/MagFilterConverter.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Sampler;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class MagFilterConverter
|
||||
{
|
||||
public static TextureMagFilter Convert(this MagFilter filter)
|
||||
{
|
||||
switch (filter)
|
||||
{
|
||||
case MagFilter.Nearest: return TextureMagFilter.Nearest;
|
||||
case MagFilter.Linear: return TextureMagFilter.Linear;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid filter \"{filter}\".");
|
||||
}
|
||||
}
|
||||
}
|
24
Ryujinx.Graphics.OpenGL/Converters/MinFilterConverter.cs
Normal file
24
Ryujinx.Graphics.OpenGL/Converters/MinFilterConverter.cs
Normal file
|
@ -0,0 +1,24 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Sampler;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class MinFilterConverter
|
||||
{
|
||||
public static TextureMinFilter Convert(this MinFilter filter)
|
||||
{
|
||||
switch (filter)
|
||||
{
|
||||
case MinFilter.Nearest: return TextureMinFilter.Nearest;
|
||||
case MinFilter.Linear: return TextureMinFilter.Linear;
|
||||
case MinFilter.NearestMipmapNearest: return TextureMinFilter.NearestMipmapNearest;
|
||||
case MinFilter.LinearMipmapNearest: return TextureMinFilter.LinearMipmapNearest;
|
||||
case MinFilter.NearestMipmapLinear: return TextureMinFilter.NearestMipmapLinear;
|
||||
case MinFilter.LinearMipmapLinear: return TextureMinFilter.LinearMipmapLinear;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid filter \"{filter}\".");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class PrimitiveTopologyConverter
|
||||
{
|
||||
public static PrimitiveType Convert(this PrimitiveTopology topology)
|
||||
{
|
||||
switch (topology)
|
||||
{
|
||||
case PrimitiveTopology.Points: return PrimitiveType.Points;
|
||||
case PrimitiveTopology.Lines: return PrimitiveType.Lines;
|
||||
case PrimitiveTopology.LineLoop: return PrimitiveType.LineLoop;
|
||||
case PrimitiveTopology.LineStrip: return PrimitiveType.LineStrip;
|
||||
case PrimitiveTopology.Triangles: return PrimitiveType.Triangles;
|
||||
case PrimitiveTopology.TriangleStrip: return PrimitiveType.TriangleStrip;
|
||||
case PrimitiveTopology.TriangleFan: return PrimitiveType.TriangleFan;
|
||||
case PrimitiveTopology.Quads: return PrimitiveType.Quads;
|
||||
case PrimitiveTopology.QuadStrip: return PrimitiveType.QuadStrip;
|
||||
case PrimitiveTopology.Polygon: return PrimitiveType.Polygon;
|
||||
case PrimitiveTopology.LinesAdjacency: return PrimitiveType.LinesAdjacency;
|
||||
case PrimitiveTopology.LineStripAdjacency: return PrimitiveType.LineStripAdjacency;
|
||||
case PrimitiveTopology.TrianglesAdjacency: return PrimitiveType.TrianglesAdjacency;
|
||||
case PrimitiveTopology.TriangleStripAdjacency: return PrimitiveType.TriangleStripAdjacency;
|
||||
case PrimitiveTopology.Patches: return PrimitiveType.Patches;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid primitive topology \"{topology}\".");
|
||||
}
|
||||
}
|
||||
}
|
27
Ryujinx.Graphics.OpenGL/Converters/StencilOpConverter.cs
Normal file
27
Ryujinx.Graphics.OpenGL/Converters/StencilOpConverter.cs
Normal file
|
@ -0,0 +1,27 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class StencilOpConverter
|
||||
{
|
||||
public static StencilOp Convert(this GAL.DepthStencil.StencilOp op)
|
||||
{
|
||||
switch (op)
|
||||
{
|
||||
case GAL.DepthStencil.StencilOp.Keep: return StencilOp.Keep;
|
||||
case GAL.DepthStencil.StencilOp.Zero: return StencilOp.Zero;
|
||||
case GAL.DepthStencil.StencilOp.Replace: return StencilOp.Replace;
|
||||
case GAL.DepthStencil.StencilOp.IncrementAndClamp: return StencilOp.Incr;
|
||||
case GAL.DepthStencil.StencilOp.DecrementAndClamp: return StencilOp.Decr;
|
||||
case GAL.DepthStencil.StencilOp.Invert: return StencilOp.Invert;
|
||||
case GAL.DepthStencil.StencilOp.IncrementAndWrap: return StencilOp.IncrWrap;
|
||||
case GAL.DepthStencil.StencilOp.DecrementAndWrap: return StencilOp.DecrWrap;
|
||||
}
|
||||
|
||||
return StencilOp.Keep;
|
||||
|
||||
throw new ArgumentException($"Invalid stencil operation \"{op}\".");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Texture;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class SwizzleComponentConverter
|
||||
{
|
||||
public static All Convert(this SwizzleComponent swizzleComponent)
|
||||
{
|
||||
switch (swizzleComponent)
|
||||
{
|
||||
case SwizzleComponent.Zero: return All.Zero;
|
||||
case SwizzleComponent.One: return All.One;
|
||||
case SwizzleComponent.Red: return All.Red;
|
||||
case SwizzleComponent.Green: return All.Green;
|
||||
case SwizzleComponent.Blue: return All.Blue;
|
||||
case SwizzleComponent.Alpha: return All.Alpha;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid swizzle component \"{swizzleComponent}\".");
|
||||
}
|
||||
}
|
||||
}
|
33
Ryujinx.Graphics.OpenGL/Converters/TargetConverter.cs
Normal file
33
Ryujinx.Graphics.OpenGL/Converters/TargetConverter.cs
Normal file
|
@ -0,0 +1,33 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
using Ryujinx.Graphics.GAL.Texture;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
static class TargetConverter
|
||||
{
|
||||
public static ImageTarget ConvertToImageTarget(this Target target)
|
||||
{
|
||||
return (ImageTarget)target.Convert();
|
||||
}
|
||||
|
||||
public static TextureTarget Convert(this Target target)
|
||||
{
|
||||
switch (target)
|
||||
{
|
||||
case Target.Texture1D: return TextureTarget.Texture1D;
|
||||
case Target.Texture2D: return TextureTarget.Texture2D;
|
||||
case Target.Texture3D: return TextureTarget.Texture3D;
|
||||
case Target.Texture1DArray: return TextureTarget.Texture1DArray;
|
||||
case Target.Texture2DArray: return TextureTarget.Texture2DArray;
|
||||
case Target.Texture2DMultisample: return TextureTarget.Texture2DMultisample;
|
||||
case Target.Rectangle: return TextureTarget.TextureRectangle;
|
||||
case Target.Cubemap: return TextureTarget.TextureCubeMap;
|
||||
case Target.CubemapArray: return TextureTarget.TextureCubeMapArray;
|
||||
case Target.TextureBuffer: return TextureTarget.TextureBuffer;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid target \"{target}\".");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue