From c17953978b16f82a3b2049f8b961275020c73dd0 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Thu, 27 Jun 2019 00:39:40 -0400 Subject: shader_ir: Initial Decompile Setup --- src/video_core/shader/control_flow.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/video_core/shader/control_flow.h') diff --git a/src/video_core/shader/control_flow.h b/src/video_core/shader/control_flow.h index b0a5e4f8c..efd037f1a 100644 --- a/src/video_core/shader/control_flow.h +++ b/src/video_core/shader/control_flow.h @@ -6,7 +6,7 @@ #include #include -#include +#include #include "video_core/engines/shader_bytecode.h" #include "video_core/shader/shader_ir.h" @@ -70,7 +70,7 @@ struct ShaderCharacteristics { bool decompilable{}; u32 start{}; u32 end{}; - std::unordered_set labels{}; + std::set labels{}; }; std::optional ScanFlow(const ProgramCode& program_code, -- cgit v1.2.3 From 6fdd501113d5094f9148046c3b17cf2239e99aa5 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Fri, 28 Jun 2019 22:59:43 -0400 Subject: shader_ir: Declare Manager and pass it to appropiate programs. --- src/video_core/shader/control_flow.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/video_core/shader/control_flow.h') diff --git a/src/video_core/shader/control_flow.h b/src/video_core/shader/control_flow.h index efd037f1a..2805d975c 100644 --- a/src/video_core/shader/control_flow.h +++ b/src/video_core/shader/control_flow.h @@ -10,6 +10,7 @@ #include "video_core/engines/shader_bytecode.h" #include "video_core/shader/shader_ir.h" +#include "video_core/shader/ast.h" namespace VideoCommon::Shader { @@ -67,13 +68,12 @@ struct ShaderBlock { struct ShaderCharacteristics { std::list blocks{}; - bool decompilable{}; + bool decompiled{}; u32 start{}; u32 end{}; - std::set labels{}; }; -std::optional ScanFlow(const ProgramCode& program_code, - std::size_t program_size, u32 start_address); +std::unique_ptr ScanFlow(const ProgramCode& program_code, u32 program_size, + u32 start_address, ASTManager& manager); } // namespace VideoCommon::Shader -- cgit v1.2.3 From 38fc995f6cc2c2af29abc976ddb45b72873b2cc4 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sat, 29 Jun 2019 01:44:07 -0400 Subject: gl_shader_decompiler: Implement AST decompiling --- src/video_core/shader/control_flow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/video_core/shader/control_flow.h') diff --git a/src/video_core/shader/control_flow.h b/src/video_core/shader/control_flow.h index 2805d975c..347a35dcf 100644 --- a/src/video_core/shader/control_flow.h +++ b/src/video_core/shader/control_flow.h @@ -74,6 +74,6 @@ struct ShaderCharacteristics { }; std::unique_ptr ScanFlow(const ProgramCode& program_code, u32 program_size, - u32 start_address, ASTManager& manager); + u32 start_address, ASTManager& manager); } // namespace VideoCommon::Shader -- cgit v1.2.3 From 47e4f6a52c5eb34916e2c1f4c876e6e8624e3840 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Fri, 16 Aug 2019 16:25:02 -0400 Subject: Shader_Ir: Refactor Decompilation process and allow multiple decompilation modes. --- src/video_core/shader/control_flow.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/video_core/shader/control_flow.h') diff --git a/src/video_core/shader/control_flow.h b/src/video_core/shader/control_flow.h index 347a35dcf..8d0d08422 100644 --- a/src/video_core/shader/control_flow.h +++ b/src/video_core/shader/control_flow.h @@ -9,8 +9,9 @@ #include #include "video_core/engines/shader_bytecode.h" -#include "video_core/shader/shader_ir.h" #include "video_core/shader/ast.h" +#include "video_core/shader/compiler_settings.h" +#include "video_core/shader/shader_ir.h" namespace VideoCommon::Shader { @@ -68,12 +69,15 @@ struct ShaderBlock { struct ShaderCharacteristics { std::list blocks{}; - bool decompiled{}; + std::set labels{}; u32 start{}; u32 end{}; + ASTManager manager{true}; + CompilerSettings settings{}; }; std::unique_ptr ScanFlow(const ProgramCode& program_code, u32 program_size, - u32 start_address, ASTManager& manager); + u32 start_address, + const CompilerSettings& settings); } // namespace VideoCommon::Shader -- cgit v1.2.3 From 2e9a810423ef36178ac3947f8feeb7b9a5b29bce Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Fri, 20 Sep 2019 21:12:06 -0400 Subject: Shader_IR: allow else derivation to be optional. --- src/video_core/shader/control_flow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/video_core/shader/control_flow.h') diff --git a/src/video_core/shader/control_flow.h b/src/video_core/shader/control_flow.h index 8d0d08422..74e54a5c7 100644 --- a/src/video_core/shader/control_flow.h +++ b/src/video_core/shader/control_flow.h @@ -72,7 +72,7 @@ struct ShaderCharacteristics { std::set labels{}; u32 start{}; u32 end{}; - ASTManager manager{true}; + ASTManager manager{true, true}; CompilerSettings settings{}; }; -- cgit v1.2.3