示例#1
0
void
piglit_init(int argc, char **argv)
{
    GLuint vs;
    int i;

    /* Parse params. */
    if (argc != 2)
        print_usage_and_exit(argv[0]);
    test_to_run = find_matching_test(argv[0], argv[1]);

    /* Set up test */
    piglit_require_GLSL_version(test_to_run->version);
    piglit_require_transform_feedback();
    vs = piglit_compile_shader_text(GL_VERTEX_SHADER, test_to_run->vs);
    prog = glCreateProgram();
    glAttachShader(prog, vs);
    glBindAttribLocation(prog, 0, "vertex_pos");
    glBindAttribLocation(prog, 1, "vertex_num");
    glTransformFeedbackVaryings(prog, test_to_run->num_varyings,
                                (const char **) test_to_run->varyings,
                                GL_INTERLEAVED_ATTRIBS_EXT);
    glLinkProgram(prog);
    if (!piglit_link_check_status(prog)) {
        glDeleteProgram(prog);
        piglit_report_result(PIGLIT_FAIL);
    }

    /* Test that GetTransformFeedbackVarying reports the correct
     * size and type for all of the varyings.
     */
    for (i = 0; i < test_to_run->num_varyings; ++i) {
        GLsizei size;
        GLenum type;
        glGetTransformFeedbackVarying(prog, i, 0, NULL, &size,
                                      &type, NULL);
        if (size != test_to_run->expected_size) {
            printf("For varying %i, expected size %i, got %i\n",
                   i, test_to_run->expected_size, size);
            size_and_type_ok = GL_FALSE;
        }
        if (type != test_to_run->expected_type) {
            printf("For varying %i, expected type %i, got %i\n",
                   i, test_to_run->expected_type, type);
            size_and_type_ok = GL_FALSE;
        }
    }

    glGenBuffers(1, &xfb_buf);
    glGenQueries(1, &query);
    glEnable(GL_VERTEX_PROGRAM_TWO_SIDE);
}
示例#2
0
void
piglit_init(int argc, char **argv)
{
	const struct test_desc *test;

	/* Parse params. */
	if (argc != 2)
		print_usage_and_exit(argv[0]);
	test = find_matching_test(argv[0], argv[1]);

	piglit_require_GLSL();
	piglit_require_transform_feedback();

	piglit_report_result(do_test(test) ? PIGLIT_PASS : PIGLIT_FAIL);
}
示例#3
0
void
piglit_init(int argc, char **argv)
{
	const struct test_desc *test;

	/* Parse params. */
	if (argc != 2)
		print_usage_and_exit(argv[0]);
	test = find_matching_test(argv[0], argv[1]);

	piglit_require_GLSL();
	piglit_require_transform_feedback();
	if (test->bind_mode == OFFSET) {
		/* BindBufferOffset only exists in the EXT specification */
		piglit_require_extension("GL_EXT_transform_feedback");
	}

	piglit_report_result(do_test(test) ? PIGLIT_PASS : PIGLIT_FAIL);
}