diff options
author | Brian Paul <brianp@vmware.com> | 2015-08-03 14:23:30 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2015-08-05 06:59:27 -0600 |
commit | 6b998da2f7a99d9c72dc0fa9ce7549eb30172f67 (patch) | |
tree | e0e9ca3fb639b0849e7fade5cd1a5af5fe9d2980 | |
parent | c10d831bc5e94e779a944e47599933809bae93c8 (diff) |
occlusion_query_meta_save: also test scissored clear
Plain glClear is seldom a meta operation, but scissored clears are
implemented by drawing a quad in gallium. Now the test tries both
to check that glClear doesn't effect the occlusion query count.
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | tests/spec/arb_occlusion_query/occlusion_query_meta_save.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/tests/spec/arb_occlusion_query/occlusion_query_meta_save.c b/tests/spec/arb_occlusion_query/occlusion_query_meta_save.c index 927d72e5b..cf08de699 100644 --- a/tests/spec/arb_occlusion_query/occlusion_query_meta_save.c +++ b/tests/spec/arb_occlusion_query/occlusion_query_meta_save.c @@ -41,8 +41,9 @@ PIGLIT_GL_TEST_CONFIG_BEGIN PIGLIT_GL_TEST_CONFIG_END -enum piglit_result -piglit_display(void) + +static bool +run_test(bool scissor_clear) { GLuint query; GLint result = -1; @@ -61,7 +62,14 @@ piglit_display(void) /* Clear the framebuffer. This shouldn't affect the query */ glClearColor(0.0, 0.0, 1.0, 0.0); + if (scissor_clear) { + glScissor(0, 0, piglit_width / 2, piglit_height / 2); + glEnable(GL_SCISSOR_TEST); + } glClear(GL_COLOR_BUFFER_BIT); + if (scissor_clear) { + glDisable(GL_SCISSOR_TEST); + } /* Render another 64 pixels. This should continue adding to * the query */ @@ -76,15 +84,26 @@ piglit_display(void) piglit_present_results(); if (result != 128) { - printf("Occlusion query resulted in %d samples " + printf("Failure: \n"); + printf(" Occlusion query resulted in %d samples " "(expected 128)\n", result); - return PIGLIT_FAIL; + printf(" Scissor enabled? %s\n", scissor_clear ? "yes" : "no"); + return false; } else { - return PIGLIT_PASS; + return true; } } +enum piglit_result +piglit_display(void) +{ + bool pass = run_test(false); + pass = run_test(true) && pass; + + return pass ? PIGLIT_PASS : PIGLIT_FAIL; +} + void piglit_init(int argc, char **argv) { |