gl_shader_decompiler: Add identifier to decompiled code
This commit is contained in:
parent
e612242977
commit
b1061afed9
3 changed files with 16 additions and 8 deletions
|
@ -186,8 +186,10 @@ std::shared_ptr<Registry> MakeRegistry(const ShaderDiskCacheEntry& entry) {
|
|||
std::shared_ptr<OGLProgram> BuildShader(const Device& device, ShaderType shader_type,
|
||||
u64 unique_identifier, const ShaderIR& ir,
|
||||
const Registry& registry, bool hint_retrievable = false) {
|
||||
LOG_INFO(Render_OpenGL, "{}", MakeShaderID(unique_identifier, shader_type));
|
||||
const std::string glsl = DecompileShader(device, ir, registry, shader_type);
|
||||
const std::string shader_id = MakeShaderID(unique_identifier, shader_type);
|
||||
LOG_INFO(Render_OpenGL, "{}", shader_id);
|
||||
|
||||
const std::string glsl = DecompileShader(device, ir, registry, shader_type, shader_id);
|
||||
OGLShader shader;
|
||||
shader.Create(glsl.c_str(), GetGLShaderType(shader_type));
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ ShaderEntries MakeEntries(const VideoCommon::Shader::ShaderIR& ir);
|
|||
|
||||
std::string DecompileShader(const Device& device, const VideoCommon::Shader::ShaderIR& ir,
|
||||
const VideoCommon::Shader::Registry& registry,
|
||||
Tegra::Engines::ShaderType stage, std::string_view suffix = {});
|
||||
Tegra::Engines::ShaderType stage, std::string_view identifier,
|
||||
std::string_view suffix = {});
|
||||
|
||||
} // namespace OpenGL
|
||||
|
|
Loading…
Reference in a new issue