diff options
author | FernandoS27 <fsahmkow27@gmail.com> | 2021-04-06 02:01:01 +0200 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:26 +0200 |
commit | 20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9 (patch) | |
tree | e71f3fb568357d4c556ea0ee2ebf57f6fc3b3393 | |
parent | vk_pipeline_cache: Fix num of pipeline workers on weird platforms (diff) | |
download | yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.tar yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.tar.gz yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.tar.bz2 yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.tar.lz yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.tar.xz yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.tar.zst yuzu-20ba0ea0a94fa915cad6392b3742d8e58e2fa0d9.zip |
-rw-r--r-- | src/shader_recompiler/frontend/maxwell/control_flow.cpp | 6 | ||||
-rw-r--r-- | src/shader_recompiler/frontend/maxwell/control_flow.h | 1 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/control_flow.cpp b/src/shader_recompiler/frontend/maxwell/control_flow.cpp index eb0f7c8d1..1a4ee4f6c 100644 --- a/src/shader_recompiler/frontend/maxwell/control_flow.cpp +++ b/src/shader_recompiler/frontend/maxwell/control_flow.cpp @@ -197,7 +197,7 @@ Function::Function(ObjectPool<Block>& block_pool, Location start_address) }} {} CFG::CFG(Environment& env_, ObjectPool<Block>& block_pool_, Location start_address) - : env{env_}, block_pool{block_pool_} { + : env{env_}, block_pool{block_pool_}, program_start{start_address} { functions.emplace_back(block_pool, start_address); for (FunctionId function_id = 0; function_id < functions.size(); ++function_id) { while (!functions[function_id].labels.empty()) { @@ -427,9 +427,9 @@ void CFG::AnalyzeBRA(Block* block, FunctionId function_id, Location pc, Instruct CFG::AnalysisState CFG::AnalyzeBRX(Block* block, Location pc, Instruction inst, bool is_absolute, FunctionId function_id) { - const std::optional brx_table{TrackIndirectBranchTable(env, pc, block->begin)}; + const std::optional brx_table{TrackIndirectBranchTable(env, pc, program_start)}; if (!brx_table) { - TrackIndirectBranchTable(env, pc, block->begin); + TrackIndirectBranchTable(env, pc, program_start); throw NotImplementedException("Failed to track indirect branch"); } const IR::FlowTest flow_test{inst.branch.flow_test}; diff --git a/src/shader_recompiler/frontend/maxwell/control_flow.h b/src/shader_recompiler/frontend/maxwell/control_flow.h index 466b14198..9f570fbb5 100644 --- a/src/shader_recompiler/frontend/maxwell/control_flow.h +++ b/src/shader_recompiler/frontend/maxwell/control_flow.h @@ -157,6 +157,7 @@ private: ObjectPool<Block>& block_pool; boost::container::small_vector<Function, 1> functions; FunctionId current_function_id{0}; + Location program_start; }; } // namespace Shader::Maxwell::Flow |