aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/StructuredIr
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-10-18 18:38:04 -0300
committerGitHub <noreply@github.com>2021-10-18 18:38:04 -0300
commitd512ce122cb1c9a7fe7cb40d3f85d642ee37f897 (patch)
treebd20273250bf8066fa4df4b67c0de2ab9eac8092 /Ryujinx.Graphics.Shader/StructuredIr
parent7603dbe3c8b45c8563f320f17ce784151cb1f0a8 (diff)
Initial tessellation shader support (#2534)
* Initial tessellation shader support * Nits * Re-arrange built-in table * This is not needed anymore * PR feedback
Diffstat (limited to 'Ryujinx.Graphics.Shader/StructuredIr')
-rw-r--r--Ryujinx.Graphics.Shader/StructuredIr/OperandInfo.cs16
-rw-r--r--Ryujinx.Graphics.Shader/StructuredIr/StructuredProgramContext.cs6
2 files changed, 14 insertions, 8 deletions
diff --git a/Ryujinx.Graphics.Shader/StructuredIr/OperandInfo.cs b/Ryujinx.Graphics.Shader/StructuredIr/OperandInfo.cs
index 95c5731a..e56008f0 100644
--- a/Ryujinx.Graphics.Shader/StructuredIr/OperandInfo.cs
+++ b/Ryujinx.Graphics.Shader/StructuredIr/OperandInfo.cs
@@ -19,15 +19,15 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
public static VariableType GetVarType(OperandType type)
{
- switch (type)
+ return type switch
{
- case OperandType.Attribute: return VariableType.F32;
- case OperandType.Constant: return VariableType.S32;
- case OperandType.ConstantBuffer: return VariableType.F32;
- case OperandType.Undefined: return VariableType.S32;
- }
-
- throw new ArgumentException($"Invalid operand type \"{type}\".");
+ OperandType.Attribute => VariableType.F32,
+ OperandType.AttributePerPatch => VariableType.F32,
+ OperandType.Constant => VariableType.S32,
+ OperandType.ConstantBuffer => VariableType.F32,
+ OperandType.Undefined => VariableType.S32,
+ _ => throw new ArgumentException($"Invalid operand type \"{type}\".")
+ };
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgramContext.cs b/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgramContext.cs
index a9e44175..2a39d021 100644
--- a/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgramContext.cs
+++ b/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgramContext.cs
@@ -282,6 +282,12 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
public AstOperand GetOperandUse(Operand operand)
{
+ // If this flag is set, we're reading from an output attribute instead.
+ if (operand.Type.IsAttribute() && (operand.Value & AttributeConsts.LoadOutputMask) != 0)
+ {
+ return GetOperandDef(operand);
+ }
+
return GetOperand(operand);
}