Re: [PATCH] test: Add test oversized egl surfaces
RAVI NANJUNDAPPA <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
Hi, Am facing some problem with UTF while sending the patch inline. I guess that's one of the reason why that patch was not be displayed in the mailing list as well. So attaching the patch here for better clarity. > -----Original Message----- > From: cairo [mailto:[email protected]] On Behalf Of RAVI > NANJUNDAPPA > Sent: Tuesday, September 16, 2014 12:00 PM > To: [email protected] > Subject: Re: [cairo] [PATCH] test: Add test oversized egl surfaces > > 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 -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo
0001-test-Add-test-oversized-egl-surfaces.patch
(application/octet-stream, 5 KB)
From 2387f10a09086ca292781e2c43649a4ef162cafe Mon Sep 17 00:00:00 2001 From: Ravi Nanjundappa <[email protected]> Date: Tue, 16 Sep 2014 10:18:02 +0530 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