From 332b5481e8b9792a5fa3fbfafb7cf3bc50a41f59 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Thu, 26 Sep 2019 23:32:03 +1000 Subject: [PATCH] common: Log bad shaders to disk --- src/common/gl_program.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/common/gl_program.cpp b/src/common/gl_program.cpp index 7c033028b..6a94afdde 100644 --- a/src/common/gl_program.cpp +++ b/src/common/gl_program.cpp @@ -1,8 +1,12 @@ #include "gl_program.h" #include "YBaseLib/Log.h" +#include "YBaseLib/String.h" #include +#include Log_SetChannel(GL); +static u32 s_next_bad_shader_id = 1; + namespace GL { Program::Program() = default; @@ -40,6 +44,17 @@ GLuint Program::CompileShader(GLenum type, const char* source) else { Log_ErrorPrintf("Shader failed to compile:\n%s", info_log.c_str()); + + std::ofstream ofs(SmallString::FromFormat("bad_shader_%u.txt", s_next_bad_shader_id++), + std::ofstream::out | std::ofstream::binary); + if (ofs.is_open()) + { + ofs.write(sources[0], source_lengths[0]); + ofs << "\n\nCompile failed, info log:\n"; + ofs << info_log; + ofs.close(); + } + glDeleteShader(id); return 0; }