diff options
author | Brian Paul <[email protected]> | 2009-10-13 16:32:15 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-10-13 16:33:36 -0600 |
commit | 435623b3f0b2d2db5b107ef177693ccafc591a29 (patch) | |
tree | ebb7d26be66909290b15454c220fcc0202de31be /src/mesa/main/shaders.c | |
parent | dfefde38c7dfe70a3531cb85215e55eeb6407180 (diff) |
mesa: rework _mesa_read_shader() debug hook
Look for shaders named "newshader_<CHECKSUM>" to replace the incoming
shader text. For debug purposes.
Diffstat (limited to 'src/mesa/main/shaders.c')
-rw-r--r-- | src/mesa/main/shaders.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c index bc76b912913..96fd8695a59 100644 --- a/src/mesa/main/shaders.c +++ b/src/mesa/main/shaders.c @@ -388,7 +388,6 @@ _mesa_read_shader(const char *fname) int len; if (!f) { - _mesa_fprintf(stderr, "Unable to open shader file %s\n", fname); return NULL; } @@ -401,11 +400,6 @@ _mesa_read_shader(const char *fname) shader = _mesa_strdup(buffer); free(buffer); - if (0) { - _mesa_fprintf(stderr, "Read shader %s:\n", fname); - _mesa_fprintf(stderr, "%s\n", shader); - } - return shader; } @@ -475,19 +469,25 @@ _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count, source[totalLength - 1] = '\0'; source[totalLength - 2] = '\0'; -#if 0 if (0) { + /* Compute the shader's source code checksum then try to open a file + * named newshader_<CHECKSUM>. If it exists, use it in place of the + * original shader source code. For debugging. + */ + const GLuint checksum = _mesa_str_checksum(source); + char filename[100]; GLcharARB *newSource; - newSource = _mesa_read_shader("newshader.frag"); + sprintf(filename, "newshader_%d", checksum); + + newSource = _mesa_read_shader(filename); if (newSource) { + _mesa_fprintf(stderr, "Mesa: Replacing shader %u chksum=%d with %s\n", + shaderObj, checksum, filename); _mesa_free(source); source = newSource; } - } -#else - (void) _mesa_read_shader; -#endif + } ctx->Driver.ShaderSource(ctx, shaderObj, source); |