aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Decoders/Block.cs
diff options
context:
space:
mode:
authorgdk <gab.dark.100@gmail.com>2019-11-14 14:20:30 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commitf0a59f345c633b757ebd2a22fca23d7dab0f9f99 (patch)
tree444aa5ac024119594bc9f5b51e3710483537e6e6 /Ryujinx.Graphics.Shader/Decoders/Block.cs
parentd274328c3192fd85b9eec661b00f1599d673776c (diff)
Add partial support for the BRX shader instruction
Diffstat (limited to 'Ryujinx.Graphics.Shader/Decoders/Block.cs')
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/Block.cs22
1 files changed, 12 insertions, 10 deletions
diff --git a/Ryujinx.Graphics.Shader/Decoders/Block.cs b/Ryujinx.Graphics.Shader/Decoders/Block.cs
index b5e610d7..238b0bd6 100644
--- a/Ryujinx.Graphics.Shader/Decoders/Block.cs
+++ b/Ryujinx.Graphics.Shader/Decoders/Block.cs
@@ -11,15 +11,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Block Next { get; set; }
public Block Branch { get; set; }
- public List<OpCode> OpCodes { get; }
- public List<OpCodeSsy> SsyOpCodes { get; }
+ public OpCodeBranchIndir BrIndir { get; set; }
+
+ public List<OpCode> OpCodes { get; }
+ public List<OpCodePush> PushOpCodes { get; }
public Block(ulong address)
{
Address = address;
- OpCodes = new List<OpCode>();
- SsyOpCodes = new List<OpCodeSsy>();
+ OpCodes = new List<OpCode>();
+ PushOpCodes = new List<OpCodePush>();
}
public void Split(Block rightBlock)
@@ -45,7 +47,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
rightBlock.OpCodes.AddRange(OpCodes.GetRange(splitIndex, splitCount));
- rightBlock.UpdateSsyOpCodes();
+ rightBlock.UpdatePushOps();
EndAddress = rightBlock.Address;
@@ -54,7 +56,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
OpCodes.RemoveRange(splitIndex, splitCount);
- UpdateSsyOpCodes();
+ UpdatePushOps();
}
private static int BinarySearch(List<OpCode> opCodes, ulong address)
@@ -99,18 +101,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
return null;
}
- public void UpdateSsyOpCodes()
+ public void UpdatePushOps()
{
- SsyOpCodes.Clear();
+ PushOpCodes.Clear();
for (int index = 0; index < OpCodes.Count; index++)
{
- if (!(OpCodes[index] is OpCodeSsy op))
+ if (!(OpCodes[index] is OpCodePush op))
{
continue;
}
- SsyOpCodes.Add(op);
+ PushOpCodes.Add(op);
}
}
}