Mesa (mesa_7_5_branch): progs/tests: Add some scissor tests

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Mon Jun 8 06:03:11 PDT 2009


Module: Mesa
Branch: mesa_7_5_branch
Commit: 283e84bfb3066a3e3d778d4065b448ddd288fbb4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=283e84bfb3066a3e3d778d4065b448ddd288fbb4

Author: Jakob Bornecrantz <jakob at vmware.com>
Date:   Wed Jun  3 16:33:56 2009 +0200

progs/tests: Add some scissor tests

---

 progs/tests/.gitignore         |    2 +
 progs/tests/Makefile           |    2 +
 progs/tests/SConscript         |    2 +
 progs/tests/scissor-viewport.c |  138 ++++++++++++++++++++++++++++++++
 progs/tests/scissor.c          |  168 ++++++++++++++++++++++++++++++++++++++++
 5 files changed, 312 insertions(+), 0 deletions(-)

diff --git a/progs/tests/.gitignore b/progs/tests/.gitignore
index 959ddcc..d6a8538 100644
--- a/progs/tests/.gitignore
+++ b/progs/tests/.gitignore
@@ -62,6 +62,8 @@ readrate
 readtex.c
 readtex.h
 rubberband
+scissor
+scissor-viewport
 seccolor
 shader_api
 shaderutil.c
diff --git a/progs/tests/Makefile b/progs/tests/Makefile
index 628ca41..7604b22 100644
--- a/progs/tests/Makefile
+++ b/progs/tests/Makefile
@@ -70,6 +70,8 @@ SOURCES = \
 	random.c \
 	readrate.c \
 	rubberband.c \
+	scissor.c \
+	scissor-viewport.c \
 	seccolor.c \
 	shader_api.c \
 	sharedtex.c \
