[Piglit] [PATCH] Add test case to verify swapping buffers without active context.

Anuj Phogat anuj.phogat at gmail.com
Wed Jan 11 17:03:25 PST 2012


On Tue, Jan 10, 2012 at 1:36 AM, Yi Sun <yi.sun at intel.com> wrote:

> From: Sun Yi <yi.sun at intel.com>
>
> Test swapping buffers on NULL context.
> Verify that swapping buffers without active context is ignored.
> Test rendered a triangle afterwards active context is deselected
> and buffers swapping is performed by calling function glXSwapBuffers.
>
> Signed-off-by: Yi Sun <yi.sun at intel.com>
> ---
>  tests/spec/gl-2.1/CMakeLists.gl.txt |    1 +
>  tests/spec/gl-2.1/swapbuffer.c      |   65
> +++++++++++++++++++++++++++++++++++
>  2 files changed, 66 insertions(+), 0 deletions(-)
>  create mode 100644 tests/spec/gl-2.1/swapbuffer.c
>
> diff --git a/tests/spec/gl-2.1/CMakeLists.gl.txt
> b/tests/spec/gl-2.1/CMakeLists.gl.txt
> index 9a4afbe..c1002f6 100644
> --- a/tests/spec/gl-2.1/CMakeLists.gl.txt
> +++ b/tests/spec/gl-2.1/CMakeLists.gl.txt
> @@ -14,3 +14,4 @@ link_libraries (
>  )
>
>  add_executable (gl-2.1-minmax minmax.c)
> +add_executable (swapbuffer swapbuffer.c)
> diff --git a/tests/spec/gl-2.1/swapbuffer.c
> b/tests/spec/gl-2.1/swapbuffer.c
> new file mode 100644
> index 0000000..ff7920a
> --- /dev/null
> +++ b/tests/spec/gl-2.1/swapbuffer.c
> @@ -0,0 +1,65 @@
> +/* Copyright © 2012 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the
> "Software"),
> + * to deal in the Software without restriction, including without
> limitation
> + * the rights to use, copy, modify, merge, publish, distribute,
> sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the
> next
> + * paragraph) shall be included in all copies or substantial portions of
> the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
> SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +/**
> + * file swapbuffer.c
> + *
> + * Test swapping buffers on NULL context.
> + * Verify that swapping buffers without active context is ignored.
>
glXSwapBuffers() doesn't require gl context. I think swap buffer can still
happen
as expected.


> + * Test rendered a triangle afterwards active context is deselected
> + * and buffers swapping is performed.
> + *
>
You are rendering the triangle before making the context null. So the
triangle
will be rendered to frame buffer and will be visible after swap buffers.
You should also render another triangle with different vertex coordinates
after making
the context null and make sure that triangle don't modify frame buffer.


> + * Test is expected no crash occurs during testcase execution.
> + *
> + * Author Yi Sun <yi.sun at intel.com>
> + */
> +
> +#include "piglit-util.h"
> +#include <X11/Xlib.h>
> +#include <GL/glx.h>
> +
> +int piglit_width = 100, piglit_height = 100;
> +int piglit_window_mode = GLUT_RGB | GLUT_DOUBLE;
> +
> +
> +enum piglit_result
> +piglit_display(void)
> +{
> +       glBegin(GL_TRIANGLES);
> +               glVertex2f(0,0);
> +               glVertex2f(0,1);
> +               glVertex2f(1,1);
> +       glEnd();
> +
> +       Display *dpy = glXGetCurrentDisplay();
> +       GLXDrawable draw = glXGetCurrentDrawable();
> +
> +       glXMakeContextCurrent(dpy, 0, 0, 0);    //deselect the context
> +       glXSwapBuffers(dpy, draw);                              //swap
> buffer, no crashing expected
> +
> +       return PIGLIT_PASS;
> +}
> +
> +void piglit_init(int argc, char **argv)
> +{
> +
> +}
>
> Thanks for the test case. I'm able to reproduce the issue. Will send out a
patch to fix the issue.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20120111/dbeef66f/attachment.htm>


More information about the Piglit mailing list