aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs')
-rw-r--r--src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs
new file mode 100644
index 00000000..72541774
--- /dev/null
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs
@@ -0,0 +1,22 @@
+using System;
+using static Spv.Specification;
+
+namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
+{
+ static class EnumConversion
+ {
+ public static ExecutionModel Convert(this ShaderStage stage)
+ {
+ return stage switch
+ {
+ ShaderStage.Compute => ExecutionModel.GLCompute,
+ ShaderStage.Vertex => ExecutionModel.Vertex,
+ ShaderStage.TessellationControl => ExecutionModel.TessellationControl,
+ ShaderStage.TessellationEvaluation => ExecutionModel.TessellationEvaluation,
+ ShaderStage.Geometry => ExecutionModel.Geometry,
+ ShaderStage.Fragment => ExecutionModel.Fragment,
+ _ => throw new ArgumentException($"Invalid shader stage \"{stage}\".")
+ };
+ }
+ }
+}