diff options
author | Eric Anholt <eric@anholt.net> | 2010-06-14 14:35:02 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-06-15 02:54:30 -0700 |
commit | a038fd3e52492cbe5ff06bcbe3086cb679a42748 (patch) | |
tree | 57b48a80691a3e6fabebb6b9bf337f20f0e5544e /tests/general/blendminmax.c | |
parent | 62c540b69f8a6bb921b31f825f660759fd86d37c (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.c | 151 |
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; -} |