diff options
| author | 2019-07-30 00:21:46 -0300 | |
|---|---|---|
| committer | 2019-09-05 01:38:37 -0300 | |
| commit | f17415d431777bb234714a3c6a97072872b2cc71 (patch) | |
| tree | cb6d6fea921dc9609d2537976a8cbb4c4cb7811c /src/video_core/shader/node.h | |
| parent | Merge pull request #2797 from FearlessTobi/port-4877 (diff) | |
| download | yuzu-f17415d431777bb234714a3c6a97072872b2cc71.tar.gz yuzu-f17415d431777bb234714a3c6a97072872b2cc71.tar.xz yuzu-f17415d431777bb234714a3c6a97072872b2cc71.zip | |
shader_ir: Implement ST_S
This instruction writes to a memory buffer shared with threads within
the same work group. It is known as "shared" memory in GLSL.
Diffstat (limited to 'src/video_core/shader/node.h')
| -rw-r--r-- | src/video_core/shader/node.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h index 5db9313c4..e0d1979fa 100644 --- a/src/video_core/shader/node.h +++ b/src/video_core/shader/node.h | |||
| @@ -198,12 +198,13 @@ class PredicateNode; | |||
| 198 | class AbufNode; | 198 | class AbufNode; |
| 199 | class CbufNode; | 199 | class CbufNode; |
| 200 | class LmemNode; | 200 | class LmemNode; |
| 201 | class SmemNode; | ||
| 201 | class GmemNode; | 202 | class GmemNode; |
| 202 | class CommentNode; | 203 | class CommentNode; |
| 203 | 204 | ||
| 204 | using NodeData = | 205 | using NodeData = |
| 205 | std::variant<OperationNode, ConditionalNode, GprNode, ImmediateNode, InternalFlagNode, | 206 | std::variant<OperationNode, ConditionalNode, GprNode, ImmediateNode, InternalFlagNode, |
| 206 | PredicateNode, AbufNode, CbufNode, LmemNode, GmemNode, CommentNode>; | 207 | PredicateNode, AbufNode, CbufNode, LmemNode, SmemNode, GmemNode, CommentNode>; |
| 207 | using Node = std::shared_ptr<NodeData>; | 208 | using Node = std::shared_ptr<NodeData>; |
| 208 | using Node4 = std::array<Node, 4>; | 209 | using Node4 = std::array<Node, 4>; |
| 209 | using NodeBlock = std::vector<Node>; | 210 | using NodeBlock = std::vector<Node>; |
| @@ -536,6 +537,19 @@ private: | |||
| 536 | Node address; | 537 | Node address; |
| 537 | }; | 538 | }; |
| 538 | 539 | ||
| 540 | /// Shared memory node | ||
| 541 | class SmemNode final { | ||
| 542 | public: | ||
| 543 | explicit SmemNode(Node address) : address{std::move(address)} {} | ||
| 544 | |||
| 545 | const Node& GetAddress() const { | ||
| 546 | return address; | ||
| 547 | } | ||
| 548 | |||
| 549 | private: | ||
| 550 | Node address; | ||
| 551 | }; | ||
| 552 | |||
| 539 | /// Global memory node | 553 | /// Global memory node |
| 540 | class GmemNode final { | 554 | class GmemNode final { |
| 541 | public: | 555 | public: |