|
|
|
@ -393,9 +393,9 @@ std::string FlowStackTopName(MetaStackClass stack) { |
|
|
|
class GLSLDecompiler final { |
|
|
|
public: |
|
|
|
explicit GLSLDecompiler(const Device& device, const ShaderIR& ir, const Registry& registry, |
|
|
|
ShaderType stage, std::string_view suffix) |
|
|
|
: device{device}, ir{ir}, registry{registry}, stage{stage}, suffix{suffix}, |
|
|
|
header{ir.GetHeader()} {} |
|
|
|
ShaderType stage, std::string_view identifier, std::string_view suffix) |
|
|
|
: device{device}, ir{ir}, registry{registry}, stage{stage}, |
|
|
|
identifier{identifier}, suffix{suffix}, header{ir.GetHeader()} {} |
|
|
|
|
|
|
|
void Decompile() { |
|
|
|
DeclareHeader(); |
|
|
|
@ -478,6 +478,9 @@ private: |
|
|
|
void DecompileAST(); |
|
|
|
|
|
|
|
void DeclareHeader() { |
|
|
|
if (!identifier.empty()) { |
|
|
|
code.AddLine("// {}", identifier); |
|
|
|
} |
|
|
|
code.AddLine("#version 430 core"); |
|
|
|
code.AddLine("#extension GL_ARB_separate_shader_objects : enable"); |
|
|
|
if (device.HasShaderBallot()) { |
|
|
|
@ -2477,6 +2480,7 @@ private: |
|
|
|
const ShaderIR& ir; |
|
|
|
const Registry& registry; |
|
|
|
const ShaderType stage; |
|
|
|
const std::string_view identifier; |
|
|
|
const std::string_view suffix; |
|
|
|
const Header header; |
|
|
|
|
|
|
|
@ -2698,8 +2702,9 @@ ShaderEntries MakeEntries(const VideoCommon::Shader::ShaderIR& ir) { |
|
|
|
} |
|
|
|
|
|
|
|
std::string DecompileShader(const Device& device, const ShaderIR& ir, const Registry& registry, |
|
|
|
ShaderType stage, std::string_view suffix) { |
|
|
|
GLSLDecompiler decompiler(device, ir, registry, stage, suffix); |
|
|
|
ShaderType stage, std::string_view identifier, |
|
|
|
std::string_view suffix) { |
|
|
|
GLSLDecompiler decompiler(device, ir, registry, stage, identifier, suffix); |
|
|
|
decompiler.Decompile(); |
|
|
|
return decompiler.GetResult(); |
|
|
|
} |
|
|
|
|