void piglit_init(int argc, char **argv) { enum test_array_type array_type; GLint max_varying_floats; struct varying_desc *varyings; unsigned num_varyings; unsigned glsl_version; GLuint vs, fs; if (argc != 3) print_usage_and_exit(argv[0]); glsl_version = test_type->glsl_version_required; if (strcmp(argv[2], "array") == 0) array_type = ARRAY; else if (strcmp(argv[2], "separate") == 0) array_type = SEPARATE; else if (strcmp(argv[2], "arrays_of_arrays") == 0) { array_type = ARRAYS_OF_ARRAYS; piglit_require_extension("GL_ARB_arrays_of_arrays"); if (glsl_version < 120) glsl_version = 120; } else print_usage_and_exit(argv[0]); piglit_require_gl_version(20); piglit_require_GLSL_version(glsl_version); if (test_type->base == BASE_TYPE_DOUBLE) piglit_require_extension("GL_ARB_gpu_shader_fp64"); glGetIntegerv(GL_MAX_VARYING_FLOATS, &max_varying_floats); varyings = malloc(sizeof(*varyings) * max_varying_floats); num_varyings = choose_varyings(varyings, test_type, array_type, max_varying_floats); vs = get_shader(true, test_type->glsl_version_required, num_varyings, varyings, array_type); fs = get_shader(false, test_type->glsl_version_required, num_varyings, varyings, array_type); prog = piglit_link_simple_program(vs, fs); i_location = glGetUniformLocation(prog, "i"); free(varyings); }
void piglit_init(int argc, char **argv) { unsigned i; const struct type_desc *test_type; GLboolean test_array; GLint max_varying_floats; struct varying_desc *varyings; unsigned num_varyings; GLuint vs, fs; if (argc != 3) print_usage_and_exit(argv[0]); for (i = 0; all_types[i]; ++i) { if (strcmp(argv[1], all_types[i]->name) == 0) break; } if (all_types[i]) test_type = all_types[i]; else print_usage_and_exit(argv[0]); if (strcmp(argv[2], "array") == 0) test_array = GL_TRUE; else if (strcmp(argv[2], "separate") == 0) test_array = GL_FALSE; else print_usage_and_exit(argv[0]); piglit_require_gl_version(20); piglit_require_GLSL_version(test_type->glsl_version_required); glGetIntegerv(GL_MAX_VARYING_FLOATS, &max_varying_floats); varyings = malloc(sizeof(*varyings) * max_varying_floats); num_varyings = choose_varyings(varyings, test_type, test_array, max_varying_floats); vs = get_shader(true, test_type->glsl_version_required, num_varyings, varyings); fs = get_shader(false, test_type->glsl_version_required, num_varyings, varyings); prog = piglit_link_simple_program(vs, fs); i_location = glGetUniformLocation(prog, "i"); free(varyings); }