diff options
| author | 2020-01-07 14:53:46 -0400 | |
|---|---|---|
| committer | 2020-01-24 16:43:31 -0400 | |
| commit | 3c34678627eeb1b48375cf70ec38b72691fedd1e (patch) | |
| tree | 4a1ceb51da3946c9551e62f2bea6163db361ae48 /src/video_core/shader/node.h | |
| parent | GL Backend: Introduce indexed samplers into the GL backend (diff) | |
| download | yuzu-3c34678627eeb1b48375cf70ec38b72691fedd1e.tar.gz yuzu-3c34678627eeb1b48375cf70ec38b72691fedd1e.tar.xz yuzu-3c34678627eeb1b48375cf70ec38b72691fedd1e.zip | |
Shader_IR: Implement Injectable Custom Variables to the IR.
Diffstat (limited to 'src/video_core/shader/node.h')
| -rw-r--r-- | src/video_core/shader/node.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h index 2f29b9506..db06767f6 100644 --- a/src/video_core/shader/node.h +++ b/src/video_core/shader/node.h | |||
| @@ -212,6 +212,7 @@ enum class MetaStackClass { | |||
| 212 | class OperationNode; | 212 | class OperationNode; |
| 213 | class ConditionalNode; | 213 | class ConditionalNode; |
| 214 | class GprNode; | 214 | class GprNode; |
| 215 | class CustomVarNode; | ||
| 215 | class ImmediateNode; | 216 | class ImmediateNode; |
| 216 | class InternalFlagNode; | 217 | class InternalFlagNode; |
| 217 | class PredicateNode; | 218 | class PredicateNode; |
| @@ -223,7 +224,7 @@ class SmemNode; | |||
| 223 | class GmemNode; | 224 | class GmemNode; |
| 224 | class CommentNode; | 225 | class CommentNode; |
| 225 | 226 | ||
| 226 | using NodeData = std::variant<OperationNode, ConditionalNode, GprNode, ImmediateNode, | 227 | using NodeData = std::variant<OperationNode, ConditionalNode, GprNode, CustomVarNode, ImmediateNode, |
| 227 | InternalFlagNode, PredicateNode, AbufNode, PatchNode, CbufNode, | 228 | InternalFlagNode, PredicateNode, AbufNode, PatchNode, CbufNode, |
| 228 | LmemNode, SmemNode, GmemNode, CommentNode>; | 229 | LmemNode, SmemNode, GmemNode, CommentNode>; |
| 229 | using Node = std::shared_ptr<NodeData>; | 230 | using Node = std::shared_ptr<NodeData>; |
| @@ -550,6 +551,20 @@ private: | |||
| 550 | Tegra::Shader::Register index{}; | 551 | Tegra::Shader::Register index{}; |
| 551 | }; | 552 | }; |
| 552 | 553 | ||
| 554 | /// A custom variable | ||
| 555 | class CustomVarNode final { | ||
| 556 | public: | ||
| 557 | explicit constexpr CustomVarNode(u32 index) : index{index} {} | ||
| 558 | |||
| 559 | u32 GetIndex() const { | ||
| 560 | return index; | ||
| 561 | } | ||
| 562 | |||
| 563 | private: | ||
| 564 | u32 index{}; | ||
| 565 | }; | ||
| 566 | |||
| 567 | |||
| 553 | /// A 32-bits value that represents an immediate value | 568 | /// A 32-bits value that represents an immediate value |
| 554 | class ImmediateNode final { | 569 | class ImmediateNode final { |
| 555 | public: | 570 | public: |