aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-05-20 16:19:26 -0300
committerGitHub <noreply@github.com>2023-05-20 16:19:26 -0300
commit402f05b8ef013807997589ecc0a8ff50267dcd23 (patch)
tree8e3b06c2ce3e3ccd4b443a4c68365251acc668fa /src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs
parentfb27042e01b0fa110184673d436ec96ec8cf20c7 (diff)
Replace constant buffer access on shader with new Load instruction (#4646)1.1.811
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs')
-rw-r--r--src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs b/src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs
index 93748249..e41a28f1 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/EmitterContextInsts.cs
@@ -549,11 +549,31 @@ namespace Ryujinx.Graphics.Shader.Translation
return context.Add(fpType | Instruction.IsNan, Local(), a);
}
+ public static Operand Load(this EmitterContext context, StorageKind storageKind, int binding)
+ {
+ return context.Add(Instruction.Load, storageKind, Local(), Const(binding));
+ }
+
+ public static Operand Load(this EmitterContext context, StorageKind storageKind, int binding, Operand e0)
+ {
+ return context.Add(Instruction.Load, storageKind, Local(), Const(binding), e0);
+ }
+
+ public static Operand Load(this EmitterContext context, StorageKind storageKind, int binding, Operand e0, Operand e1)
+ {
+ return context.Add(Instruction.Load, storageKind, Local(), Const(binding), e0, e1);
+ }
+
+ public static Operand Load(this EmitterContext context, StorageKind storageKind, int binding, Operand e0, Operand e1, Operand e2)
+ {
+ return context.Add(Instruction.Load, storageKind, Local(), Const(binding), e0, e1, e2);
+ }
+
public static Operand Load(this EmitterContext context, StorageKind storageKind, IoVariable ioVariable, Operand primVertex = null)
{
return primVertex != null
- ? context.Add(Instruction.Load, storageKind, Local(), Const((int)ioVariable), primVertex)
- : context.Add(Instruction.Load, storageKind, Local(), Const((int)ioVariable));
+ ? context.Load(storageKind, (int)ioVariable, primVertex)
+ : context.Load(storageKind, (int)ioVariable);
}
public static Operand Load(
@@ -564,8 +584,8 @@ namespace Ryujinx.Graphics.Shader.Translation
Operand elemIndex)
{
return primVertex != null
- ? context.Add(Instruction.Load, storageKind, Local(), Const((int)ioVariable), primVertex, elemIndex)
- : context.Add(Instruction.Load, storageKind, Local(), Const((int)ioVariable), elemIndex);
+ ? context.Load(storageKind, (int)ioVariable, primVertex, elemIndex)
+ : context.Load(storageKind, (int)ioVariable, elemIndex);
}
public static Operand Load(
@@ -577,22 +597,8 @@ namespace Ryujinx.Graphics.Shader.Translation
Operand elemIndex)
{
return primVertex != null
- ? context.Add(Instruction.Load, storageKind, Local(), Const((int)ioVariable), primVertex, arrayIndex, elemIndex)
- : context.Add(Instruction.Load, storageKind, Local(), Const((int)ioVariable), arrayIndex, elemIndex);
- }
-
- public static Operand LoadConstant(this EmitterContext context, Operand a, Operand b)
- {
- if (a.Type == OperandType.Constant)
- {
- context.Config.SetUsedConstantBuffer(a.Value);
- }
- else
- {
- context.Config.SetUsedFeature(FeatureFlags.CbIndexing);
- }
-
- return context.Add(Instruction.LoadConstant, Local(), a, b);
+ ? context.Load(storageKind, (int)ioVariable, primVertex, arrayIndex, elemIndex)
+ : context.Load(storageKind, (int)ioVariable, arrayIndex, elemIndex);
}
public static Operand LoadGlobal(this EmitterContext context, Operand a, Operand b)