diff --git a/progs/tests/SConscript b/progs/tests/SConscript
index 453fcec..9d89ff6 100644
--- a/progs/tests/SConscript
+++ b/progs/tests/SConscript
@@ -95,6 +95,8 @@ progs = [
     'random',
     'readrate',
     'rubberband',
+    'scissor',
+    'scissor-viewport',
     'seccolor',
     'shader_api',
     'stencil_twoside',
diff --git a/progs/tests/scissor-viewport.c b/progs/tests/scissor-viewport.c
new file mode 100644
index 0000000..582e65f
--- /dev/null
+++ b/progs/tests/scissor-viewport.c
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc.
+ * Copyright (c) 2009 VMware, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the name of
+ * Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Silicon Graphics.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF
+ * ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <GL/glut.h>
+
+struct program
+{
+   unsigned width;
+   unsigned height;
+   int i;
+};
+
+struct program prog;
+
+static void init(void)
+{
+   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER));
+   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION));
+   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR));
+   fflush(stderr);
+
+   prog.i = 0;
+}
+
+static void reshape(int width, int height)
+{
+   glViewport(0, 0, 100, 100);
+
+   prog.width = width;
+   prog.height = height;
+
+   glMatrixMode(GL_PROJECTION);
+   glLoadIdentity();
+   glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
+   glMatrixMode(GL_MODELVIEW);
+}
+
+static void key(unsigned char key, int x, int y)
+{
+
+   switch (key) {
+   case 27:
+      exit(1);
+   default:
+      glutPostRedisplay();
+      return;
+   }
+}
+
+static void drawQuad(void)
+{
+   glBegin(GL_QUADS);
+   glVertex2d(-1.0, -1.0);
+   glVertex2d( 1.0, -1.0);
+   glVertex2d( 1.0,  1.0);
+   glVertex2d(-1.0,  1.0);
+   glEnd();
+}
+
+static void draw(void)
+{
+   int i;
+
+   glClearColor(0.0, 0.0, 1.0, 0.0);
+   glClear(GL_COLOR_BUFFER_BIT);
+
+   i = prog.i++;
+   if (prog.i >= 3)
+      prog.i = 0;
+
+   glEnable(GL_SCISSOR_TEST);
+
+   {
+      glColor4d(1.0, 0.0, 0.0, 1.0);
+
+      glScissor(i, i, 10 - 2*i, 10 - 2*i);
+      drawQuad();
+   }
+
+   glDisable(GL_SCISSOR_TEST);
+
+   //glutSwapBuffers();
+   glFlush();
+}
+
+int main(int argc, char **argv)
+{
+   GLenum type;
+
+   glutInit(&argc, argv);
+
+   prog.width = 200;
+   prog.height = 200;
+
+   glutInitWindowPosition(100, 0);
+   glutInitWindowSize(prog.width, prog.height);
+
+   //type = GLUT_RGB | GLUT_DOUBLE;
+   type = GLUT_RGB | GLUT_SINGLE;
+   glutInitDisplayMode(type);
+
+   if (glutCreateWindow(*argv) == GL_FALSE) {
+      exit(1);
+   }
+
+   init();
+
+   glutReshapeFunc(reshape);
+   glutKeyboardFunc(key);
+   glutDisplayFunc(draw);
+   glutMainLoop();
+   return 0;
+}
diff --git a/progs/tests/scissor.c b/progs/tests/scissor.c
new file mode 100644
index 0000000..2dfd217
--- /dev/null
+++ b/progs/tests/scissor.c
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc.
+ * Copyright (c) 2009 VMware, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the name of
+ * Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Silicon Graphics.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF
+ * ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <GL/glut.h>
+
+struct program
+{
+   unsigned width;
+   unsigned height;
+   unsigned quads;
+};
+
+struct program prog;
+
+static void init(void)
+{
+   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER));
+   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION));
+   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR));
+   fflush(stderr);
+}
+
+static void reshape(int width, int height)
+{
+
+   glViewport(0, 0, (GLint)width, (GLint)height);
+
+   prog.width = width;
+   prog.height = height;
+
+   glMatrixMode(GL_PROJECTION);
+   glLoadIdentity();
+   glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
+   glMatrixMode(GL_MODELVIEW);
+}
+
+static void key(unsigned char key, int x, int y)
+{
+
+   switch (key) {
+   case 27:
+      exit(1);
+   default:
+      prog.quads = !prog.quads;
+      glutPostRedisplay();
+      return;
+   }
+}
+
+static void drawQuad(void)
+{
+
+   if (prog.quads) {
+      glBegin(GL_QUADS);
+      glVertex2d(-1.0, -1.0);
+      glVertex2d( 1.0, -1.0);
+      glVertex2d( 1.0,  1.0);
+      glVertex2d(-1.0,  1.0);
+      glEnd();
+   } else {
+      glClear(GL_COLOR_BUFFER_BIT);
+   }
+}
+
+static void draw(void)
+{
+   glClearColor(0.0, 0.0, 1.0, 0.0);
+   glClear(GL_COLOR_BUFFER_BIT);
+
+   printf("drawing with %s\n", prog.quads ? "quads" : "clears");
+
+   glEnable(GL_SCISSOR_TEST);
+
+   {
+      glClearColor(1.0, 0.0, 0.0, 1.0);
+      glColor4d(1.0, 0.0, 0.0, 1.0);
+
+      glScissor(1, 1, 10, 10);
+      drawQuad();
+      glScissor(1, prog.height -  11, 10, 10);
+      drawQuad();
+      glScissor(prog.width - 11, prog.height -  11, 10, 10);
+      drawQuad();
+   }
+
+   {
+      glClearColor(0.0, 1.0, 0.0, 1.0);
+      glColor4d(0.0, 1.0, 0.0, 1.0);
+
+      glScissor(12, 1, 10, 10);
+      drawQuad();
+      glScissor(12, prog.height -  11, 10, 10);
+      drawQuad();
+      glScissor(prog.width - 22, prog.height -  11, 10, 10);
+      drawQuad();
+   }
+
+   {
+      glClearColor(1.0, 1.0, 0.0, 1.0);
+      glColor4d(1.0, 1.0, 0.0, 1.0);
+
+      glScissor(1, 12, 10, 10);
+      drawQuad();
+      glScissor(1, prog.height -  22, 10, 10);
+      drawQuad();
+      glScissor(prog.width - 11, prog.height -  22, 10, 10);
+      drawQuad();
+   }
+
+   glDisable(GL_SCISSOR_TEST);
+
+   //glutSwapBuffers();
+   glFlush();
+}
+
+int main(int argc, char **argv)
+{
+   GLenum type;
+
+   glutInit(&argc, argv);
+
+   prog.width = 200;
+   prog.height = 200;
+
+   glutInitWindowPosition(100, 0);
+   glutInitWindowSize(prog.width, prog.height);
+
+   //type = GLUT_RGB | GLUT_DOUBLE;
+   type = GLUT_RGB | GLUT_SINGLE;
+   glutInitDisplayMode(type);
+
+   if (glutCreateWindow(*argv) == GL_FALSE) {
+      exit(1);
+   }
+
+   init();
+
+   glutReshapeFunc(reshape);
+   glutKeyboardFunc(key);
+   glutDisplayFunc(draw);
+   glutMainLoop();
+   return 0;
+}



More information about the mesa-commit mailing list