summaryrefslogtreecommitdiff
path: root/tests/general/blendminmax.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-06-14 14:35:02 -0700
committerEric Anholt <eric@anholt.net>2010-06-15 02:54:30 -0700
commita038fd3e52492cbe5ff06bcbe3086cb679a42748 (patch)
tree57b48a80691a3e6fabebb6b9bf337f20f0e5544e /tests/general/blendminmax.c
parent62c540b69f8a6bb921b31f825f660759fd86d37c (diff)
blendminmax: Convert to the framework and include as a piglit test.
Diffstat (limited to 'tests/general/blendminmax.c')
-rw-r--r--tests/general/blendminmax.c151
1 files changed, 36 insertions, 115 deletions
diff --git a/tests/general/blendminmax.c b/tests/general/blendminmax.c
index f15358ae4..2b2c6b829 100644
--- a/tests/general/blendminmax.c
+++ b/tests/general/blendminmax.c
@@ -32,37 +32,35 @@
* \author Ian Romanick <idr@us.ibm.com>
*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
+#include "piglit-util.h"
-static int Width = 400;
-static int Height = 200;
+int piglit_width = 400;
+int piglit_height = 200;
+int piglit_window_mode = GLUT_RGB | GLUT_DOUBLE;
static const GLfloat Near = 5.0, Far = 25.0;
-
-static void Display(void)
+enum piglit_result
+piglit_display(void)
{
+ GLboolean pass = GL_TRUE;
+ int w = (piglit_width - 50) / 4;
+ int h = piglit_height - 20;
+ int start_x = 10;
+ int next_x = 10 + w;
+ float expected[4] = {0.5, 0.5, 0.5, 0.5};
+
+ piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
+
glClearColor(0.2, 0.2, 0.8, 0);
glClear(GL_COLOR_BUFFER_BIT);
- glPushMatrix();
-
/* This is the "reference" square.
*/
- glTranslatef(-4.5, 0, 0);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_ONE, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.5, 0.5, 0.5);
- glVertex2f(-1, -1);
- glVertex2f(1, -1);
- glVertex2f(1, 1);
- glVertex2f(-1, 1);
- glEnd();
-
+ piglit_draw_rect(start_x + next_x * 0, 10, w, h);
/* GL_MIN and GL_MAX are supposed to ignore the blend function
* setting. To test that, we set the blend function to
@@ -79,136 +77,59 @@ static void Display(void)
* http://developer.apple.com/opengl/extensions.html
*/
- glTranslatef(3.0, 0, 0);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_ONE, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.5, 0.5, 0.5);
- glVertex2f(-1, -1);
- glVertex2f( 1, -1);
- glVertex2f( 1, 1);
- glVertex2f(-1, 1);
- glEnd();
+ piglit_draw_rect(start_x + next_x * 1, 10, w, h);
glBlendEquation(GL_MAX);
glBlendFunc(GL_ZERO, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.2, 0.2, 0.2);
- glVertex2f(-1, -1);
- glVertex2f( 1, -1);
- glVertex2f( 1, 1);
- glVertex2f(-1, 1);
- glEnd();
-
+ piglit_draw_rect(start_x + next_x * 1, 10, w, h);
- glTranslatef(3.0, 0, 0);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_ONE, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.5, 0.5, 0.5);
- glVertex2f(-1, -1);
- glVertex2f( 1, -1);
- glVertex2f( 1, 1);
- glVertex2f(-1, 1);
- glEnd();
+ piglit_draw_rect(start_x + next_x * 2, 10, w, h);
glBlendEquation(GL_MIN);
glBlendFunc(GL_ZERO, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.8, 0.8, 0.8);
- glVertex2f(-1, -1);
- glVertex2f( 1, -1);
- glVertex2f( 1, 1);
- glVertex2f(-1, 1);
- glEnd();
+ piglit_draw_rect(start_x + next_x * 2, 10, w, h);
-
- glTranslatef(3.0, 0, 0);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_ONE, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.8, 0.8, 0.8);
- glVertex2f(-1, -1);
- glVertex2f( 1, -1);
- glVertex2f( 1, 1);
- glVertex2f(-1, 1);
- glEnd();
+ piglit_draw_rect(start_x + next_x * 3, 10, w, h);
glBlendEquation(GL_MIN);
glBlendFunc(GL_ZERO, GL_ZERO);
- glBegin(GL_QUADS);
glColor3f(0.5, 0.5, 0.5);
- glVertex2f(-1, -1);
- glVertex2f( 1, -1);
- glVertex2f( 1, 1);
- glVertex2f(-1, 1);
- glEnd();
+ piglit_draw_rect(start_x + next_x * 3, 10, w, h);
- glPopMatrix();
+ pass = piglit_probe_pixel_rgb(15 + next_x * 0, piglit_height / 2,
+ expected) && pass;
+ pass = piglit_probe_pixel_rgb(15 + next_x * 1, piglit_height / 2,
+ expected) && pass;
+ pass = piglit_probe_pixel_rgb(15 + next_x * 2, piglit_height / 2,
+ expected) && pass;
+ pass = piglit_probe_pixel_rgb(15 + next_x * 3, piglit_height / 2,
+ expected) && pass;
glutSwapBuffers();
-}
-
-
-static void Reshape(int width, int height)
-{
- GLfloat ar = (float) width / (float) height;
- Width = width;
- Height = height;
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, Near, Far);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -15.0);
-}
-
-static void Key(unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
+ return pass ? PIGLIT_SUCCESS : PIGLIT_FAILURE;
}
-
-static void Init(void)
+void
+piglit_init(int argc, char **argv)
{
- const char * const ver_string = (const char *)
- glGetString(GL_VERSION);
-
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", ver_string);
-
- if (!glutExtensionSupported("GL_ARB_imaging") && !glutExtensionSupported("GL_EXT_blend_minmax")) {
+ if (!GLEW_ARB_imaging && !GLEW_EXT_blend_minmax) {
printf("Sorry, this program requires either GL_ARB_imaging or "
"GL_EXT_blend_minmax.\n");
- exit(1);
+ piglit_report_result(PIGLIT_SKIP);
}
- printf("\nAll 4 squares should be the same color.\n");
+ printf("\nAll 4 quads should be the same color.\n");
glEnable(GL_BLEND);
}
-
-
-int main(int argc, char *argv[])
-{
- glutInit(&argc, argv);
- glutInitWindowPosition(0, 0);
- glutInitWindowSize(Width, Height);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
- glutCreateWindow("GL_EXT_blend_minmax test");
- glewInit();
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutDisplayFunc(Display);
- Init();
- glutMainLoop();
- return 0;
-}