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) { 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); }
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); }