This hasn't proven to be terribly useful; most tests don't use it. Dropping it allows us to drop code for: - Loading shaders from files - Determining where to look for said files (platform specific) - A bunch of per-shader stage enums - compile_glsl parameter for whether or not to free the shader string
Signed-off-by: Kenneth Graunke <[email protected]> --- tests/shaders/shader_runner.c | 140 +++--------------------------------------- 1 file changed, 10 insertions(+), 130 deletions(-) diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c index a1bd5ee..5c5e2c1 100644 --- a/tests/shaders/shader_runner.c +++ b/tests/shaders/shader_runner.c @@ -134,21 +134,15 @@ enum states { none = 0, requirements, vertex_shader, - vertex_shader_file, vertex_shader_passthrough, vertex_program, tess_ctrl_shader, - tess_ctrl_shader_file, tess_eval_shader, - tess_eval_shader_file, geometry_shader, - geometry_shader_file, geometry_layout, fragment_shader, - fragment_shader_file, fragment_program, compute_shader, - compute_shader_file, vertex_data, test, }; @@ -269,7 +263,7 @@ target_to_short_name(GLenum target) void -compile_glsl(GLenum target, bool release_text) +compile_glsl(GLenum target) { GLuint shader = glCreateShader(target); GLint ok; @@ -348,10 +342,6 @@ compile_glsl(GLenum target, bool release_text) piglit_report_result(PIGLIT_FAIL); } - if (release_text) { - free(shader_string); - } - switch (target) { case GL_VERTEX_SHADER: vertex_shaders[num_vertex_shaders] = shader; @@ -461,42 +451,6 @@ comparison_string(enum comparison cmp) } -void -load_shader_file(const char *line) -{ - GLsizei *const size = &shader_string_size; - char buf[256]; - char *text; - - if (shader_string) { - printf("Multiple shader files in same section: %s\n", line); - piglit_report_result(PIGLIT_FAIL); - } - - strcpy_to_space(buf, line); - - text = piglit_load_text_file(buf, (unsigned *) size); - if ((text == NULL) && (path != NULL)) { - const size_t len = strlen(path); - - memcpy(buf, path, len); - buf[len] = '/'; - strcpy_to_space(&buf[len + 1], line); - - text = piglit_load_text_file(buf, (unsigned *) size); - } - - if (text == NULL) { - strcpy_to_space(buf, line); - - printf("could not load file \"%s\"\n", buf); - piglit_report_result(PIGLIT_FAIL); - } - - shader_string = text; -} - - /** * Parse a binary comparison operator and return the matching token */ @@ -747,15 +701,11 @@ leave_state(enum states state, const char *line) case vertex_shader: shader_string_size = line - shader_string; - compile_glsl(GL_VERTEX_SHADER, false); + compile_glsl(GL_VERTEX_SHADER); break; case vertex_shader_passthrough: - compile_glsl(GL_VERTEX_SHADER, false); - break; - - case vertex_shader_file: - compile_glsl(GL_VERTEX_SHADER, true); + compile_glsl(GL_VERTEX_SHADER); break; case vertex_program: @@ -766,29 +716,17 @@ leave_state(enum states state, const char *line) case tess_ctrl_shader: shader_string_size = line - shader_string; - compile_glsl(GL_TESS_CONTROL_SHADER, false); - break; - - case tess_ctrl_shader_file: - compile_glsl(GL_TESS_CONTROL_SHADER, true); + compile_glsl(GL_TESS_CONTROL_SHADER); break; case tess_eval_shader: shader_string_size = line - shader_string; - compile_glsl(GL_TESS_EVALUATION_SHADER, false); - break; - - case tess_eval_shader_file: - compile_glsl(GL_TESS_EVALUATION_SHADER, true); + compile_glsl(GL_TESS_EVALUATION_SHADER); break; case geometry_shader: shader_string_size = line - shader_string; - compile_glsl(GL_GEOMETRY_SHADER, false); - break; - - case geometry_shader_file: - compile_glsl(GL_GEOMETRY_SHADER, true); + compile_glsl(GL_GEOMETRY_SHADER); break; case geometry_layout: @@ -796,11 +734,7 @@ leave_state(enum states state, const char *line) case fragment_shader: shader_string_size = line - shader_string; - compile_glsl(GL_FRAGMENT_SHADER, false); - break; - - case fragment_shader_file: - compile_glsl(GL_FRAGMENT_SHADER, true); + compile_glsl(GL_FRAGMENT_SHADER); break; case fragment_program: @@ -811,11 +745,7 @@ leave_state(enum states state, const char *line) case compute_shader: shader_string_size = line - shader_string; - compile_glsl(GL_COMPUTE_SHADER, false); - break; - - case compute_shader_file: - compile_glsl(GL_COMPUTE_SHADER, true); + compile_glsl(GL_COMPUTE_SHADER); break; case vertex_data: @@ -980,27 +910,15 @@ process_test_script(const char *script_name) shader_string = (char *) passthrough_vertex_shader_source; shader_string_size = strlen(shader_string); - } else if (string_match("[vertex shader file]", line)) { - state = vertex_shader_file; - shader_string = NULL; } else if (string_match("[tessellation control shader]", line)) { state = tess_ctrl_shader; shader_string = NULL; - } else if (string_match("[tessellation control shader file]", line)) { - state = tess_ctrl_shader_file; - shader_string = NULL; } else if (string_match("[tessellation evaluation shader]", line)) { state = tess_eval_shader; shader_string = NULL; - } else if (string_match("[tessellation evaluation shader file]", line)) { - state = tess_eval_shader_file; - shader_string = NULL; } else if (string_match("[geometry shader]", line)) { state = geometry_shader; shader_string = NULL; - } else if (string_match("[geometry shader file]", line)) { - state = geometry_shader_file; - shader_string = NULL; } else if (string_match("[geometry layout]", line)) { state = geometry_layout; shader_string = NULL; @@ -1010,15 +928,9 @@ process_test_script(const char *script_name) } else if (string_match("[fragment program]", line)) { state = fragment_program; shader_string = NULL; - } else if (string_match("[fragment shader file]", line)) { - state = fragment_shader_file; - shader_string = NULL; } else if (string_match("[compute shader]", line)) { state = compute_shader; shader_string = NULL; - } else if (string_match("[compute shader file]", line)) { - state = compute_shader_file; - shader_string = NULL; } else if (string_match("[vertex data]", line)) { state = vertex_data; vertex_data_start = NULL; @@ -1054,17 +966,6 @@ process_test_script(const char *script_name) shader_string = (char *) line; break; - case vertex_shader_file: - case tess_ctrl_shader_file: - case tess_eval_shader_file: - case geometry_shader_file: - case fragment_shader_file: - case compute_shader_file: - line = eat_whitespace(line); - if ((line[0] != '\n') && (line[0] != '#')) - load_shader_file(line); - break; - case vertex_data: if (vertex_data_start == NULL) vertex_data_start = line; @@ -2459,29 +2360,8 @@ piglit_init(int argc, char **argv) gl_max_vertex_uniform_components *= 4; gl_max_clip_planes = 0; #endif - if (argc > 2) { - path = argv[2]; - } else if (argc > 1) { -#if defined(_WIN32) - char drive[_MAX_DRIVE]; - char dir[_MAX_DIR]; - char fname[_MAX_FNAME]; - char ext[_MAX_EXT]; - char* scriptpath; - _splitpath(argv[1], drive, dir, fname, ext); - scriptpath = malloc(strlen(drive) + strlen(dir) + 1); - strcpy(scriptpath, drive); - strcat(scriptpath, dir); - path = scriptpath; -#else - /* Because dirname()'s memory handling is unpredictable, we - * must copy both its input and ouput. */ - char* scriptpath = strdup(argv[1]); - path = strdup(dirname(scriptpath)); - free(scriptpath); -#endif - } else { - printf("shader_runner: missing arguments\n"); + if (argc < 2) { + printf("usage: shader_runner <test.shader_test>\n"); exit(1); } -- 2.0.1 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
