diff options
author | gdk <gab.dark.100@gmail.com> | 2019-11-14 14:20:30 -0300 |
---|---|---|
committer | Thog <thog@protonmail.com> | 2020-01-09 02:13:00 +0100 |
commit | f0a59f345c633b757ebd2a22fca23d7dab0f9f99 (patch) | |
tree | 444aa5ac024119594bc9f5b51e3710483537e6e6 /Ryujinx.Graphics.Shader/Decoders/Block.cs | |
parent | d274328c3192fd85b9eec661b00f1599d673776c (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.cs | 22 |
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); } } } |