glsl: add gl_linked_shader::SourceChecksum
for debugging v2: wrap all checksums in #ifdef DEBUG Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
parent
6dfdf52b6a
commit
b818df1e71
|
@ -2297,6 +2297,16 @@ link_intrastage_shaders(void *mem_ctx,
|
||||||
if (ctx->Const.VertexID_is_zero_based)
|
if (ctx->Const.VertexID_is_zero_based)
|
||||||
lower_vertex_id(linked);
|
lower_vertex_id(linked);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
/* Compute the source checksum. */
|
||||||
|
linked->SourceChecksum = 0;
|
||||||
|
for (unsigned i = 0; i < num_shaders; i++) {
|
||||||
|
if (shader_list[i] == NULL)
|
||||||
|
continue;
|
||||||
|
linked->SourceChecksum ^= shader_list[i]->SourceChecksum;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return linked;
|
return linked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2282,6 +2282,10 @@ struct gl_linked_shader
|
||||||
{
|
{
|
||||||
gl_shader_stage Stage;
|
gl_shader_stage Stage;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
unsigned SourceChecksum;
|
||||||
|
#endif
|
||||||
|
|
||||||
struct gl_program *Program; /**< Post-compile assembly code */
|
struct gl_program *Program; /**< Post-compile assembly code */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2414,7 +2418,9 @@ struct gl_shader
|
||||||
GLboolean CompileStatus;
|
GLboolean CompileStatus;
|
||||||
bool IsES; /**< True if this shader uses GLSL ES */
|
bool IsES; /**< True if this shader uses GLSL ES */
|
||||||
|
|
||||||
GLuint SourceChecksum; /**< for debug/logging purposes */
|
#ifdef DEBUG
|
||||||
|
unsigned SourceChecksum; /**< for debug/logging purposes */
|
||||||
|
#endif
|
||||||
const GLchar *Source; /**< Source code string */
|
const GLchar *Source; /**< Source code string */
|
||||||
|
|
||||||
GLchar *InfoLog;
|
GLchar *InfoLog;
|
||||||
|
|
|
@ -1149,10 +1149,16 @@ print_shader_info(const struct gl_shader_program *shProg)
|
||||||
|
|
||||||
printf("Mesa: glUseProgram(%u)\n", shProg->Name);
|
printf("Mesa: glUseProgram(%u)\n", shProg->Name);
|
||||||
for (i = 0; i < shProg->NumShaders; i++) {
|
for (i = 0; i < shProg->NumShaders; i++) {
|
||||||
|
#ifdef DEBUG
|
||||||
printf(" %s shader %u, checksum %u\n",
|
printf(" %s shader %u, checksum %u\n",
|
||||||
_mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
|
_mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
|
||||||
shProg->Shaders[i]->Name,
|
shProg->Shaders[i]->Name,
|
||||||
shProg->Shaders[i]->SourceChecksum);
|
shProg->Shaders[i]->SourceChecksum);
|
||||||
|
#else
|
||||||
|
printf(" %s shader %u\n",
|
||||||
|
_mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
|
||||||
|
shProg->Shaders[i]->Name);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (shProg->_LinkedShaders[MESA_SHADER_VERTEX])
|
if (shProg->_LinkedShaders[MESA_SHADER_VERTEX])
|
||||||
printf(" vert prog %u\n",
|
printf(" vert prog %u\n",
|
||||||
|
|
|
@ -976,7 +976,11 @@ _mesa_write_shader_to_file(const struct gl_shader *shader)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
fprintf(f, "/* Shader %u source, checksum %u */\n", shader->Name, shader->SourceChecksum);
|
fprintf(f, "/* Shader %u source, checksum %u */\n", shader->Name, shader->SourceChecksum);
|
||||||
|
#else
|
||||||
|
fprintf(f, "/* Shader %u source */\n", shader->Name);
|
||||||
|
#endif
|
||||||
fputs(shader->Source, f);
|
fputs(shader->Source, f);
|
||||||
fprintf(f, "\n");
|
fprintf(f, "\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue