summaryrefslogtreecommitdiff
path: root/src/video_core/shader/node.h
diff options
context:
space:
mode:
authorGravatar bunnei2019-09-18 16:26:05 -0400
committerGravatar GitHub2019-09-18 16:26:05 -0400
commitb31880dc5e0d9aab1171d3476453ad2db00cfd3a (patch)
treeb1ec38b1d4be6f1f61d987608d99d1f6ee428a83 /src/video_core/shader/node.h
parentMerge pull request #2851 from ReinUsesLisp/srgb (diff)
parentgl_shader_decompiler: Implement shared memory (diff)
downloadyuzu-b31880dc5e0d9aab1171d3476453ad2db00cfd3a.tar.gz
yuzu-b31880dc5e0d9aab1171d3476453ad2db00cfd3a.tar.xz
yuzu-b31880dc5e0d9aab1171d3476453ad2db00cfd3a.zip
Merge pull request #2784 from ReinUsesLisp/smem
shader_ir: Implement shared memory
Diffstat (limited to 'src/video_core/shader/node.h')
-rw-r--r--src/video_core/shader/node.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h
index b47b201cf..425111cc4 100644
--- a/src/video_core/shader/node.h
+++ b/src/video_core/shader/node.h
@@ -206,12 +206,13 @@ class PredicateNode;
206class AbufNode; 206class AbufNode;
207class CbufNode; 207class CbufNode;
208class LmemNode; 208class LmemNode;
209class SmemNode;
209class GmemNode; 210class GmemNode;
210class CommentNode; 211class CommentNode;
211 212
212using NodeData = 213using NodeData =
213 std::variant<OperationNode, ConditionalNode, GprNode, ImmediateNode, InternalFlagNode, 214 std::variant<OperationNode, ConditionalNode, GprNode, ImmediateNode, InternalFlagNode,
214 PredicateNode, AbufNode, CbufNode, LmemNode, GmemNode, CommentNode>; 215 PredicateNode, AbufNode, CbufNode, LmemNode, SmemNode, GmemNode, CommentNode>;
215using Node = std::shared_ptr<NodeData>; 216using Node = std::shared_ptr<NodeData>;
216using Node4 = std::array<Node, 4>; 217using Node4 = std::array<Node, 4>;
217using NodeBlock = std::vector<Node>; 218using NodeBlock = std::vector<Node>;
@@ -583,6 +584,19 @@ private:
583 Node address; 584 Node address;
584}; 585};
585 586
587/// Shared memory node
588class SmemNode final {
589public:
590 explicit SmemNode(Node address) : address{std::move(address)} {}
591
592 const Node& GetAddress() const {
593 return address;
594 }
595
596private:
597 Node address;
598};
599
586/// Global memory node 600/// Global memory node
587class GmemNode final { 601class GmemNode final {
588public: 602public: