コード例 #1
0
ファイル: simple.c プロジェクト: chemecse/piglit
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);
}
コード例 #2
0
ファイル: simple.c プロジェクト: RAOF/piglit
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);
}