From d512ce122cb1c9a7fe7cb40d3f85d642ee37f897 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Mon, 18 Oct 2021 18:38:04 -0300 Subject: Initial tessellation shader support (#2534) * Initial tessellation shader support * Nits * Re-arrange built-in table * This is not needed anymore * PR feedback --- .../IntermediateRepresentation/Instruction.cs | 6 ++++++ .../IntermediateRepresentation/OperandHelper.cs | 5 +++++ .../IntermediateRepresentation/OperandType.cs | 9 +++++++++ 3 files changed, 20 insertions(+) (limited to 'Ryujinx.Graphics.Shader/IntermediateRepresentation') diff --git a/Ryujinx.Graphics.Shader/IntermediateRepresentation/Instruction.cs b/Ryujinx.Graphics.Shader/IntermediateRepresentation/Instruction.cs index b0db56f0..03badec9 100644 --- a/Ryujinx.Graphics.Shader/IntermediateRepresentation/Instruction.cs +++ b/Ryujinx.Graphics.Shader/IntermediateRepresentation/Instruction.cs @@ -161,5 +161,11 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation return false; } + + public static bool IsTextureQuery(this Instruction inst) + { + inst &= Instruction.Mask; + return inst == Instruction.Lod || inst == Instruction.TextureSize; + } } } \ No newline at end of file diff --git a/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandHelper.cs b/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandHelper.cs index 221e278f..7fed861e 100644 --- a/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandHelper.cs +++ b/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandHelper.cs @@ -15,6 +15,11 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation return new Operand(OperandType.Attribute, value); } + public static Operand AttributePerPatch(int value) + { + return new Operand(OperandType.AttributePerPatch, value); + } + public static Operand Cbuf(int slot, int offset) { return new Operand(slot, offset); diff --git a/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandType.cs b/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandType.cs index 3427b103..7566a03f 100644 --- a/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandType.cs +++ b/Ryujinx.Graphics.Shader/IntermediateRepresentation/OperandType.cs @@ -4,6 +4,7 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation { Argument, Attribute, + AttributePerPatch, Constant, ConstantBuffer, Label, @@ -11,4 +12,12 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation Register, Undefined } + + static class OperandTypeExtensions + { + public static bool IsAttribute(this OperandType type) + { + return type == OperandType.Attribute || type == OperandType.AttributePerPatch; + } + } } \ No newline at end of file -- cgit v1.2.3