diff options
Diffstat (limited to 'Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs')
| -rw-r--r-- | Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs index c920d9fa..5f365d8c 100644 --- a/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs +++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs @@ -6,9 +6,15 @@ namespace Ryujinx.Graphics.Gal.Shader { private List<ShaderIrNode> Nodes; + private Dictionary<int, ShaderIrLabel> LabelsToInsert; + + public int Position; + public ShaderIrBlock() { Nodes = new List<ShaderIrNode>(); + + LabelsToInsert = new Dictionary<int, ShaderIrLabel>(); } public void AddNode(ShaderIrNode Node) @@ -16,6 +22,28 @@ namespace Ryujinx.Graphics.Gal.Shader Nodes.Add(Node); } + public ShaderIrLabel GetLabel(int Position) + { + if (LabelsToInsert.TryGetValue(Position, out ShaderIrLabel Label)) + { + return Label; + } + + Label = new ShaderIrLabel(); + + LabelsToInsert.Add(Position, Label); + + return Label; + } + + public void MarkLabel(int Position) + { + if (LabelsToInsert.TryGetValue(Position, out ShaderIrLabel Label)) + { + Nodes.Add(Label); + } + } + public ShaderIrNode[] GetNodes() { return Nodes.ToArray(); |
