Chad Versace <[email protected]> writes: > On 10/21/2013 02:11 PM, Nicholas Mack wrote: >> v2: Fix comments, initialize variables. Still need to figure out if GPU >> commands >> needed before testing these. >> >> v3: Rewrite test cases, fix comment and config block and add to all.tests >> >> v4: Make test work with POSIX_CLOCKS and some other minor changes >> --- >> tests/all.tests | 1 + >> tests/spec/arb_sync/CMakeLists.gl.txt | 1 + >> tests/spec/arb_sync/ClientWaitSync-returns.c | 183 >> +++++++++++++++++++++++++++ >> 3 files changed, 185 insertions(+) >> create mode 100644 tests/spec/arb_sync/ClientWaitSync-returns.c > > > Ken, Eric, Ian, I want your opinion on this GL_ARB_sync testcase. > > It sets up a simple draw call, does *not* call glFlush, inserts a fence > with a one second timeout, waits for the fence to signal, then verifies > that the elapsed time is approximately the timeout value. > > The testcase's intent is to verify that fence's correctly timeout. > > Of course, i965 fails this test because have a stupid implementation of > glClientWaitSync. For glClientWaitSync, i965 flushes, waits for the batch to > complete, > then returns. > > Test case #1 below currently reports PIGLIT_FAIL on i965. > i965 conforms to a strict interpretation of the GL_ARB_sync, but I don't > want to the test to simply pass. It really feels like i965 is cheating, so > I want the test to report PIGLIT_WARN. > > What's your opinion? > > >> + /* Test Case 1: Verify that fence times out correctly after set time */ >> + >> + /* queue a draw command */ >> + piglit_draw_rect(-1, -1, 2, 2); >> + >> + /* create fence sync */ >> + fence1 = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); >> + >> + /* get initial time */ >> + start = piglit_get_microseconds(); >> + if (start == -1) piglit_report_result(PIGLIT_SKIP); >> + >> + /* check fence status */ >> + status1 = glClientWaitSync(fence1, GL_SYNC_FLUSH_COMMANDS_BIT, >> + ONE_SECOND); >> + >> + /* draw call should not be complete since glFlush() wasn't called */ >> + if (status1 != GL_TIMEOUT_EXPIRED) { >> + printf("Expected: status1 == GL_TIMEOUT_EXPIRED\n" >> + "Actual: status1 == %s\n", >> + piglit_get_gl_enum_name(status1)); >> + pass = false; >> + }
The ClientWaitSync() up there explicitly asked for the batch to get flushed (GL_SYNC_FLUSH_COMMANDS_BIT), so the "since glFlush() wasn't called" bit is wrong. I also disagree in general with tests that assert that batchbuffers haven't been flushed -- that's a driver detail.
pgpnN5uWYVjY7.pgp
Description: PGP signature
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
