Skip to content

Commit

Permalink
GLES: Keep the GLRShader desc around.
Browse files Browse the repository at this point in the history
This way we can also log it on link errors.  It's not much data.
  • Loading branch information
unknownbrackets authored and hrydgard committed Jan 27, 2018
1 parent 48a0747 commit 3380ab8
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 17 deletions.
11 changes: 5 additions & 6 deletions GPU/GLES/ShaderManagerGLES.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,19 @@
#include "GPU/GLES/DrawEngineGLES.h"
#include "FramebufferManagerGLES.h"

Shader::Shader(GLRenderManager *render, const char *code, const char *desc, uint32_t glShaderType, bool useHWTransform, uint32_t attrMask, uint64_t uniformMask)
Shader::Shader(GLRenderManager *render, const char *code, const std::string &desc, uint32_t glShaderType, bool useHWTransform, uint32_t attrMask, uint64_t uniformMask)
: render_(render), failed_(false), useHWTransform_(useHWTransform), attrMask_(attrMask), uniformMask_(uniformMask) {
PROFILE_THIS_SCOPE("shadercomp");
isFragment_ = glShaderType == GL_FRAGMENT_SHADER;
source_ = code;
std::string descstr(desc);
#ifdef SHADERLOG
#ifdef _WIN32
OutputDebugStringUTF8(code);
#else
printf("%s\n", code);
#endif
#endif
shader = render->CreateShader(glShaderType, source_, descstr);
shader = render->CreateShader(glShaderType, source_, desc);
}

Shader::~Shader() {
Expand Down Expand Up @@ -609,7 +608,7 @@ Shader *ShaderManagerGLES::CompileFragmentShader(FShaderID FSID) {
return nullptr;
}
std::string desc = FragmentShaderDesc(FSID);
return new Shader(render_, codeBuffer_, desc.c_str(), GL_FRAGMENT_SHADER, false, 0, uniformMask);
return new Shader(render_, codeBuffer_, desc, GL_FRAGMENT_SHADER, false, 0, uniformMask);
}

Shader *ShaderManagerGLES::CompileVertexShader(VShaderID VSID) {
Expand All @@ -618,7 +617,7 @@ Shader *ShaderManagerGLES::CompileVertexShader(VShaderID VSID) {
uint64_t uniformMask;
GenerateVertexShader(VSID, codeBuffer_, &attrMask, &uniformMask);
std::string desc = VertexShaderDesc(VSID);
return new Shader(render_, codeBuffer_, desc.c_str(), GL_VERTEX_SHADER, useHWTransform, attrMask, uniformMask);
return new Shader(render_, codeBuffer_, desc, GL_VERTEX_SHADER, useHWTransform, attrMask, uniformMask);
}

Shader *ShaderManagerGLES::ApplyVertexShader(int prim, u32 vertType, VShaderID *VSID) {
Expand Down Expand Up @@ -668,7 +667,7 @@ Shader *ShaderManagerGLES::ApplyVertexShader(int prim, u32 vertType, VShaderID *
uint32_t attrMask;
uint64_t uniformMask;
GenerateVertexShader(vsidTemp, codeBuffer_, &attrMask, &uniformMask);
vs = new Shader(render_, codeBuffer_, VertexShaderDesc(vsidTemp).c_str(), GL_VERTEX_SHADER, false, attrMask, uniformMask);
vs = new Shader(render_, codeBuffer_, VertexShaderDesc(vsidTemp), GL_VERTEX_SHADER, false, attrMask, uniformMask);
}

vsCache_.Insert(*VSID, vs);
Expand Down
2 changes: 1 addition & 1 deletion GPU/GLES/ShaderManagerGLES.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class LinkedShader {

class Shader {
public:
Shader(GLRenderManager *render, const char *code, const char *desc, uint32_t glShaderType, bool useHWTransform, uint32_t attrMask, uint64_t uniformMask);
Shader(GLRenderManager *render, const char *code, const std::string &desc, uint32_t glShaderType, bool useHWTransform, uint32_t attrMask, uint64_t uniformMask);
~Shader();
GLRShader *shader;

Expand Down
5 changes: 2 additions & 3 deletions ext/native/thin3d/GLQueueRunner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,18 +156,17 @@ void GLQueueRunner::RunInitSteps(const std::vector<GLRInitStep> &steps) {
ELOG("Error in shader compilation! %s\n", infoLog);
ELOG("Shader source:\n%s\n", (const char *)code);
#endif
ERROR_LOG(G3D, "Error in shader compilation for: %s", step.create_shader.desc);
ERROR_LOG(G3D, "Error in shader compilation for: %s", step.create_shader.shader->desc.c_str());
ERROR_LOG(G3D, "Info log: %s", infoLog);
ERROR_LOG(G3D, "Shader source:\n%s\n", (const char *)code);
Reporting::ReportMessage("Error in shader compilation: info: %s\n%s\n%s", infoLog, step.create_shader.desc, (const char *)code);
Reporting::ReportMessage("Error in shader compilation: info: %s\n%s\n%s", infoLog, step.create_shader.shader->desc.c_str(), (const char *)code);
#ifdef SHADERLOG
OutputDebugStringUTF8(infoLog);
#endif
step.create_shader.shader->valid = false;
step.create_shader.shader->failed = true;
}
delete[] step.create_shader.code;
delete[] step.create_shader.desc;
step.create_shader.shader->valid = true;
break;
}
Expand Down
3 changes: 1 addition & 2 deletions ext/native/thin3d/GLQueueRunner.h
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,8 @@ struct GLRInitStep {
} create_texture;
struct {
GLRShader *shader;
// These char arrays need to be allocated with new[].
// This char arrays needs to be allocated with new[].
char *code;
char *desc; // For error logging.
GLuint stage;
} create_shader;
struct {
Expand Down
8 changes: 3 additions & 5 deletions ext/native/thin3d/GLRenderManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class GLRShader {
bool valid = false;
// Warning: Won't know until a future frame.
bool failed = false;
std::string desc;
};

class GLRProgram {
Expand Down Expand Up @@ -227,16 +228,13 @@ class GLRenderManager {
return step.create_buffer.buffer;
}

GLRShader *CreateShader(GLuint stage, std::string code, std::string desc) {
GLRShader *CreateShader(GLuint stage, const std::string &code, const std::string &desc) {
GLRInitStep step{ GLRInitStepType::CREATE_SHADER };
step.create_shader.shader = new GLRShader();
step.create_shader.shader->desc = desc;
step.create_shader.stage = stage;
step.create_shader.code = new char[code.size() + 1];
memcpy(step.create_shader.code, code.data(), code.size() + 1);
if (!desc.empty()) {
step.create_shader.desc = desc.size() ? new char[desc.size() + 1] : nullptr;
memcpy(step.create_shader.desc, desc.data(), desc.size() + 1);
}
initSteps_.push_back(step);
return step.create_shader.shader;
}
Expand Down

0 comments on commit 3380ab8

Please sign in to comment.