mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	renderer_gl: Port over gl_shader_decompiler module from Citra.
This commit is contained in:
		
							parent
							
								
									a3e10b1a72
								
							
						
					
					
						commit
						4bdb46e4c2
					
				| @ -16,6 +16,8 @@ add_library(video_core STATIC | ||||
|     renderer_opengl/gl_rasterizer_cache.cpp | ||||
|     renderer_opengl/gl_rasterizer_cache.h | ||||
|     renderer_opengl/gl_resource_manager.h | ||||
|     renderer_opengl/gl_shader_decompiler.cpp | ||||
|     renderer_opengl/gl_shader_decompiler.h | ||||
|     renderer_opengl/gl_shader_util.cpp | ||||
|     renderer_opengl/gl_shader_util.h | ||||
|     renderer_opengl/gl_state.cpp | ||||
|  | ||||
							
								
								
									
										58
									
								
								src/video_core/renderer_opengl/gl_shader_decompiler.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/video_core/renderer_opengl/gl_shader_decompiler.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| // Copyright 2018 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <string> | ||||
| #include <queue> | ||||
| #include "common/assert.h" | ||||
| #include "common/common_types.h" | ||||
| #include "video_core/renderer_opengl/gl_shader_decompiler.h" | ||||
| 
 | ||||
| namespace Maxwell3D { | ||||
| namespace Shader { | ||||
| namespace Decompiler { | ||||
| 
 | ||||
| constexpr u32 PROGRAM_END = MAX_PROGRAM_CODE_LENGTH; | ||||
| 
 | ||||
| class Impl { | ||||
| public: | ||||
|     Impl(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code, | ||||
|          const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data, u32 main_offset, | ||||
|          const std::function<std::string(u32)>& inputreg_getter, | ||||
|          const std::function<std::string(u32)>& outputreg_getter, bool sanitize_mul, | ||||
|          const std::string& emit_cb, const std::string& setemit_cb) | ||||
|         : program_code(program_code), swizzle_data(swizzle_data), main_offset(main_offset), | ||||
|           inputreg_getter(inputreg_getter), outputreg_getter(outputreg_getter), | ||||
|           sanitize_mul(sanitize_mul), emit_cb(emit_cb), setemit_cb(setemit_cb) {} | ||||
| 
 | ||||
|     std::string Decompile() { | ||||
|         UNIMPLEMENTED(); | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
| private: | ||||
|     const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code; | ||||
|     const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data; | ||||
|     u32 main_offset; | ||||
|     const std::function<std::string(u32)>& inputreg_getter; | ||||
|     const std::function<std::string(u32)>& outputreg_getter; | ||||
|     bool sanitize_mul; | ||||
|     const std::string& emit_cb; | ||||
|     const std::string& setemit_cb; | ||||
| }; | ||||
| 
 | ||||
| std::string DecompileProgram(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code, | ||||
|                              const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data, | ||||
|                              u32 main_offset, | ||||
|                              const std::function<std::string(u32)>& inputreg_getter, | ||||
|                              const std::function<std::string(u32)>& outputreg_getter, | ||||
|                              bool sanitize_mul, const std::string& emit_cb, | ||||
|                              const std::string& setemit_cb) { | ||||
|     Impl impl(program_code, swizzle_data, main_offset, inputreg_getter, outputreg_getter, | ||||
|               sanitize_mul, emit_cb, setemit_cb); | ||||
|     return impl.Decompile(); | ||||
| } | ||||
| 
 | ||||
| } // namespace Decompiler
 | ||||
| } // namespace Shader
 | ||||
| } // namespace Maxwell3D
 | ||||
							
								
								
									
										27
									
								
								src/video_core/renderer_opengl/gl_shader_decompiler.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/video_core/renderer_opengl/gl_shader_decompiler.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| // Copyright 2018 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <array> | ||||
| #include <functional> | ||||
| #include <string> | ||||
| #include "common/common_types.h" | ||||
| 
 | ||||
| namespace Maxwell3D { | ||||
| namespace Shader { | ||||
| namespace Decompiler { | ||||
| 
 | ||||
| constexpr size_t MAX_PROGRAM_CODE_LENGTH{0x100000}; | ||||
| constexpr size_t MAX_SWIZZLE_DATA_LENGTH{0x100000}; | ||||
| 
 | ||||
| std::string DecompileProgram(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code, | ||||
|                              const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data, | ||||
|                              u32 main_offset, | ||||
|                              const std::function<std::string(u32)>& inputreg_getter, | ||||
|                              const std::function<std::string(u32)>& outputreg_getter, | ||||
|                              bool sanitize_mul, const std::string& emit_cb = "", | ||||
|                              const std::string& setemit_cb = ""); | ||||
| 
 | ||||
| } // namespace Decompiler
 | ||||
| } // namespace Shader
 | ||||
| } // namespace Maxwell3D
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei