summaryrefslogtreecommitdiff
path: root/src/video_core/shader/node.h
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-06-02 18:52:07 -0300
committerGravatar ReinUsesLisp2019-06-07 02:18:27 -0300
commitfe8e6618f2907a9262d69232ef0e2d5d58cbc6e0 (patch)
tree308d278996e18558ab049daa01b4873b08b799e8 /src/video_core/shader/node.h
parentMerge pull request #2558 from ReinUsesLisp/shader-nodes (diff)
downloadyuzu-fe8e6618f2907a9262d69232ef0e2d5d58cbc6e0.tar.gz
yuzu-fe8e6618f2907a9262d69232ef0e2d5d58cbc6e0.tar.xz
yuzu-fe8e6618f2907a9262d69232ef0e2d5d58cbc6e0.zip
shader: Split SSY and PBK stack
Hardware testing revealed that SSY and PBK push to a different stack, allowing code like this: SSY label1; PBK label2; SYNC; label1: PBK; label2: EXIT;
Diffstat (limited to 'src/video_core/shader/node.h')
-rw-r--r--src/video_core/shader/node.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h
index c002f90f9..3cfb911bb 100644
--- a/src/video_core/shader/node.h
+++ b/src/video_core/shader/node.h
@@ -174,6 +174,11 @@ enum class InternalFlag {
174 Amount = 4, 174 Amount = 4,
175}; 175};
176 176
177enum class MetaStackClass {
178 Ssy,
179 Pbk,
180};
181
177class OperationNode; 182class OperationNode;
178class ConditionalNode; 183class ConditionalNode;
179class GprNode; 184class GprNode;
@@ -285,7 +290,7 @@ struct MetaTexture {
285}; 290};
286 291
287/// Parameters that modify an operation but are not part of any particular operand 292/// Parameters that modify an operation but are not part of any particular operand
288using Meta = std::variant<MetaArithmetic, MetaTexture, Tegra::Shader::HalfType>; 293using Meta = std::variant<MetaArithmetic, MetaTexture, MetaStackClass, Tegra::Shader::HalfType>;
289 294
290/// Holds any kind of operation that can be done in the IR 295/// Holds any kind of operation that can be done in the IR
291class OperationNode final { 296class OperationNode final {