示例#1
0
void
piglit_init(int argc, char **argv)
{
	enum piglit_result result = PIGLIT_PASS;
	int i;

	cs_ids_common_init();
	cs_ids_set_local_id_test();
	cs_ids_use_indirect_dispatch();

	for (i = 0; i < ARRAY_SIZE(scenarios); i++) {
		uint32_t *local = scenarios[i].local;
		uint32_t *global = scenarios[i].global;

		cs_ids_set_local_size(local[0], local[1], local[2]);
		cs_ids_set_global_size(global[0], global[1], global[2]);

		cs_ids_set_local_id_test();
		result = cs_ids_run_test();
		if (result != PIGLIT_PASS)
			piglit_report_result(result);

		cs_ids_set_global_id_test();
		result = cs_ids_run_test();
		if (result != PIGLIT_PASS)
			piglit_report_result(result);
	}

	cs_ids_common_destroy();

	piglit_report_result(result);
}
void
piglit_init(int argc, char **argv)
{
	enum piglit_result result;
	GLuint render_program;
	int i;
	float green[4] = { 0.0, 1.0, 0.0, 1.0 };

	cs_ids_common_init();
	cs_ids_set_local_id_test();
	cs_ids_set_local_size(4, 4, 4);
	cs_ids_set_global_size(4, 4, 4);

	render_program =
		piglit_build_simple_program(passthrough_vs_src,
					    green_fs_src);
	glClearColor(0.0, 0.0, 0.0, 0.0);

	for (i = 0; i < 2; i++) {
		result = cs_ids_run_test();
		if (result != PIGLIT_PASS)
			piglit_report_result(result);

		glUseProgram(render_program);
		glClear(GL_COLOR_BUFFER_BIT);
		piglit_draw_rect(-1, -1, 2, 2);
		result = piglit_probe_rect_rgba(0, 0, piglit_width,
						piglit_height, green)
			? PIGLIT_PASS : PIGLIT_FAIL;
	}

	cs_ids_common_destroy();

	piglit_report_result(result);
}
void
piglit_init(int argc, char **argv)
{
	uint32_t global[3] = { 4, 8, 2 };
	enum piglit_result result = PIGLIT_PASS;
	int i;

	cs_ids_common_init();
	cs_ids_set_local_id_test();
	cs_ids_set_local_size(5, 2, 5);

	for (i = 0; i < 16; i++) {
		if (i == 0)
			cs_ids_use_direct_dispatch();
		else if (i == 8)
			cs_ids_use_indirect_dispatch();

		cs_ids_set_global_size((i & 1) ? global[0] : 0u,
				       (i & 2) ? global[1] : 0u,
				       (i & 4) ? global[2] : 0u);

		cs_ids_set_local_id_test();
		result = cs_ids_run_test();
		if (result != PIGLIT_PASS)
			piglit_report_result(result);

		cs_ids_set_global_id_test();
		result = cs_ids_run_test();
		if (result != PIGLIT_PASS)
			piglit_report_result(result);
	}

	cs_ids_common_destroy();

	piglit_report_result(result);
}
示例#4
0
文件: dlist.c 项目: dumbbell/piglit
void
piglit_init(int argc, char **argv)
{
	enum piglit_result result = PIGLIT_PASS;

	GLuint list = glGenLists(1);

	cs_ids_common_init();

	uint32_t *local = scenarios[0].local;
	uint32_t *global = scenarios[0].global;

	cs_ids_set_local_size(local[0], local[1], local[2]);
	cs_ids_set_global_size(global[0], global[1], global[2]);

	cs_ids_set_local_id_test();

	/* -----------------------------------------
	 * Test dispatch with display lists
	 * -----------------------------------------
	 */

	cs_ids_setup_atomics_for_test();

	glNewList(list, GL_COMPILE);
	cs_ids_run_test_without_check();
	glEndList();

	/* Confirm atomic counters were not updated while compiling
	 * the display list.
	 */
	result = cs_ids_confirm_initial_atomic_counters();
	if (result != PIGLIT_PASS) {
		printf("Compute dispatch shouldn't have been called at "
		       "display list compilation time\n");
		piglit_report_result(result);
	}

	glCallList(list);

	/* Confirm dispatch compute worked correctly */
	result = cs_ids_confirm_size();
	if (result != PIGLIT_PASS) {
		printf("Compute dispatch - unexpected results");
		piglit_report_result(result);
	}

	/* Reset atomic counters */
	cs_ids_setup_atomics_for_test();
	result = cs_ids_confirm_initial_atomic_counters();
	if (result != PIGLIT_PASS)
		piglit_report_result(result);

	glNewList(list, GL_COMPILE_AND_EXECUTE);
	cs_ids_run_test_without_check();
	glEndList();

	/* Confirm dispatch compute worked correctly */
	result = cs_ids_confirm_size();
	if (result != PIGLIT_PASS) {
		printf("Compute dispatch should have been called at "
		       "display list compilation time\n");
		piglit_report_result(result);
	}

	/* -----------------------------------------
	 * Test indirect dispatch with display lists
	 * -----------------------------------------
	 */
	cs_ids_use_indirect_dispatch();

	/* Reset atomic counters */
	cs_ids_setup_atomics_for_test();
	result = cs_ids_confirm_initial_atomic_counters();
	if (result != PIGLIT_PASS)
		piglit_report_result(result);

	if (!piglit_check_gl_error(GL_NO_ERROR))
		piglit_report_result(PIGLIT_FAIL);

	glNewList(list, GL_COMPILE);
	cs_ids_run_test_without_check();
	glEndList();

	if (!piglit_check_gl_error(GL_INVALID_OPERATION)) {
		printf("Failed to generate error when calling "
		       "glDispatchComputeIndirect() in display list.");
		piglit_report_result(PIGLIT_FAIL);
	}

	/* Confirm atomic counters were not updated while compiling
	 * the display list.
	 */
	result = cs_ids_confirm_initial_atomic_counters();
	if (result != PIGLIT_PASS) {
		printf("Indirect compute dispatch shouldn't have been called "
		       "at display list compilation time\n");
		piglit_report_result(result);
	}

	/* Reset atomic counters */
	cs_ids_setup_atomics_for_test();
	result = cs_ids_confirm_initial_atomic_counters();
	if (result != PIGLIT_PASS)
		piglit_report_result(result);

	if (!piglit_check_gl_error(GL_NO_ERROR))
		piglit_report_result(PIGLIT_FAIL);

	glNewList(list, GL_COMPILE_AND_EXECUTE);
	cs_ids_run_test_without_check();
	glEndList();

	if (!piglit_check_gl_error(GL_INVALID_OPERATION)) {
		printf("Failed to generate error when calling "
		       "glDispatchComputeIndirect() in display list.");
		piglit_report_result(PIGLIT_FAIL);
	}

	/* Confirm atomic counters were not updated while compiling
	 * the display list.
	 */
	result = cs_ids_confirm_initial_atomic_counters();
	if (result != PIGLIT_PASS) {
		printf("Indirect compute dispatch shouldn't have been called "
		       "at display list compilation time\n");
		piglit_report_result(result);
	}

	/* We are done start teardown */
	glDeleteLists(list, 1);
	cs_ids_common_destroy();

	piglit_report_result(result);
}