On 4/11/19 3:32 AM, Marek Olšák wrote:
From: Marek Olšák <[email protected]>--- src/mesa/main/shaderapi.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 01342c04e8f..6b73e6c7e7a 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -1233,24 +1233,38 @@ link_program(struct gl_context *ctx, struct gl_shader_program *shProg, if (shProg->_LinkedShaders[stage]) prog = shProg->_LinkedShaders[stage]->Program;_mesa_use_program(ctx, stage, shProg, prog, ctx->_Shader);} }/* Capture .shader_test files. */const char *capture_path = _mesa_get_shader_capture_path(); if (shProg->Name != 0 && shProg->Name != ~0 && capture_path != NULL) { - FILE *file; - char *filename = ralloc_asprintf(NULL, "%s/%u.shader_test", + /* Find an unused filename. */ + char *filename = NULL; + for (unsigned i = 0;; i++) { + if (i) { + filename = ralloc_asprintf(NULL, "%s/%u-%u.shader_test", + capture_path, shProg->Name, i); + } else { + filename = ralloc_asprintf(NULL, "%s/%u.shader_test", capture_path, shProg->Name);
How about just having the counter always there, to simplify a bit and have consistent filename scheme? Just a suggestion.
- file = fopen(filename, "w"); + } + FILE *file = fopen(filename, "r"); + if (!file) + break;
I'm surprised we don't have some helper like 'util_path_exists' but this works, I guess then we should have 'util_path_isdir|isfile' and others as well.
With or without the suggestion; Reviewed-by: Tapani Pälli <[email protected]>
+ fclose(file); + ralloc_free(filename); + } + + FILE *file = fopen(filename, "w"); if (file) { fprintf(file, "[require]\nGLSL%s >= %u.%02u\n", shProg->IsES ? " ES" : "", shProg->data->Version / 100, shProg->data->Version % 100); if (shProg->SeparateShader) fprintf(file, "GL_ARB_separate_shader_objects\nSSO ENABLED\n"); fprintf(file, "\n");for (unsigned i = 0; i < shProg->NumShaders; i++) {fprintf(file, "[%s shader]\n%s\n",
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
