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