From da936d6ad8cef5418b7644754ee4bcbf7f6125f8 Mon Sep 17 00:00:00 2001
From: FernandoS27 <fsahmkow27@gmail.com>
Date: Sun, 18 Apr 2021 19:10:55 +0200
Subject: shader: Implement delegation of Exit to dispatcher on CFG

---
 src/shader_recompiler/frontend/maxwell/control_flow.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

(limited to 'src/shader_recompiler/frontend/maxwell/control_flow.h')

diff --git a/src/shader_recompiler/frontend/maxwell/control_flow.h b/src/shader_recompiler/frontend/maxwell/control_flow.h
index 89966b16aa..0e515c3b6f 100644
--- a/src/shader_recompiler/frontend/maxwell/control_flow.h
+++ b/src/shader_recompiler/frontend/maxwell/control_flow.h
@@ -111,7 +111,8 @@ class CFG {
     };
 
 public:
-    explicit CFG(Environment& env, ObjectPool<Block>& block_pool, Location start_address);
+    explicit CFG(Environment& env, ObjectPool<Block>& block_pool, Location start_address,
+                 bool exits_to_dispatcher = false);
 
     CFG& operator=(const CFG&) = delete;
     CFG(const CFG&) = delete;
@@ -128,6 +129,10 @@ public:
         return std::span(functions.data(), functions.size());
     }
 
+    [[nodiscard]] bool ExitsToDispatcher() const {
+        return exits_to_dispatcher;
+    }
+
 private:
     void AnalyzeLabel(FunctionId function_id, Label& label);
 
@@ -158,6 +163,8 @@ private:
     boost::container::small_vector<Function, 1> functions;
     FunctionId current_function_id{0};
     Location program_start;
+    bool exits_to_dispatcher{};
+    Block* dispatch_block{};
 };
 
 } // namespace Shader::Maxwell::Flow
-- 
cgit v1.2.3-70-g09d2