diff options
| author | David <25727384+ogniK5377@users.noreply.github.com> | 2019-10-05 21:52:20 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-05 21:52:20 +1000 |
| commit | 3728bbc22a9224ff75fff22487a47bcaaf6ac2be (patch) | |
| tree | 80809634787307002bf9e07b710a4aa968019f26 /src/video_core/shader/control_flow.h | |
| parent | 0a662d009b1567bde5b0aa91e07365224858ca18 (diff) | |
| parent | e6eae4b815bf4bc480d62677fdf9bdbf5d6cba82 (diff) | |
Merge pull request #2888 from FernandoS27/decompiler2
Shader_IR: Implement a full control flow decompiler for the shader IR.
Diffstat (limited to 'src/video_core/shader/control_flow.h')
| -rw-r--r-- | src/video_core/shader/control_flow.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/video_core/shader/control_flow.h b/src/video_core/shader/control_flow.h index b0a5e4f8c..74e54a5c7 100644 --- a/src/video_core/shader/control_flow.h +++ b/src/video_core/shader/control_flow.h @@ -6,9 +6,11 @@ #include <list> #include <optional> -#include <unordered_set> +#include <set> #include "video_core/engines/shader_bytecode.h" +#include "video_core/shader/ast.h" +#include "video_core/shader/compiler_settings.h" #include "video_core/shader/shader_ir.h" namespace VideoCommon::Shader { @@ -67,13 +69,15 @@ struct ShaderBlock { struct ShaderCharacteristics { std::list<ShaderBlock> blocks{}; - bool decompilable{}; + std::set<u32> labels{}; u32 start{}; u32 end{}; - std::unordered_set<u32> labels{}; + ASTManager manager{true, true}; + CompilerSettings settings{}; }; -std::optional<ShaderCharacteristics> ScanFlow(const ProgramCode& program_code, - std::size_t program_size, u32 start_address); +std::unique_ptr<ShaderCharacteristics> ScanFlow(const ProgramCode& program_code, u32 program_size, + u32 start_address, + const CompilerSettings& settings); } // namespace VideoCommon::Shader |
