Re: [PATCH] test: Add test oversized egl surfaces

RAVI NANJUNDAPPA <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Hi, 

I've referred test/gl-oversized-surface.c file and wrote this new
test/egl-oversized-surface.c to handle the egl surfaces.
Please let me know if the banner needs to modified.

Thanks and Best Regards, 
N Ravi

> -----Original Message-----
> From: Ravi Nanjundappa [mailto:[email protected]]
> Sent: Tuesday, September 16, 2014 11:52 AM
> To: [email protected]
> Cc: Ravi Nanjundappa
> Subject: [PATCH] test: Add test oversized egl surfaces
> 
> This test exercises error scenario when creating over sized egl surface
that is
> larger than maximum framebuffer or texture dimensions of the context
> 
> Signed-off-by: Ravi Nanjundappa <[email protected]>
> ---
>  test/Makefile.am             |    4 ++
>  test/Makefile.sources        |    3 ++
>  test/egl-oversized-surface.c |  112
> ++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 119 insertions(+)
>  create mode 100644 test/egl-oversized-surface.c
> 
> diff --git a/test/Makefile.am b/test/Makefile.am index 81c50e6..950629b
> 100644
> --- a/test/Makefile.am
> +++ b/test/Makefile.am
> @@ -20,6 +20,10 @@ if CAIRO_HAS_GL_SURFACE  test_sources +=
> $(gl_surface_test_sources)  endif
> 
> +if CAIRO_HAS_EGL_FUNCTIONS
> +test_sources += $(egl_surface_test_sources) endif
> +
>  # Need to add quartz-surface-source
>  if CAIRO_HAS_QUARTZ_SURFACE
>  test_sources += $(quartz_surface_test_sources) diff --git
> a/test/Makefile.sources b/test/Makefile.sources index 916d91a..689645c
> 100644
> --- a/test/Makefile.sources
> +++ b/test/Makefile.sources
> @@ -401,6 +401,9 @@ gl_surface_test_sources = \
>  	gl-oversized-surface.c \
>  	gl-surface-source.c
> 
> +egl_surface_test_sources = \
> +       egl-oversized-surface.c
> +
>  quartz_surface_test_sources = quartz-surface-source.c
> 
>  pdf_surface_test_sources = \
> diff --git a/test/egl-oversized-surface.c b/test/egl-oversized-surface.c
new
> file mode 100644 index 0000000..f946da6
> --- /dev/null
> +++ b/test/egl-oversized-surface.c
> @@ -0,0 +1,112 @@
> +/*
> + * Copyright © 2014 Samsung Electronics
> + *
> + * 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 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.
> + *
> + * Author: Ravi Nanjundappa <[email protected]>  */
> +
> +/*
> + * This test exercises error scenario for over sized egl surface
> + *
> + */
> +
> +#include "cairo-test.h"
> +#include <cairo-gl.h>
> +#include <assert.h>
> +#include <limits.h>
> +
> +static cairo_test_status_t
> +preamble (cairo_test_context_t *test_ctx) {
> +    EGLint rgba_attribs[] = {
> +	EGL_RED_SIZE, 8,
> +	EGL_GREEN_SIZE, 8,
> +	EGL_BLUE_SIZE, 8,
> +	EGL_ALPHA_SIZE, 8,
> +	EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
> +#if CAIRO_HAS_GL_SURFACE
> +	EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
> +#elif CAIRO_HAS_GLESV2_SURFACE
> +	EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, #endif
> +	EGL_NONE
> +    };
> +    const EGLint ctx_attribs[] = {
> +#if CAIRO_HAS_GLESV2_SURFACE
> +	EGL_CONTEXT_CLIENT_VERSION, 2,
> +#endif
> +	EGL_NONE
> +    };
> +
> +    EGLDisplay dpy;
> +    EGLContext ctx;
> +    EGLConfig config;
> +    EGLint numConfigs;
> +    int major, minor;
> +    cairo_device_t *device;
> +    cairo_surface_t *oversized_surface;
> +    cairo_test_status_t test_status = CAIRO_TEST_SUCCESS;
> +
> +    dpy = eglGetDisplay (EGL_DEFAULT_DISPLAY);
> +    if (! eglInitialize (dpy, &major, &minor)) {
> +	return CAIRO_TEST_UNTESTED;
> +    }
> +
> +    eglChooseConfig (dpy, rgba_attribs, &config, 1, &numConfigs);
> +    if (numConfigs == 0) {
> +	return CAIRO_TEST_UNTESTED;
> +    }
> +
> +#if CAIRO_HAS_GL_SURFACE
> +    eglBindAPI (EGL_OPENGL_API);
> +#elif CAIRO_HAS_GLESV2_SURFACE
> +    eglBindAPI (EGL_OPENGL_ES_API);
> +#endif
> +
> +   ctx = eglCreateContext (dpy, config, EGL_NO_CONTEXT,
> +				  ctx_attribs);
> +    if (ctx == EGL_NO_CONTEXT) {
> +	eglTerminate (dpy);
> +	return CAIRO_TEST_UNTESTED;
> +    }
> +
> +    device = cairo_egl_device_create (dpy, ctx);
> +
> +    oversized_surface = cairo_gl_surface_create (device,
> CAIRO_CONTENT_COLOR_ALPHA, INT_MAX, INT_MAX);
> +    if (cairo_surface_status (oversized_surface) !=
> CAIRO_STATUS_INVALID_SIZE)
> +        test_status = CAIRO_TEST_FAILURE;
> +
> +    cairo_device_destroy (device);
> +
> +    eglDestroyContext (dpy, ctx);
> +    eglMakeCurrent (dpy, EGL_NO_SURFACE, EGL_NO_SURFACE,
> EGL_NO_CONTEXT);
> +    eglTerminate (dpy);
> +
> +    return test_status;
> +}
> +
> +CAIRO_TEST (egl_oversized_surface,
> +	    "Test that creating a surface beyond texture limits results in
an
> error surface",
> +	    "egl", /* keywords */
> +	    NULL, /* requirements */
> +	    0, 0,
> +	    preamble, NULL)
> --
> 1.7.9.5

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.