[Piglit] [PATCH] dlist-multidrawarrays: test that glMultiDrawArrays works in a display list
Eric Anholt
eric at anholt.net
Mon Mar 31 17:22:31 PDT 2014
Brian Paul <brianp at vmware.com> writes:
> v2: Also test GL_COMPILE_AND_EXECUTE mode.
> diff --git a/tests/spec/gl-1.4/dlist-multidrawarrays.c b/tests/spec/gl-1.4/dlist-multidrawarrays.c
> new file mode 100644
> index 0000000..b5f6343
> --- /dev/null
> +++ b/tests/spec/gl-1.4/dlist-multidrawarrays.c
> +static bool
> +test_list(GLuint list, GLenum dlmode, const char *func)
> +{
> + bool pass = true;
> + const float *exp_color;
> +
> + assert(dlmode == GL_COMPILE || dlmode == GL_COMPILE_AND_EXECUTE);
> +
> + if (dlmode == GL_COMPILE_AND_EXECUTE) {
> + /* the polygon should have been drawn during display
> + * list construction.
> + */
> + exp_color = white;
> + }
> + else {
> + /* the polygon should not have been drawn yet */
> + exp_color = black;
> + }
> + pass = piglit_probe_rect_rgb(0, 0, piglit_width, piglit_height,
> + exp_color);
> + if (!pass) {
> + fprintf(stderr,
> + "Compiling %s in display list failed for %s mode\n",
> + func, piglit_get_gl_enum_name(dlmode));
> + glDeleteLists(list, 1);
> + return pass;
> + }
> +
> + /* Now, call the list and make sure the polygon is rendered */
> + glClear(GL_COLOR_BUFFER_BIT);
> + glCallList(list);
> +
> + pass = piglit_probe_rect_rgb(0, 0, piglit_width, piglit_height, white);
> +
> + piglit_present_results();
> +
> + glDeleteLists(list, 1);
> +
> + if (!pass) {
> + fprintf(stderr,
> + "Calling %s in display list failed for %s mode\n",
> + func, piglit_get_gl_enum_name(dlmode));
> + }
> +
> + return pass;
> +}
> +enum piglit_result
> +piglit_display(void)
> +{
> + bool pass = true;
> +
> + pass = test_MultiDrawArrays(GL_COMPILE) && pass;
> + pass = test_MultiDrawArrays(GL_COMPILE_AND_EXECUTE) && pass;
> + pass = test_MultiDrawElements(GL_COMPILE) && pass;
> + pass = test_MultiDrawElements(GL_COMPILE_AND_EXECUTE) && pass;
> + if (piglit_is_extension_supported("GL_IBM_multimode_draw_arrays")) {
> + pass = test_MultiModeDrawArraysIBM(GL_COMPILE) && pass;
> + pass = test_MultiModeDrawArraysIBM(GL_COMPILE_AND_EXECUTE)
> + && pass;
> + pass = test_MultiModeDrawElementsIBM(GL_COMPILE) && pass;
> + pass = test_MultiModeDrawElementsIBM(GL_COMPILE_AND_EXECUTE)
> + && pass;
> + }
> +
> + piglit_present_results();
Either this piglit_present_results() or the one in test_list should
probably go, since the backbuffer is undefined after the last
present_results.
Other than that, the only thing I saw was that it would have been nice
to test drawcount > 1. But it covered the bug, so:
Reviewed-by: Eric Anholt <eric at anholt.net>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20140331/7e4b7f54/attachment.sig>
More information about the Piglit
mailing list