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
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.