| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675 |
- using OpenTK.Graphics.OpenGL;
- using Ryujinx.Common.Logging;
- using Ryujinx.Graphics.GAL;
- using Ryujinx.Graphics.Shader;
- namespace Ryujinx.Graphics.OpenGL
- {
- static class EnumConversion
- {
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(AddressMode)} enum value: {mode}.");
- return TextureWrapMode.Clamp;
- }
- public static NvBlendEquationAdvanced Convert(this AdvancedBlendOp op)
- {
- switch (op)
- {
- case AdvancedBlendOp.Zero:
- return NvBlendEquationAdvanced.Zero;
- case AdvancedBlendOp.Src:
- return NvBlendEquationAdvanced.SrcNv;
- case AdvancedBlendOp.Dst:
- return NvBlendEquationAdvanced.DstNv;
- case AdvancedBlendOp.SrcOver:
- return NvBlendEquationAdvanced.SrcOverNv;
- case AdvancedBlendOp.DstOver:
- return NvBlendEquationAdvanced.DstOverNv;
- case AdvancedBlendOp.SrcIn:
- return NvBlendEquationAdvanced.SrcInNv;
- case AdvancedBlendOp.DstIn:
- return NvBlendEquationAdvanced.DstInNv;
- case AdvancedBlendOp.SrcOut:
- return NvBlendEquationAdvanced.SrcOutNv;
- case AdvancedBlendOp.DstOut:
- return NvBlendEquationAdvanced.DstOutNv;
- case AdvancedBlendOp.SrcAtop:
- return NvBlendEquationAdvanced.SrcAtopNv;
- case AdvancedBlendOp.DstAtop:
- return NvBlendEquationAdvanced.DstAtopNv;
- case AdvancedBlendOp.Xor:
- return NvBlendEquationAdvanced.XorNv;
- case AdvancedBlendOp.Plus:
- return NvBlendEquationAdvanced.PlusNv;
- case AdvancedBlendOp.PlusClamped:
- return NvBlendEquationAdvanced.PlusClampedNv;
- case AdvancedBlendOp.PlusClampedAlpha:
- return NvBlendEquationAdvanced.PlusClampedAlphaNv;
- case AdvancedBlendOp.PlusDarker:
- return NvBlendEquationAdvanced.PlusDarkerNv;
- case AdvancedBlendOp.Multiply:
- return NvBlendEquationAdvanced.MultiplyNv;
- case AdvancedBlendOp.Screen:
- return NvBlendEquationAdvanced.ScreenNv;
- case AdvancedBlendOp.Overlay:
- return NvBlendEquationAdvanced.OverlayNv;
- case AdvancedBlendOp.Darken:
- return NvBlendEquationAdvanced.DarkenNv;
- case AdvancedBlendOp.Lighten:
- return NvBlendEquationAdvanced.LightenNv;
- case AdvancedBlendOp.ColorDodge:
- return NvBlendEquationAdvanced.ColordodgeNv;
- case AdvancedBlendOp.ColorBurn:
- return NvBlendEquationAdvanced.ColorburnNv;
- case AdvancedBlendOp.HardLight:
- return NvBlendEquationAdvanced.HardlightNv;
- case AdvancedBlendOp.SoftLight:
- return NvBlendEquationAdvanced.SoftlightNv;
- case AdvancedBlendOp.Difference:
- return NvBlendEquationAdvanced.DifferenceNv;
- case AdvancedBlendOp.Minus:
- return NvBlendEquationAdvanced.MinusNv;
- case AdvancedBlendOp.MinusClamped:
- return NvBlendEquationAdvanced.MinusClampedNv;
- case AdvancedBlendOp.Exclusion:
- return NvBlendEquationAdvanced.ExclusionNv;
- case AdvancedBlendOp.Contrast:
- return NvBlendEquationAdvanced.ContrastNv;
- case AdvancedBlendOp.Invert:
- return NvBlendEquationAdvanced.Invert;
- case AdvancedBlendOp.InvertRGB:
- return NvBlendEquationAdvanced.InvertRgbNv;
- case AdvancedBlendOp.InvertOvg:
- return NvBlendEquationAdvanced.InvertOvgNv;
- case AdvancedBlendOp.LinearDodge:
- return NvBlendEquationAdvanced.LineardodgeNv;
- case AdvancedBlendOp.LinearBurn:
- return NvBlendEquationAdvanced.LinearburnNv;
- case AdvancedBlendOp.VividLight:
- return NvBlendEquationAdvanced.VividlightNv;
- case AdvancedBlendOp.LinearLight:
- return NvBlendEquationAdvanced.LinearlightNv;
- case AdvancedBlendOp.PinLight:
- return NvBlendEquationAdvanced.PinlightNv;
- case AdvancedBlendOp.HardMix:
- return NvBlendEquationAdvanced.HardmixNv;
- case AdvancedBlendOp.Red:
- return NvBlendEquationAdvanced.RedNv;
- case AdvancedBlendOp.Green:
- return NvBlendEquationAdvanced.GreenNv;
- case AdvancedBlendOp.Blue:
- return NvBlendEquationAdvanced.BlueNv;
- case AdvancedBlendOp.HslHue:
- return NvBlendEquationAdvanced.HslHueNv;
- case AdvancedBlendOp.HslSaturation:
- return NvBlendEquationAdvanced.HslSaturationNv;
- case AdvancedBlendOp.HslColor:
- return NvBlendEquationAdvanced.HslColorNv;
- case AdvancedBlendOp.HslLuminosity:
- return NvBlendEquationAdvanced.HslLuminosityNv;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(AdvancedBlendOp)} enum value: {op}.");
- return NvBlendEquationAdvanced.Zero;
- }
- public static All Convert(this AdvancedBlendOverlap overlap)
- {
- switch (overlap)
- {
- case AdvancedBlendOverlap.Uncorrelated:
- return All.UncorrelatedNv;
- case AdvancedBlendOverlap.Disjoint:
- return All.DisjointNv;
- case AdvancedBlendOverlap.Conjoint:
- return All.ConjointNv;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(AdvancedBlendOverlap)} enum value: {overlap}.");
- return All.UncorrelatedNv;
- }
- public static All Convert(this BlendFactor factor)
- {
- switch (factor)
- {
- case BlendFactor.Zero:
- case BlendFactor.ZeroGl:
- return All.Zero;
- case BlendFactor.One:
- case BlendFactor.OneGl:
- return All.One;
- case BlendFactor.SrcColor:
- case BlendFactor.SrcColorGl:
- return All.SrcColor;
- case BlendFactor.OneMinusSrcColor:
- case BlendFactor.OneMinusSrcColorGl:
- return All.OneMinusSrcColor;
- case BlendFactor.SrcAlpha:
- case BlendFactor.SrcAlphaGl:
- return All.SrcAlpha;
- case BlendFactor.OneMinusSrcAlpha:
- case BlendFactor.OneMinusSrcAlphaGl:
- return All.OneMinusSrcAlpha;
- case BlendFactor.DstAlpha:
- case BlendFactor.DstAlphaGl:
- return All.DstAlpha;
- case BlendFactor.OneMinusDstAlpha:
- case BlendFactor.OneMinusDstAlphaGl:
- return All.OneMinusDstAlpha;
- case BlendFactor.DstColor:
- case BlendFactor.DstColorGl:
- return All.DstColor;
- case BlendFactor.OneMinusDstColor:
- case BlendFactor.OneMinusDstColorGl:
- return All.OneMinusDstColor;
- case BlendFactor.SrcAlphaSaturate:
- case BlendFactor.SrcAlphaSaturateGl:
- return All.SrcAlphaSaturate;
- case BlendFactor.Src1Color:
- case BlendFactor.Src1ColorGl:
- return All.Src1Color;
- case BlendFactor.OneMinusSrc1Color:
- case BlendFactor.OneMinusSrc1ColorGl:
- return All.OneMinusSrc1Color;
- case BlendFactor.Src1Alpha:
- case BlendFactor.Src1AlphaGl:
- return All.Src1Alpha;
- case BlendFactor.OneMinusSrc1Alpha:
- case BlendFactor.OneMinusSrc1AlphaGl:
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(BlendFactor)} enum value: {factor}.");
- return All.Zero;
- }
- public static BlendEquationMode Convert(this BlendOp op)
- {
- switch (op)
- {
- case BlendOp.Add:
- case BlendOp.AddGl:
- return BlendEquationMode.FuncAdd;
- case BlendOp.Minimum:
- case BlendOp.MinimumGl:
- return BlendEquationMode.Min;
- case BlendOp.Maximum:
- case BlendOp.MaximumGl:
- return BlendEquationMode.Max;
- case BlendOp.Subtract:
- case BlendOp.SubtractGl:
- return BlendEquationMode.FuncSubtract;
- case BlendOp.ReverseSubtract:
- case BlendOp.ReverseSubtractGl:
- return BlendEquationMode.FuncReverseSubtract;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(BlendOp)} enum value: {op}.");
- return BlendEquationMode.FuncAdd;
- }
- public static TextureCompareMode Convert(this CompareMode mode)
- {
- switch (mode)
- {
- case CompareMode.None:
- return TextureCompareMode.None;
- case CompareMode.CompareRToTexture:
- return TextureCompareMode.CompareRToTexture;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(CompareMode)} enum value: {mode}.");
- return TextureCompareMode.None;
- }
- public static All Convert(this CompareOp op)
- {
- switch (op)
- {
- case CompareOp.Never:
- case CompareOp.NeverGl:
- return All.Never;
- case CompareOp.Less:
- case CompareOp.LessGl:
- return All.Less;
- case CompareOp.Equal:
- case CompareOp.EqualGl:
- return All.Equal;
- case CompareOp.LessOrEqual:
- case CompareOp.LessOrEqualGl:
- return All.Lequal;
- case CompareOp.Greater:
- case CompareOp.GreaterGl:
- return All.Greater;
- case CompareOp.NotEqual:
- case CompareOp.NotEqualGl:
- return All.Notequal;
- case CompareOp.GreaterOrEqual:
- case CompareOp.GreaterOrEqualGl:
- return All.Gequal;
- case CompareOp.Always:
- case CompareOp.AlwaysGl:
- return All.Always;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(CompareOp)} enum value: {op}.");
- return All.Never;
- }
- public static ClipDepthMode Convert(this DepthMode mode)
- {
- switch (mode)
- {
- case DepthMode.MinusOneToOne:
- return ClipDepthMode.NegativeOneToOne;
- case DepthMode.ZeroToOne:
- return ClipDepthMode.ZeroToOne;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(DepthMode)} enum value: {mode}.");
- return ClipDepthMode.NegativeOneToOne;
- }
- public static All Convert(this DepthStencilMode mode)
- {
- switch (mode)
- {
- case DepthStencilMode.Depth:
- return All.DepthComponent;
- case DepthStencilMode.Stencil:
- return All.StencilIndex;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(DepthStencilMode)} enum value: {mode}.");
- return All.Depth;
- }
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(Face)} enum value: {face}.");
- return CullFaceMode.Back;
- }
- public static FrontFaceDirection Convert(this FrontFace frontFace)
- {
- switch (frontFace)
- {
- case FrontFace.Clockwise:
- return FrontFaceDirection.Cw;
- case FrontFace.CounterClockwise:
- return FrontFaceDirection.Ccw;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(FrontFace)} enum value: {frontFace}.");
- return FrontFaceDirection.Cw;
- }
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(IndexType)} enum value: {type}.");
- return DrawElementsType.UnsignedByte;
- }
- public static TextureMagFilter Convert(this MagFilter filter)
- {
- switch (filter)
- {
- case MagFilter.Nearest:
- return TextureMagFilter.Nearest;
- case MagFilter.Linear:
- return TextureMagFilter.Linear;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(MagFilter)} enum value: {filter}.");
- return TextureMagFilter.Nearest;
- }
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(MinFilter)} enum value: {filter}.");
- return TextureMinFilter.Nearest;
- }
- public static OpenTK.Graphics.OpenGL.PolygonMode Convert(this GAL.PolygonMode mode)
- {
- switch (mode)
- {
- case GAL.PolygonMode.Point:
- return OpenTK.Graphics.OpenGL.PolygonMode.Point;
- case GAL.PolygonMode.Line:
- return OpenTK.Graphics.OpenGL.PolygonMode.Line;
- case GAL.PolygonMode.Fill:
- return OpenTK.Graphics.OpenGL.PolygonMode.Fill;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(GAL.PolygonMode)} enum value: {mode}.");
- return OpenTK.Graphics.OpenGL.PolygonMode.Fill;
- }
- 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.TriangleFan;
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(PrimitiveTopology)} enum value: {topology}.");
- return PrimitiveType.Points;
- }
- public static TransformFeedbackPrimitiveType ConvertToTfType(this PrimitiveTopology topology)
- {
- switch (topology)
- {
- case PrimitiveTopology.Points:
- return TransformFeedbackPrimitiveType.Points;
- case PrimitiveTopology.Lines:
- case PrimitiveTopology.LineLoop:
- case PrimitiveTopology.LineStrip:
- case PrimitiveTopology.LinesAdjacency:
- case PrimitiveTopology.LineStripAdjacency:
- return TransformFeedbackPrimitiveType.Lines;
- case PrimitiveTopology.Triangles:
- case PrimitiveTopology.TriangleStrip:
- case PrimitiveTopology.TriangleFan:
- case PrimitiveTopology.TrianglesAdjacency:
- case PrimitiveTopology.TriangleStripAdjacency:
- return TransformFeedbackPrimitiveType.Triangles;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(PrimitiveTopology)} enum value: {topology}.");
- return TransformFeedbackPrimitiveType.Points;
- }
- public static OpenTK.Graphics.OpenGL.StencilOp Convert(this GAL.StencilOp op)
- {
- switch (op)
- {
- case GAL.StencilOp.Keep:
- case GAL.StencilOp.KeepGl:
- return OpenTK.Graphics.OpenGL.StencilOp.Keep;
- case GAL.StencilOp.Zero:
- case GAL.StencilOp.ZeroGl:
- return OpenTK.Graphics.OpenGL.StencilOp.Zero;
- case GAL.StencilOp.Replace:
- case GAL.StencilOp.ReplaceGl:
- return OpenTK.Graphics.OpenGL.StencilOp.Replace;
- case GAL.StencilOp.IncrementAndClamp:
- case GAL.StencilOp.IncrementAndClampGl:
- return OpenTK.Graphics.OpenGL.StencilOp.Incr;
- case GAL.StencilOp.DecrementAndClamp:
- case GAL.StencilOp.DecrementAndClampGl:
- return OpenTK.Graphics.OpenGL.StencilOp.Decr;
- case GAL.StencilOp.Invert:
- case GAL.StencilOp.InvertGl:
- return OpenTK.Graphics.OpenGL.StencilOp.Invert;
- case GAL.StencilOp.IncrementAndWrap:
- case GAL.StencilOp.IncrementAndWrapGl:
- return OpenTK.Graphics.OpenGL.StencilOp.IncrWrap;
- case GAL.StencilOp.DecrementAndWrap:
- case GAL.StencilOp.DecrementAndWrapGl:
- return OpenTK.Graphics.OpenGL.StencilOp.DecrWrap;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(GAL.StencilOp)} enum value: {op}.");
- return OpenTK.Graphics.OpenGL.StencilOp.Keep;
- }
- 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;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(SwizzleComponent)} enum value: {swizzleComponent}.");
- return All.Zero;
- }
- 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.Texture2DMultisampleArray:
- return TextureTarget.Texture2DMultisampleArray;
- case Target.Cubemap:
- return TextureTarget.TextureCubeMap;
- case Target.CubemapArray:
- return TextureTarget.TextureCubeMapArray;
- case Target.TextureBuffer:
- return TextureTarget.TextureBuffer;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(Target)} enum value: {target}.");
- return TextureTarget.Texture2D;
- }
- public static NvViewportSwizzle Convert(this ViewportSwizzle swizzle)
- {
- switch (swizzle)
- {
- case ViewportSwizzle.PositiveX:
- return NvViewportSwizzle.ViewportSwizzlePositiveXNv;
- case ViewportSwizzle.PositiveY:
- return NvViewportSwizzle.ViewportSwizzlePositiveYNv;
- case ViewportSwizzle.PositiveZ:
- return NvViewportSwizzle.ViewportSwizzlePositiveZNv;
- case ViewportSwizzle.PositiveW:
- return NvViewportSwizzle.ViewportSwizzlePositiveWNv;
- case ViewportSwizzle.NegativeX:
- return NvViewportSwizzle.ViewportSwizzleNegativeXNv;
- case ViewportSwizzle.NegativeY:
- return NvViewportSwizzle.ViewportSwizzleNegativeYNv;
- case ViewportSwizzle.NegativeZ:
- return NvViewportSwizzle.ViewportSwizzleNegativeZNv;
- case ViewportSwizzle.NegativeW:
- return NvViewportSwizzle.ViewportSwizzleNegativeWNv;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(ViewportSwizzle)} enum value: {swizzle}.");
- return NvViewportSwizzle.ViewportSwizzlePositiveXNv;
- }
- public static All Convert(this LogicalOp op)
- {
- switch (op)
- {
- case LogicalOp.Clear:
- return All.Clear;
- case LogicalOp.And:
- return All.And;
- case LogicalOp.AndReverse:
- return All.AndReverse;
- case LogicalOp.Copy:
- return All.Copy;
- case LogicalOp.AndInverted:
- return All.AndInverted;
- case LogicalOp.Noop:
- return All.Noop;
- case LogicalOp.Xor:
- return All.Xor;
- case LogicalOp.Or:
- return All.Or;
- case LogicalOp.Nor:
- return All.Nor;
- case LogicalOp.Equiv:
- return All.Equiv;
- case LogicalOp.Invert:
- return All.Invert;
- case LogicalOp.OrReverse:
- return All.OrReverse;
- case LogicalOp.CopyInverted:
- return All.CopyInverted;
- case LogicalOp.OrInverted:
- return All.OrInverted;
- case LogicalOp.Nand:
- return All.Nand;
- case LogicalOp.Set:
- return All.Set;
- }
- Logger.Debug?.Print(LogClass.Gpu, $"Invalid {nameof(LogicalOp)} enum value: {op}.");
- return All.Never;
- }
- public static ShaderType Convert(this ShaderStage stage)
- {
- return stage switch
- {
- ShaderStage.Compute => ShaderType.ComputeShader,
- ShaderStage.Vertex => ShaderType.VertexShader,
- ShaderStage.TessellationControl => ShaderType.TessControlShader,
- ShaderStage.TessellationEvaluation => ShaderType.TessEvaluationShader,
- ShaderStage.Geometry => ShaderType.GeometryShader,
- ShaderStage.Fragment => ShaderType.FragmentShader,
- _ => ShaderType.VertexShader
- };
- }
- }
- }
|