diff options
Diffstat (limited to 'progs/tests')
| -rw-r--r-- | progs/tests/Makefile | 7 | ||||
| -rw-r--r-- | progs/tests/arraytexture.c | 19 | ||||
| -rw-r--r-- | progs/tests/copypixrate.c | 2 | ||||
| -rw-r--r-- | progs/tests/crossbar.c | 2 | ||||
| -rw-r--r-- | progs/tests/getteximage.c | 20 | ||||
| -rw-r--r-- | progs/tests/invert.c | 2 | ||||
| -rw-r--r-- | progs/tests/minmag.c | 1 | ||||
| -rw-r--r-- | progs/tests/mipmap_limits.c | 237 | ||||
| -rw-r--r-- | progs/tests/packedpixels.c | 77 | ||||
| -rw-r--r-- | progs/tests/prog_parameter.c | 20 | ||||
| -rw-r--r-- | progs/tests/stencil_twoside.c | 6 | ||||
| -rw-r--r-- | progs/tests/texcmp.c | 17 | ||||
| -rw-r--r-- | progs/tests/texcomp_image.h | 2 | ||||
| -rw-r--r-- | progs/tests/texcompsub.c | 8 | ||||
| -rw-r--r-- | progs/tests/vao-01.c | 8 | ||||
| -rw-r--r-- | progs/tests/vao-02.c | 8 | ||||
| -rw-r--r-- | progs/tests/zreaddraw.c | 84 | 
17 files changed, 332 insertions, 188 deletions
| diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 8c310df095..197e14d5b0 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -25,6 +25,7 @@ SOURCES = \  	arbvptorus.c \  	arbvpwarpmesh.c \  	arraytexture.c \ +	auxbuffer.c \  	blendminmax.c \  	blendsquare.c \  	blendxor.c \ @@ -41,6 +42,7 @@ SOURCES = \  	cva.c \  	drawbuffers.c \  	exactrast.c \ +	ext422square.c \  	floattex.c \  	fbotest1.c \  	fbotest2.c \ @@ -66,6 +68,8 @@ SOURCES = \  	mipmap_limits.c \  	mipmap_view.c \  	multipal.c \ +	multitexarray.c \ +	multiwindow.c \  	no_s3tc.c \  	packedpixels.c \  	pbo.c \ @@ -88,10 +92,12 @@ SOURCES = \  	subtex \  	subtexrate.c \  	tex1d.c \ +	texcmp.c \  	texcompress2.c \  	texcompsub.c \  	texdown \  	texfilt.c \ +	texgenmix.c \  	texline.c \  	texobj.c \  	texobjshare.c \ @@ -101,6 +107,7 @@ SOURCES = \  	vao-01.c \  	vao-02.c \  	vparray.c \ +	vpeval.c \  	vptest1.c \  	vptest2.c \  	vptest3.c \ diff --git a/progs/tests/arraytexture.c b/progs/tests/arraytexture.c index 6c0484df0d..28252a354b 100644 --- a/progs/tests/arraytexture.c +++ b/progs/tests/arraytexture.c @@ -77,10 +77,6 @@ static GLfloat texZ = 0.0;  static GLfloat texZ_dir = 0.01;  static GLint num_layers; -static PFNGLBINDPROGRAMARBPROC bind_program; -static PFNGLPROGRAMSTRINGARBPROC program_string; -static PFNGLGENPROGRAMSARBPROC gen_programs; -  static void  PrintString(const char *s) @@ -125,13 +121,13 @@ static void Display(void)     glMatrixMode(GL_MODELVIEW);     glLoadIdentity(); -   (*bind_program)(GL_FRAGMENT_PROGRAM_ARB, 0); +   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, 0);     glColor3f(1,1,1);     glRasterPos3f(-0.9, -0.9, 0.0);     sprintf(str, "Texture Z coordinate = %4.1f", texZ);     PrintString(str); -   (*bind_program)(GL_FRAGMENT_PROGRAM_ARB, 1); +   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, 1);     GL_CHECK_ERROR();     glEnable(GL_TEXTURE_2D_ARRAY_EXT);     GL_CHECK_ERROR(); @@ -159,7 +155,7 @@ static void Display(void)     glDisable(GL_TEXTURE_2D_ARRAY_EXT);     GL_CHECK_ERROR(); -   (*bind_program)(GL_FRAGMENT_PROGRAM_ARB, 0); +   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, 0);     GL_CHECK_ERROR();     glutSwapBuffers(); @@ -226,8 +222,8 @@ compile_fragment_program(GLuint id, const char *prog)     int err;     err = glGetError(); -   (*bind_program)(GL_FRAGMENT_PROGRAM_ARB, id); -   (*program_string)(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, +   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, id); +   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,                       strlen(prog), (const GLubyte *) prog);     glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos); @@ -264,11 +260,6 @@ static void Init(void)     require_extension("GL_MESA_texture_array");     require_extension("GL_SGIS_generate_mipmap"); -   bind_program = glutGetProcAddress("glBindProgramARB"); -   program_string = glutGetProcAddress("glProgramStringARB"); -   gen_programs = glutGetProcAddress("glGenProgramsARB"); - -     for (num_layers = 0; textures[num_layers] != NULL; num_layers++)        /* empty */ ; diff --git a/progs/tests/copypixrate.c b/progs/tests/copypixrate.c index aa4acfc18b..f63d59f3ce 100644 --- a/progs/tests/copypixrate.c +++ b/progs/tests/copypixrate.c @@ -69,7 +69,7 @@ DrawTestImage(void)  static int  Rand(int max)  { -   return ((int) random()) % max; +   return ((int) rand()) % max;  } diff --git a/progs/tests/crossbar.c b/progs/tests/crossbar.c index 3dd21372f9..bd8e05aee1 100644 --- a/progs/tests/crossbar.c +++ b/progs/tests/crossbar.c @@ -145,7 +145,7 @@ static void Init( void )  {     const char * const ver_string = (const char * const)         glGetString( GL_VERSION ); -   float ver = strtof( ver_string, NULL ); +   float ver = strtod( ver_string, NULL );     GLint tex_units;     GLint temp[ 256 ]; diff --git a/progs/tests/getteximage.c b/progs/tests/getteximage.c index 71f29b4ac8..e4053b8de1 100644 --- a/progs/tests/getteximage.c +++ b/progs/tests/getteximage.c @@ -58,6 +58,26 @@ TestGetTexImage(GLboolean npot)              abort();           }        } + +      /* get as BGRA */ +      glGetTexImage(GL_TEXTURE_2D, level, GL_BGRA, GL_UNSIGNED_BYTE, data2); + +      /* compare */ +      { +         const GLubyte *rgba = (GLubyte *) data; +         const GLubyte *bgra = (GLubyte *) data2; +         for (i = 0; i < w * h; i += 4) { +            if (rgba[i+0] != bgra[i+2] || +                rgba[i+1] != bgra[i+1] || +                rgba[i+2] != bgra[i+0] || +                rgba[i+3] != bgra[i+3]) { +               printf("glTexImage + glGetTexImage(GL_BGRA) failure!\n"); +               printf("Expected value %d, found %d\n", data[i], data2[i]); +               abort(); +            } +         } +      } +     }     printf("Passed\n"); diff --git a/progs/tests/invert.c b/progs/tests/invert.c index 63099fbd22..3bc97a460b 100644 --- a/progs/tests/invert.c +++ b/progs/tests/invert.c @@ -128,7 +128,7 @@ static void Init( void )  {     const char * const ver_string = (const char * const)         glGetString( GL_VERSION ); -   const float ver = strtof( ver_string, NULL ); +   const float ver = strtod( ver_string, NULL );     printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/tests/minmag.c b/progs/tests/minmag.c index 03019f94fa..179be51120 100644 --- a/progs/tests/minmag.c +++ b/progs/tests/minmag.c @@ -16,7 +16,6 @@  #include <stdio.h>  #include <stdlib.h>  #include <string.h> -#include <unistd.h>  #include <GL/glew.h>  #include <GL/glut.h> diff --git a/progs/tests/mipmap_limits.c b/progs/tests/mipmap_limits.c index 5b899cd155..9418e90981 100644 --- a/progs/tests/mipmap_limits.c +++ b/progs/tests/mipmap_limits.c @@ -77,15 +77,16 @@ InitValues(void)  } -static void MakeImage(int level, int width, int height, const GLubyte color[4]) +static void +MakeImage(int level, int width, int height, const GLubyte color[4])  {     const int makeStripes = 0; -   GLubyte img[512*512*3]; +   GLubyte img[512 * 512 * 3];     int i, j;     for (i = 0; i < height; i++) {        for (j = 0; j < width; j++) {           int k = (i * width + j) * 3; -         int p = (i/8) & makeStripes; +         int p = (i / 8) & makeStripes;           if (p == 0) {              img[k + 0] = color[0];              img[k + 1] = color[1]; @@ -104,7 +105,8 @@ static void MakeImage(int level, int width, int height, const GLubyte color[4])  } -static void makeImages(int image) +static void +makeImages(int image)  {  #define WIDTH 512  #define HEIGHT 512 @@ -121,19 +123,20 @@ static void makeImages(int image)        if (width != WIDTH || height != HEIGHT) {           GLubyte *newImage = malloc(WIDTH * HEIGHT * 4);           gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image, -               WIDTH, HEIGHT, GL_UNSIGNED_BYTE, newImage); +                       WIDTH, HEIGHT, GL_UNSIGNED_BYTE, newImage);           free(image);           image = newImage;        }        printf("Using GL_SGIS_generate_mipmap\n");        glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);        glTexImage2D(GL_TEXTURE_2D, 0, format, WIDTH, HEIGHT, 0, -            format, GL_UNSIGNED_BYTE, image); +                   format, GL_UNSIGNED_BYTE, image);        glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_FALSE);        free(image);        /* make sure mipmap was really generated correctly */ -      width = WIDTH; height = HEIGHT; +      width = WIDTH; +      height = HEIGHT;        for (i = 0; i < 10; i++) {           GLint w, h;           glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w); @@ -142,18 +145,19 @@ static void makeImages(int image)           width /= 2;           height /= 2;        } -   } else { +   } +   else {        static const GLubyte colors[10][3] = { -         {128, 128, 128 }, -         { 0, 255, 255 }, -         { 255, 255, 0 }, -         { 255, 0, 255 }, -         { 255, 0, 0 }, -         { 0, 255, 0 }, -         { 0, 0, 255 }, -         { 0, 255, 255 }, -         { 255, 255, 0 }, -         { 255, 255, 255 } +         {128, 128, 128}, +         {0, 255, 255}, +         {255, 255, 0}, +         {255, 0, 255}, +         {255, 0, 0}, +         {0, 255, 0}, +         {0, 0, 255}, +         {0, 255, 255}, +         {255, 255, 0}, +         {255, 255, 255}        };        int i, sz = 512; @@ -165,7 +169,8 @@ static void makeImages(int image)     }  } -static void myinit(void) +static void +myinit(void)  {     InitValues(); @@ -191,14 +196,16 @@ static void myinit(void)     glEnable(GL_TEXTURE_2D);  } -static void display(void) +static void +display(void)  {     GLfloat tcm = 1.0;     glBindTexture(GL_TEXTURE_2D, texCurrent); -   printf("BASE_LEVEL=%d  MAX_LEVEL=%d  MIN_LOD=%.2g  MAX_LOD=%.2g  Bias=%.2g  Filter=%s\n", -         BaseLevel, MaxLevel, MinLod, MaxLod, LodBias, -         NearestFilter ? "NEAREST" : "LINEAR"); +   printf +      ("BASE_LEVEL=%d  MAX_LEVEL=%d  MIN_LOD=%.2g  MAX_LOD=%.2g  Bias=%.2g  Filter=%s\n", +       BaseLevel, MaxLevel, MinLod, MaxLod, LodBias, +       NearestFilter ? "NEAREST" : "LINEAR");     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, BaseLevel);     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, MaxLevel); @@ -208,103 +215,44 @@ static void display(void)     if (NearestFilter) {        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, -            GL_NEAREST_MIPMAP_NEAREST); +                      GL_NEAREST_MIPMAP_NEAREST);     }     else {        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, -            GL_LINEAR_MIPMAP_LINEAR); +                      GL_LINEAR_MIPMAP_LINEAR);     }     glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, LodBias);     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     glBegin(GL_QUADS); -   glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); -   glTexCoord2f(0.0, tcm); glVertex3f(-2.0, 1.0, 0.0); -   glTexCoord2f(tcm * 3000.0, tcm); glVertex3f(3000.0, 1.0, -6000.0); -   glTexCoord2f(tcm * 3000.0, 0.0); glVertex3f(3000.0, -1.0, -6000.0); +   glTexCoord2f(0.0, 0.0); +   glVertex3f(-2.0, -1.0, 0.0); +   glTexCoord2f(0.0, tcm); +   glVertex3f(-2.0, 1.0, 0.0); +   glTexCoord2f(tcm * 3000.0, tcm); +   glVertex3f(3000.0, 1.0, -6000.0); +   glTexCoord2f(tcm * 3000.0, 0.0); +   glVertex3f(3000.0, -1.0, -6000.0);     glEnd();     glFlush();  } -static void myReshape(int w, int h) +static void +myReshape(int w, int h)  {     glViewport(0, 0, w, h);     glMatrixMode(GL_PROJECTION);     glLoadIdentity(); -   gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30000.0); +   gluPerspective(60.0, 1.0 * (GLfloat) w / (GLfloat) h, 1.0, 30000.0);     glMatrixMode(GL_MODELVIEW);     glLoadIdentity();  } -static void -key(unsigned char k, int x, int y) -{ -  (void) x; -  (void) y; -  switch (k) { -  case 'b': -     BaseLevel--; -     if (BaseLevel < 0) -        BaseLevel = 0; -     break; -  case 'B': -     BaseLevel++; -     if (BaseLevel > 10) -        BaseLevel = 10; -     break; -  case 'm': -     MaxLevel--; -     if (MaxLevel < 0) -        MaxLevel = 0; -     break; -  case 'M': -     MaxLevel++; -     if (MaxLevel > 10) -        MaxLevel = 10; -     break; -  case 'l': -     LodBias -= 0.25; -     break; -  case 'L': -     LodBias += 0.25; -     break; -  case 'n': -     MinLod -= 0.25; -     break; -  case 'N': -     MinLod += 0.25; -     break; -  case 'x': -     MaxLod -= 0.25; -     break; -  case 'X': -     MaxLod += 0.25; -     break; -  case 'f': -     NearestFilter = !NearestFilter; -     break; -  case 't': -     if (texCurrent == texColor) -        texCurrent = texImage; -     else -        texCurrent = texColor; -     break; -  case ' ': -     InitValues(); -     break; -  case 27:  /* Escape */ -    exit(0); -    break; -  default: -    return; -  } -  glutPostRedisplay(); -} - -static void usage(void) +static void +usage(void)  {     printf("usage:\n");     printf("  b/B    decrease/increase GL_TEXTURE_BASE_LEVEL\n"); @@ -317,19 +265,88 @@ static void usage(void)     printf("  SPACE  reset values\n");  } +static void +key(unsigned char k, int x, int y) +{ +   (void) x; +   (void) y; +   switch (k) { +   case 'b': +      BaseLevel--; +      if (BaseLevel < 0) +         BaseLevel = 0; +      break; +   case 'B': +      BaseLevel++; +      if (BaseLevel > 10) +         BaseLevel = 10; +      break; +   case 'm': +      MaxLevel--; +      if (MaxLevel < 0) +         MaxLevel = 0; +      break; +   case 'M': +      MaxLevel++; +      if (MaxLevel > 10) +         MaxLevel = 10; +      break; +   case 'l': +      LodBias -= 0.25; +      break; +   case 'L': +      LodBias += 0.25; +      break; +   case 'n': +      MinLod -= 0.25; +      break; +   case 'N': +      MinLod += 0.25; +      break; +   case 'x': +      MaxLod -= 0.25; +      break; +   case 'X': +      MaxLod += 0.25; +      break; +   case 'f': +      NearestFilter = !NearestFilter; +      break; +   case 't': +      if (texCurrent == texColor) +         texCurrent = texImage; +      else +         texCurrent = texColor; +      break; +   case ' ': +      InitValues(); +      /* fall-through */ +   case 'u': +      usage(); +      break; +   case 27:                    /* Escape */ +      exit(0); +      break; +   default: +      return; +   } +   glutPostRedisplay(); +} + -int main(int argc, char** argv) +int +main(int argc, char **argv)  { -    glutInit(&argc, argv); -    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); -    glutInitWindowSize (600, 600); -    glutCreateWindow (argv[0]); -    glewInit(); -    myinit(); -    glutReshapeFunc (myReshape); -    glutDisplayFunc(display); -    glutKeyboardFunc(key); -    usage(); -    glutMainLoop(); -    return 0;             /* ANSI C requires main to return int. */ +   glutInit(&argc, argv); +   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); +   glutInitWindowSize(600, 600); +   glutCreateWindow(argv[0]); +   glewInit(); +   myinit(); +   glutReshapeFunc(myReshape); +   glutDisplayFunc(display); +   glutKeyboardFunc(key); +   usage(); +   glutMainLoop(); +   return 0;                    /* ANSI C requires main to return int. */  } diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c index 1703b271cb..a08e7c2b92 100644 --- a/progs/tests/packedpixels.c +++ b/progs/tests/packedpixels.c @@ -17,53 +17,53 @@ struct pixel_format {     GLenum format;     GLenum type;     GLint bytes; -   GLuint redTexel, greenTexel; +   GLuint redTexel, greenTexel; /* with approx 51% alpha, when applicable */  };  static const struct pixel_format Formats[] = {     { "GL_RGBA/GL_UNSIGNED_INT_8_8_8_8", -     GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, 4, 0xff000000, 0x00ff0000 }, +     GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, 4, 0xff000080, 0x00ff0080 },     { "GL_RGBA/GL_UNSIGNED_INT_8_8_8_8_REV", -     GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x000000ff, 0x0000ff00 }, +     GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x800000ff, 0x8000ff00 },     { "GL_RGBA/GL_UNSIGNED_INT_10_10_10_2", -     GL_RGBA, GL_UNSIGNED_INT_10_10_10_2, 4, 0xffc00000, 0x3ff000 }, +     GL_RGBA, GL_UNSIGNED_INT_10_10_10_2, 4, 0xffc00002, 0x3ff002 },     { "GL_RGBA/GL_UNSIGNED_INT_2_10_10_10_REV", -     GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 4, 0x3ff, 0xffc00 }, +     GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 4, 0xc00003ff, 0xc00ffc00 },     { "GL_RGBA/GL_UNSIGNED_SHORT_4_4_4_4", -     GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0xf000, 0x0f00 }, +     GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0xf008, 0x0f08 },     { "GL_RGBA/GL_UNSIGNED_SHORT_4_4_4_4_REV", -     GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x000f, 0x00f0 }, +     GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x800f, 0x80f0 },     { "GL_RGBA/GL_UNSIGNED_SHORT_5_5_5_1", -     GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf800, 0x7c0 }, +     GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf801, 0x7c1 },     { "GL_RGBA/GL_UNSIGNED_SHORT_1_5_5_5_REV", -     GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x1f, 0x3e0 }, +     GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x801f, 0x83e0 },     { "GL_BGRA/GL_UNSIGNED_INT_8_8_8_8", -     GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, 4, 0x0000ff00, 0x00ff0000 }, +     GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, 4, 0x0000ff80, 0x00ff0080 },     { "GL_BGRA/GL_UNSIGNED_INT_8_8_8_8_REV", -     GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x00ff0000, 0x0000ff00 }, +     GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x80ff0000, 0x8000ff00 },     { "GL_BGRA/GL_UNSIGNED_SHORT_4_4_4_4", -     GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x00f0, 0x0f00 }, +     GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x00f8, 0x0f08 },     { "GL_BGRA/GL_UNSIGNED_SHORT_4_4_4_4_REV", -     GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x0f00, 0x00f0 }, +     GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x8f00, 0x80f0 },     { "GL_BGRA/GL_UNSIGNED_SHORT_5_5_5_1", -     GL_BGRA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x3e, 0x7c0 }, +     GL_BGRA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x3f, 0x7c1 },     { "GL_BGRA/GL_UNSIGNED_SHORT_1_5_5_5_REV", -     GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x7c00, 0x3e0 }, +     GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0xfc00, 0x83e0 },     { "GL_ABGR_EXT/GL_UNSIGNED_INT_8_8_8_8", -     GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, 4, 0x000000ff, 0x0000ff00 }, +     GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, 4, 0x800000ff, 0x8000ff00 },     { "GL_ABGR_EXT/GL_UNSIGNED_INT_8_8_8_8_REV", -     GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0xff000000, 0x00ff0000 }, +     GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0xff000080, 0x00ff0080 },     { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_4_4_4_4", -     GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x000f, 0x00f0 }, +     GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x800f, 0x80f0 },     { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_4_4_4_4_REV", -     GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0xf000, 0x0f00 }, +     GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0xf008, 0x0f08 },     { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_5_5_5_1", -     GL_ABGR_EXT, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x1, 0x3e }, +     GL_ABGR_EXT, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf801, 0xf83e },     { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_1_5_5_5_REV", -     GL_ABGR_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x8000, 0x7c00 }, +     GL_ABGR_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x800f, 0x7c0f },     { "GL_RGB/GL_UNSIGNED_SHORT_5_6_5",       GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 2, 0xf800, 0x7e0 }, @@ -108,7 +108,7 @@ static const struct name_format IntFormats[] = {  static GLuint CurFormat = 0;  static GLboolean Test3D = GL_FALSE; - +static GLboolean Blend = GL_FALSE;  static void @@ -191,6 +191,19 @@ MakeTexture(const struct pixel_format *format, GLenum intFormat, GLboolean swap)                     format->format, format->type, texBuffer);     } +   if (0) { +      GLint r, g, b, a, l, i; +      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r); +      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &g); +      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &b); +      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &a); +      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &l); +      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &i); +      printf("IntFormat: 0x%x  R %d  G %d  B %d  A %d  L %d  I %d\n", +             intFormat, r, g, b, a, l, i); +      glGetError(); +   }                               +     if (glGetError()) {        printf("GL Error for %s\n", format->name);        memset(texBuffer, 255, 1000); @@ -221,6 +234,10 @@ Draw(void)             glEnable(GL_TEXTURE_3D);          else             glEnable(GL_TEXTURE_2D); + +        if (Blend) +           glEnable(GL_BLEND); +          glBegin(GL_POLYGON);          glTexCoord3f(0, 0, 0.5);  glVertex2f(0, 0);          glTexCoord3f(1, 0, 0.5);  glVertex2f(w, 0); @@ -232,6 +249,9 @@ Draw(void)             glDisable(GL_TEXTURE_3D);          else             glDisable(GL_TEXTURE_2D); + +        glDisable(GL_BLEND); +          glColor3f(0, 0, 0);          glRasterPos2i(8, 6);          PrintString(Formats[i].name); @@ -266,6 +286,15 @@ Draw(void)        PrintString("Target [2/3]: GL_TEXTURE_2D");     glPopMatrix(); +   glPushMatrix(); +   glTranslatef(2, (i + 3) * (h + 2), 0); +   glRasterPos2i(8, 6); +   if (Blend) +      PrintString("Blend: Yes"); +   else +      PrintString("Blend: No"); +   glPopMatrix(); +     glutSwapBuffers();  } @@ -288,6 +317,9 @@ Key(unsigned char key, int x, int y)     (void) x;     (void) y;     switch (key) { +      case 'b': +         Blend = !Blend; +         break;        case 'F':           if (CurFormat == 0)              CurFormat = NUM_INT_FORMATS - 1; @@ -323,6 +355,7 @@ Init(void)     glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);     glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); +   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);  } diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 6dd956c402..0241f3a249 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -116,7 +116,7 @@ static int set_parameter_batch( GLsizei count, GLfloat * param,     for ( i = 0 ; i < (4 * count) ; i++ ) { -      param[i] = (GLfloat) random() / (GLfloat) random(); +      param[i] = (GLfloat) rand() / (GLfloat) rand();     }     /* Try using the "classic" interface. @@ -153,7 +153,7 @@ static int set_parameter_batch( GLsizei count, GLfloat * param,     for ( i = 0 ; i < (4 * count) ; i++ ) { -      param[i] = (GLfloat) random() / (GLfloat) random(); +      param[i] = (GLfloat) rand() / (GLfloat) rand();     }     printf("Testing glProgram%sParameters4fvEXT (count = %u)...\n", name, count); @@ -203,20 +203,20 @@ static void Init( void )     } -   program_local_parameter4fv = glutGetProcAddress( "glProgramLocalParameter4fvARB" ); -   program_env_parameter4fv = glutGetProcAddress( "glProgramEnvParameter4fvARB" ); +   program_local_parameter4fv = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) glutGetProcAddress( "glProgramLocalParameter4fvARB" ); +   program_env_parameter4fv = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) glutGetProcAddress( "glProgramEnvParameter4fvARB" ); -   get_program_local_parameterfv = glutGetProcAddress( "glGetProgramLocalParameterfvARB" ); -   get_program_env_parameterfv = glutGetProcAddress( "glGetProgramEnvParameterfvARB" ); +   get_program_local_parameterfv = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) glutGetProcAddress( "glGetProgramLocalParameterfvARB" ); +   get_program_env_parameterfv = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) glutGetProcAddress( "glGetProgramEnvParameterfvARB" ); -   bind_program = glutGetProcAddress( "glBindProgramARB" ); -   get_program = glutGetProcAddress( "glGetProgramivARB" ); +   bind_program = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress( "glBindProgramARB" ); +   get_program = (PFNGLGETPROGRAMIVARBPROC) glutGetProcAddress( "glGetProgramivARB" );     if ( glutExtensionSupported("GL_EXT_gpu_program_parameters") ) {        printf("GL_EXT_gpu_program_parameters available, testing that path.\n"); -      program_local_parameters4fv = glutGetProcAddress( "glProgramLocalParameters4fvEXT" ); -      program_env_parameters4fv = glutGetProcAddress( "glProgramEnvParameters4fvEXT" ); +      program_local_parameters4fv = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) glutGetProcAddress( "glProgramLocalParameters4fvEXT" ); +      program_env_parameters4fv = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) glutGetProcAddress( "glProgramEnvParameters4fvEXT" );     }     else {        printf("GL_EXT_gpu_program_parameters not available.\n"); diff --git a/progs/tests/stencil_twoside.c b/progs/tests/stencil_twoside.c index 1e18ca6b5e..7d871e5877 100644 --- a/progs/tests/stencil_twoside.c +++ b/progs/tests/stencil_twoside.c @@ -274,9 +274,9 @@ static void Init( void )     if (atof( ver_string ) < 2.0) {        use20syntax = 0;     } -   stencil_func_separate = glutGetProcAddress( "glStencilFuncSeparate" ); -   stencil_func_separate_ati = glutGetProcAddress( "glStencilFuncSeparateATI" ); -   stencil_op_separate = glutGetProcAddress( "glStencilOpSeparate" ); +   stencil_func_separate = (PFNGLSTENCILFUNCSEPARATEPROC) glutGetProcAddress( "glStencilFuncSeparate" ); +   stencil_func_separate_ati = (PFNGLSTENCILFUNCSEPARATEATIPROC) glutGetProcAddress( "glStencilFuncSeparateATI" ); +   stencil_op_separate = (PFNGLSTENCILOPSEPARATEPROC) glutGetProcAddress( "glStencilOpSeparate" );     printf("\nAll 5 squares should be the same color.\n");  } diff --git a/progs/tests/texcmp.c b/progs/tests/texcmp.c index 45935e19a3..c5d352fdae 100644 --- a/progs/tests/texcmp.c +++ b/progs/tests/texcmp.c @@ -106,6 +106,8 @@ static void Display( void )     glRotatef(Rot, 0, 0, 1);     glEnable(GL_TEXTURE_2D); +   glEnable(GL_BLEND); +     glBegin(GL_POLYGON);     glTexCoord2f(0, 1);  glVertex2f(-1, -0.5);     glTexCoord2f(1, 1);  glVertex2f( 1, -0.5); @@ -115,7 +117,10 @@ static void Display( void )     glPopMatrix(); +   glDisable(GL_TEXTURE_2D); +     /* info */ +   glDisable(GL_BLEND);     glColor4f(1, 1, 1, 1);     glRasterPos3f(-1.2, -0.7, 0); @@ -176,6 +181,18 @@ static void ReInit( GLenum TC, TEXTURE *Tx )                                 GL_TEXTURE_INTERNAL_FORMAT, &v);        printf("Requested internal format = 0x%x, actual = 0x%x\n", TC, v); +      if (0) { +         GLint r, g, b, a, l, i; +         glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r); +         glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &g); +         glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &b); +         glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &a); +         glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &l); +         glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &i); +         printf("Compressed Bits per R: %d  G: %d  B: %d  A: %d  L: %d  I: %d\n", +                r, g, b, a, l, i); +      } +        /* okay, now cache the compressed texture */        Tx->TC = TC;        if (Tx->cData != NULL) { diff --git a/progs/tests/texcomp_image.h b/progs/tests/texcomp_image.h index e63a56774f..a3884d4d0d 100644 --- a/progs/tests/texcomp_image.h +++ b/progs/tests/texcomp_image.h @@ -1,4 +1,4 @@ -static int ImgSize = 131072; +#define ImgSize 131072  static unsigned char ImgData[131072] =  {     0x4d, 0xbc, 0x0b, 0xb4, 0xda, 0x0a, 0x78, 0xa8, 0x8d, 0xbc, 0x0c, 0xac, 0x8b, 0x7f, 0xeb, 0xf7, 0x8d, 0xbc, 0xeb, 0xab, 0xba, 0xb7, 0x82, 0xa2, 0x8d, 0xbc, 0x2b, 0xb4, 0xa2, 0xfd, 0xee, 0x2f, diff --git a/progs/tests/texcompsub.c b/progs/tests/texcompsub.c index 50106bf1e2..215f5711d9 100644 --- a/progs/tests/texcompsub.c +++ b/progs/tests/texcompsub.c @@ -35,6 +35,8 @@ LoadCompressedImage(void)     unsigned char ImgDataTemp[ImgSize / 4];     unsigned i;     const GLenum filter = GL_LINEAR; +   const int half = ImgSize / 2; +     glTexImage2D(Target, 0, CompFormat, ImgWidth, ImgHeight, 0,                  GL_RGB, GL_UNSIGNED_BYTE, NULL); @@ -42,11 +44,11 @@ LoadCompressedImage(void)     glCompressedTexSubImage2DARB(Target, 0,                                  0, 0, /* pos */                                  ImgWidth, ImgHeight / 2, -                                CompFormat, ImgSize / 2, ImgData + ImgSize / 2); +                                CompFormat, ImgSize / 2, ImgData /*+ ImgSize / 2*/);     /* top left */     for (i = 0; i < ImgHeight / 8; i++) { -      memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[i * 2 * ImgWidth], ImgWidth); +      memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[half + i * 2 * ImgWidth], ImgWidth);     }     glCompressedTexSubImage2DARB(Target, 0,                                  0, ImgHeight / 2, /* pos */ @@ -55,7 +57,7 @@ LoadCompressedImage(void)     /* top right */     for (i = 0; i < ImgHeight / 8; i++) { -      memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[i * 2 * ImgWidth + ImgWidth], ImgWidth); +      memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[half + i * 2 * ImgWidth + ImgWidth], ImgWidth);     }     glCompressedTexSubImage2DARB(Target, 0,                                  ImgWidth / 2, ImgHeight / 2, /* pos */ diff --git a/progs/tests/vao-01.c b/progs/tests/vao-01.c index 117fae8bd9..e4a89cb19d 100644 --- a/progs/tests/vao-01.c +++ b/progs/tests/vao-01.c @@ -124,10 +124,10 @@ static void Init( void )        exit(2);     } -   bind_vertex_array = glutGetProcAddress( "glBindVertexArrayAPPLE" ); -   gen_vertex_arrays = glutGetProcAddress( "glGenVertexArraysAPPLE" ); -   delete_vertex_arrays = glutGetProcAddress( "glDeleteVertexArraysAPPLE" ); -   is_vertex_array = glutGetProcAddress( "glIsVertexArrayAPPLE" ); +   bind_vertex_array = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glBindVertexArrayAPPLE" ); +   gen_vertex_arrays = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glGenVertexArraysAPPLE" ); +   delete_vertex_arrays = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glDeleteVertexArraysAPPLE" ); +   is_vertex_array = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glIsVertexArrayAPPLE" );     (*gen_vertex_arrays)( 1, & obj ); diff --git a/progs/tests/vao-02.c b/progs/tests/vao-02.c index 7764ed5106..9f7f5c2779 100644 --- a/progs/tests/vao-02.c +++ b/progs/tests/vao-02.c @@ -125,10 +125,10 @@ static void Init( void )        exit(2);     } -   bind_vertex_array = glutGetProcAddress( "glBindVertexArrayAPPLE" ); -   gen_vertex_arrays = glutGetProcAddress( "glGenVertexArraysAPPLE" ); -   delete_vertex_arrays = glutGetProcAddress( "glDeleteVertexArraysAPPLE" ); -   is_vertex_array = glutGetProcAddress( "glIsVertexArrayAPPLE" ); +   bind_vertex_array = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glBindVertexArrayAPPLE" ); +   gen_vertex_arrays = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glGenVertexArraysAPPLE" ); +   delete_vertex_arrays = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glDeleteVertexArraysAPPLE" ); +   is_vertex_array = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glIsVertexArrayAPPLE" );     (*gen_vertex_arrays)( 1, & obj ); diff --git a/progs/tests/zreaddraw.c b/progs/tests/zreaddraw.c index 8839e10836..7740695bb6 100644 --- a/progs/tests/zreaddraw.c +++ b/progs/tests/zreaddraw.c @@ -12,14 +12,17 @@  #include <GL/glut.h>  static GLint WinWidth = 500, WinHeight = 500; +static GLboolean Invert = GL_FALSE; +static GLboolean TestPacking = GL_FALSE; +static GLboolean TestList = GL_FALSE;  static void Display(void)  { -   GLfloat depth[100 * 100]; -   GLfloat depth2[400 * 400]; -   GLfloat min, max; -   int i; +   GLfloat depth[100 * 100 * 2]; +   GLfloat depth2[400 * 400]; /* *2 to test pixelstore stuff */ +   GLuint list; +   GLenum depthType = GL_FLOAT;     glClearColor(0.5, 0.5, 0.5, 1.0);     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -35,22 +38,65 @@ static void Display(void)     glLoadIdentity();     glutSolidSphere(1.0, 20, 10); +   if (TestPacking) { +      glPixelStorei(GL_PACK_ROW_LENGTH, 120); +      glPixelStorei(GL_PACK_SKIP_PIXELS, 5); +   } +     /* read the depth image */ -   glReadPixels(0, 0, 100, 100, GL_DEPTH_COMPONENT, GL_FLOAT, depth); -   min = max = depth[0]; -   for (i = 1; i < 100 * 100; i++) { -      if (depth[i] < min) -         min = depth[i]; -      if (depth[i] > max) -         max = depth[i]; +   glReadPixels(0, 0, 100, 100, GL_DEPTH_COMPONENT, depthType, depth); +   if (depthType == GL_FLOAT) { +      GLfloat min, max; +      int i; +      min = max = depth[0]; +      for (i = 1; i < 100 * 100; i++) { +         if (depth[i] < min) +            min = depth[i]; +         if (depth[i] > max) +            max = depth[i]; +      } +      printf("Depth value range: [%f, %f]\n", min, max); +   } + +   /* Draw the Z image as luminance above original rendering */ +   glWindowPos2i(0, 100); +   glDrawPixels(100, 100, GL_LUMINANCE, depthType, depth); + +   if (TestPacking) { +      glPixelStorei(GL_PACK_ROW_LENGTH, 0); +      glPixelStorei(GL_PACK_SKIP_PIXELS, 0); +      glPixelStorei(GL_UNPACK_ROW_LENGTH, 120); +      glPixelStorei(GL_UNPACK_SKIP_PIXELS, 5);     } -   printf("Depth value range: [%f, %f]\n", min, max);     /* draw depth image with scaling (into z buffer) */     glPixelZoom(4.0, 4.0);     glColor4f(1, 0, 0, 0);     glWindowPos2i(100, 0); -   glDrawPixels(100, 100, GL_DEPTH_COMPONENT, GL_FLOAT, depth); +   if (Invert) { +      glPixelTransferf(GL_DEPTH_SCALE, -1.0); +      glPixelTransferf(GL_DEPTH_BIAS, 1.0); +   } +   if (TestList) { +      list = glGenLists(1); +      glNewList(list, GL_COMPILE); +      glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth); +      glEndList(); +      glCallList(list); +      glDeleteLists(list, 1); +   } +   else { +      glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth); +   } +   if (Invert) { +      glPixelTransferf(GL_DEPTH_SCALE, 1.0); +      glPixelTransferf(GL_DEPTH_BIAS, 0.0); +   } + +   if (TestPacking) { +      glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); +      glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); +   }     glDisable(GL_DEPTH_TEST); @@ -58,6 +104,7 @@ static void Display(void)     glReadPixels(100, 0, 400, 400, GL_DEPTH_COMPONENT, GL_FLOAT, depth2);     /* draw as luminance */     glPixelZoom(1.0, 1.0); +   glWindowPos2i(100, 0);     glDrawPixels(400, 400, GL_LUMINANCE, GL_FLOAT, depth2);     glutSwapBuffers(); @@ -77,6 +124,17 @@ static void Key(unsigned char key, int x, int y)     (void) x;     (void) y;     switch (key) { +      case 'i': +         Invert = !Invert; +         break; +      case 'p': +         TestPacking = !TestPacking; +         printf("Test pixel pack/unpack: %d\n", TestPacking); +         break; +      case 'l': +         TestList = !TestList; +         printf("Test dlist: %d\n", TestList); +         break;        case 27:           exit(0);           break; | 
