mirror of
				https://github.com/yuzu-emu/yuzu.git
				synced 2025-11-04 06:13:42 +00:00 
			
		
		
		
	gl_shader_decompiler: Add shader stage hint.
This commit is contained in:
		
							parent
							
								
									a992aac5eb
								
							
						
					
					
						commit
						50023bdae7
					
				@ -128,8 +128,9 @@ private:
 | 
			
		||||
class GLSLGenerator {
 | 
			
		||||
public:
 | 
			
		||||
    GLSLGenerator(const std::set<Subroutine>& subroutines, const ProgramCode& program_code,
 | 
			
		||||
                  u32 main_offset)
 | 
			
		||||
        : subroutines(subroutines), program_code(program_code), main_offset(main_offset) {
 | 
			
		||||
                  u32 main_offset, Maxwell3D::Regs::ShaderStage stage)
 | 
			
		||||
        : subroutines(subroutines), program_code(program_code), main_offset(main_offset),
 | 
			
		||||
          stage(stage) {
 | 
			
		||||
 | 
			
		||||
        Generate();
 | 
			
		||||
    }
 | 
			
		||||
@ -429,6 +430,7 @@ private:
 | 
			
		||||
    const std::set<Subroutine>& subroutines;
 | 
			
		||||
    const ProgramCode& program_code;
 | 
			
		||||
    const u32 main_offset;
 | 
			
		||||
    Maxwell3D::Regs::ShaderStage stage;
 | 
			
		||||
 | 
			
		||||
    ShaderWriter shader;
 | 
			
		||||
    ShaderWriter declarations;
 | 
			
		||||
@ -443,10 +445,11 @@ std::string GetCommonDeclarations() {
 | 
			
		||||
    return "bool exec_shader();";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
boost::optional<std::string> DecompileProgram(const ProgramCode& program_code, u32 main_offset) {
 | 
			
		||||
boost::optional<std::string> DecompileProgram(const ProgramCode& program_code, u32 main_offset,
 | 
			
		||||
                                              Maxwell3D::Regs::ShaderStage stage) {
 | 
			
		||||
    try {
 | 
			
		||||
        auto subroutines = ControlFlowAnalyzer(program_code, main_offset).GetSubroutines();
 | 
			
		||||
        GLSLGenerator generator(subroutines, program_code, main_offset);
 | 
			
		||||
        GLSLGenerator generator(subroutines, program_code, main_offset, stage);
 | 
			
		||||
        return generator.GetShaderCode();
 | 
			
		||||
    } catch (const DecompileFail& exception) {
 | 
			
		||||
        LOG_ERROR(HW_GPU, "Shader decompilation failed: %s", exception.what());
 | 
			
		||||
 | 
			
		||||
@ -7,14 +7,18 @@
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <boost/optional.hpp>
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
#include "video_core/engines/maxwell_3d.h"
 | 
			
		||||
#include "video_core/renderer_opengl/gl_shader_gen.h"
 | 
			
		||||
 | 
			
		||||
namespace GLShader {
 | 
			
		||||
namespace Decompiler {
 | 
			
		||||
 | 
			
		||||
using Tegra::Engines::Maxwell3D;
 | 
			
		||||
 | 
			
		||||
std::string GetCommonDeclarations();
 | 
			
		||||
 | 
			
		||||
boost::optional<std::string> DecompileProgram(const ProgramCode& program_code, u32 main_offset);
 | 
			
		||||
boost::optional<std::string> DecompileProgram(const ProgramCode& program_code, u32 main_offset,
 | 
			
		||||
                                              Maxwell3D::Regs::ShaderStage stage);
 | 
			
		||||
 | 
			
		||||
} // namespace Decompiler
 | 
			
		||||
} // namespace GLShader
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user