From 6c6896bd25034fb4c457110f45fe73277a9ce463 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sun, 27 Sep 2009 18:02:02 -0600 Subject: progs/tests: disable texturing before printing text --- progs/tests/texcmp.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/texcmp.c b/progs/tests/texcmp.c index d1e829d1b7..743b1b09b4 100644 --- a/progs/tests/texcmp.c +++ b/progs/tests/texcmp.c @@ -115,6 +115,8 @@ static void Display( void ) glPopMatrix(); + glDisable(GL_TEXTURE_2D); + /* info */ glColor4f(1, 1, 1, 1); -- cgit v1.2.3 From c8de476189de4df8de5148354b2f99cbb6dfd54b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 25 Sep 2009 16:37:15 -0600 Subject: progs/tests: re-indent mipmap_limits.c --- progs/tests/mipmap_limits.c | 224 +++++++++++++++++++++++--------------------- 1 file changed, 119 insertions(+), 105 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/mipmap_limits.c b/progs/tests/mipmap_limits.c index 5b899cd155..b8e52ddd7b 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,32 +215,37 @@ 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(); } @@ -241,70 +253,71 @@ static void myReshape(int w, int h) 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(); + (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"); @@ -318,18 +331,19 @@ static void usage(void) } -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. */ } -- cgit v1.2.3 From 653ae04bea557085778c599c3b8f32a6f1479686 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 25 Sep 2009 16:38:14 -0600 Subject: progs/tests: print usage info upon SPACE/u --- progs/tests/mipmap_limits.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/mipmap_limits.c b/progs/tests/mipmap_limits.c index b8e52ddd7b..9418e90981 100644 --- a/progs/tests/mipmap_limits.c +++ b/progs/tests/mipmap_limits.c @@ -250,6 +250,21 @@ myReshape(int w, int h) glLoadIdentity(); } + +static void +usage(void) +{ + printf("usage:\n"); + printf(" b/B decrease/increase GL_TEXTURE_BASE_LEVEL\n"); + printf(" m/M decrease/increase GL_TEXTURE_MAX_LEVEL\n"); + printf(" n/N decrease/increase GL_TEXTURE_MIN_LOD\n"); + printf(" x/X decrease/increase GL_TEXTURE_MAX_LOD\n"); + printf(" l/L decrease/increase GL_TEXTURE_LOD_BIAS\n"); + printf(" f toggle nearest/linear filtering\n"); + printf(" t toggle texture color/image\n"); + printf(" SPACE reset values\n"); +} + static void key(unsigned char k, int x, int y) { @@ -305,6 +320,9 @@ key(unsigned char k, int x, int y) break; case ' ': InitValues(); + /* fall-through */ + case 'u': + usage(); break; case 27: /* Escape */ exit(0); @@ -316,21 +334,6 @@ key(unsigned char k, int x, int y) } -static void -usage(void) -{ - printf("usage:\n"); - printf(" b/B decrease/increase GL_TEXTURE_BASE_LEVEL\n"); - printf(" m/M decrease/increase GL_TEXTURE_MAX_LEVEL\n"); - printf(" n/N decrease/increase GL_TEXTURE_MIN_LOD\n"); - printf(" x/X decrease/increase GL_TEXTURE_MAX_LOD\n"); - printf(" l/L decrease/increase GL_TEXTURE_LOD_BIAS\n"); - printf(" f toggle nearest/linear filtering\n"); - printf(" t toggle texture color/image\n"); - printf(" SPACE reset values\n"); -} - - int main(int argc, char **argv) { -- cgit v1.2.3 From bb659f6e53095d4eeef85a3d586721306a0c3e80 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 1 Oct 2009 16:43:22 -0600 Subject: progs/tests: additional debug code --- progs/tests/packedpixels.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c index 1703b271cb..f4e5d0a795 100644 --- a/progs/tests/packedpixels.c +++ b/progs/tests/packedpixels.c @@ -191,6 +191,16 @@ MakeTexture(const struct pixel_format *format, GLenum intFormat, GLboolean swap) format->format, format->type, texBuffer); } + if (0) { + GLint r, g, b, a; + 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); + printf("sizes: %d %d %d %d\n", r, g, b, a); + glGetError(); + } + if (glGetError()) { printf("GL Error for %s\n", format->name); memset(texBuffer, 255, 1000); -- cgit v1.2.3 From 9c778a90ea24f25437b68bb67856c81add61e261 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 6 Oct 2009 16:02:47 -0600 Subject: progs/tests: fix MSVC build. --- progs/tests/copypixrate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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; } -- cgit v1.2.3 From 4b3cbecb3a87374a292a7e454cd959e8c1eac322 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 7 Oct 2009 07:54:31 -0600 Subject: progs/test: Fix MSVC build. --- progs/tests/random.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/random.c b/progs/tests/random.c index 4023674c05..604b4d4088 100644 --- a/progs/tests/random.c +++ b/progs/tests/random.c @@ -257,11 +257,11 @@ RandomPrimitive(void) Vcount++; for (i = 0; i < len; i++) { + int k = RandomInt(9); Vbuffer[Vcount].v[0] = RandomFloat(-3, 3); Vbuffer[Vcount].v[1] = RandomFloat(-3, 3); Vbuffer[Vcount].v[2] = RandomFloat(-3, 3); Vbuffer[Vcount].v[3] = RandomFloat(-3, 3); - int k = RandomInt(9); switch (k) { case 0: glVertex2fv(Vbuffer[Vcount].v); -- cgit v1.2.3 From f7455ad7af09b5ef31ccc454b79422a13c59af9a Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 8 Oct 2009 08:08:11 -0600 Subject: progs/tests: Fix MSVC build. --- progs/tests/minmag.c | 1 - 1 file changed, 1 deletion(-) (limited to 'progs/tests') 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 #include #include -#include #include #include -- cgit v1.2.3 From 76d2ec3a0a047a65ffca70f53848241a3225dad3 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 9 Oct 2009 07:24:04 -0600 Subject: progs/tests: Add tests to Makefile. --- progs/tests/Makefile | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 4d9b4e8388..2b93aa5464 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 \ @@ -40,6 +41,7 @@ SOURCES = \ cva.c \ drawbuffers.c \ exactrast.c \ + ext422square.c \ floattex.c \ fbotest1.c \ fbotest2.c \ @@ -65,6 +67,8 @@ SOURCES = \ mipmap_limits.c \ mipmap_view.c \ multipal.c \ + multitexarray.c \ + multiwindow.c \ no_s3tc.c \ packedpixels.c \ pbo.c \ @@ -87,10 +91,12 @@ SOURCES = \ subtex \ subtexrate.c \ tex1d.c \ + texcmp.c \ texcompress2.c \ texcompsub.c \ texdown \ texfilt.c \ + texgenmix.c \ texline.c \ texobj.c \ texobjshare.c \ @@ -100,6 +106,7 @@ SOURCES = \ vao-01.c \ vao-02.c \ vparray.c \ + vpeval.c \ vptest1.c \ vptest2.c \ vptest3.c \ -- cgit v1.2.3 From cbf46ed670ef5a5c8a641730234dd7ae964c3170 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Sat, 10 Oct 2009 10:45:16 -0600 Subject: progs/perf: Fix MSVC build. --- progs/tests/texcomp_image.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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, -- cgit v1.2.3 From 96fd13c1a024e3b6c0b1c44394c67c772e52b9c9 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Mon, 12 Oct 2009 18:05:05 -0600 Subject: prog/tests: Fix MSVC build. --- progs/tests/crossbar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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 ]; -- cgit v1.2.3 From ea862ec8ff4a52b30b822e737d93a49330be9e31 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 14 Oct 2009 07:43:18 -0600 Subject: prog/tests: Fix MSVC build. --- progs/tests/arraytexture.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'progs/tests') 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 */ ; -- cgit v1.2.3 From 60b6c7458319ff01ecdd9d1650d526ac8f75e194 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 16 Oct 2009 11:36:09 +0100 Subject: prog/tests: Fix MSVC build. --- progs/tests/invert.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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)); -- cgit v1.2.3 From 699260b19535abaa3af0a5d33eb039e3d6a30ce9 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 16 Oct 2009 11:39:29 +0100 Subject: progs/tests: Use rand() instead of random(). More portable. Same implementation on Linux. --- progs/tests/prog_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 6dd956c402..6123ef7c16 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. -- cgit v1.2.3 From 166957abebea6aa203eba7e6348e89d53cf0e13e Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 16 Oct 2009 11:39:29 +0100 Subject: progs/tests: Use rand() instead of random(). Forgot these on previous commit. --- progs/tests/prog_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 6123ef7c16..28e3b537ac 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -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); -- cgit v1.2.3 From 82ffc5884c29a8d4eb70fde15f27cace4732a4bb Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 21 Oct 2009 21:51:06 -0600 Subject: progs/tests: draw Z values as luminance, no pixel zoom --- progs/tests/zreaddraw.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/zreaddraw.c b/progs/tests/zreaddraw.c index 7dfed20cfb..7740695bb6 100644 --- a/progs/tests/zreaddraw.c +++ b/progs/tests/zreaddraw.c @@ -58,6 +58,10 @@ static void Display(void) 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); @@ -100,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(); -- cgit v1.2.3 From 952bf63e2cf442504ef89b0b1d276da0d52b21d4 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 23 Oct 2009 13:49:02 -0600 Subject: progs/tests: Fix MSVC build. --- progs/tests/prog_parameter.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 28e3b537ac..0241f3a249 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -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"); -- cgit v1.2.3 From b01937a3c967ed23315c7543f97228be06942b7d Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 23 Oct 2009 14:52:10 -0600 Subject: progs/tests: print requested/internal format info --- progs/tests/texcmp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/texcmp.c b/progs/tests/texcmp.c index d1e829d1b7..45935e19a3 100644 --- a/progs/tests/texcmp.c +++ b/progs/tests/texcmp.c @@ -149,7 +149,7 @@ static void Reshape( int width, int height ) static void ReInit( GLenum TC, TEXTURE *Tx ) { - GLint rv; + GLint rv, v; if ((Tx->TC == TC) && (Tx->cData != NULL)) { glCompressedTexImage2DARB(GL_TEXTURE_2D, /* target */ @@ -170,6 +170,12 @@ static void ReInit( GLenum TC, TEXTURE *Tx ) GL_UNSIGNED_BYTE, /* texture type */ Tx->data); /* the texture */ + + v = 0; + glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, + GL_TEXTURE_INTERNAL_FORMAT, &v); + printf("Requested internal format = 0x%x, actual = 0x%x\n", TC, v); + /* okay, now cache the compressed texture */ Tx->TC = TC; if (Tx->cData != NULL) { -- cgit v1.2.3 From 51bc12d62338ad1874c437d692e1182c0bf3d4cd Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 24 Oct 2009 11:08:01 -0600 Subject: progs/tests: fix sub texture offsets --- progs/tests/texcompsub.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'progs/tests') 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 */ -- cgit v1.2.3 From d8ded352ec45696e88efe6d52a375bbf541354e9 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sun, 25 Oct 2009 18:10:45 -0600 Subject: progs/tests: disable blending while drawing text --- progs/tests/texcmp.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/texcmp.c b/progs/tests/texcmp.c index 743b1b09b4..ebb537272f 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); @@ -118,6 +120,7 @@ static void Display( void ) glDisable(GL_TEXTURE_2D); /* info */ + glDisable(GL_BLEND); glColor4f(1, 1, 1, 1); glRasterPos3f(-1.2, -0.7, 0); -- cgit v1.2.3 From 50e113e375b4ecfdf5b60ccce7bbcdb1c5f2ca11 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Mon, 26 Oct 2009 15:03:31 -0600 Subject: progs/tests: Fix MSVC build. --- progs/tests/stencil_twoside.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'progs/tests') 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"); } -- cgit v1.2.3 From 498fcfd315325365a7c58520ea956f298d6bc94c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 27 Oct 2009 16:46:07 -0600 Subject: progs/tests: added new blitfb.c test Tests glBlitFramebuffer() between two texture/renderbuffer surfaces. In particular, blit from level[1] of a cube map face to a 2D texture. Used to find/fix bug in intel do_copy_texsubimage(). See commit aef1ab1073f3e30d699b99dae17518ed48b57c72 --- progs/tests/Makefile | 1 + progs/tests/SConscript | 1 + progs/tests/blitfb.c | 259 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 261 insertions(+) create mode 100644 progs/tests/blitfb.c (limited to 'progs/tests') diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 4d9b4e8388..8c310df095 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -28,6 +28,7 @@ SOURCES = \ blendminmax.c \ blendsquare.c \ blendxor.c \ + blitfb.c \ bufferobj.c \ bumpmap.c \ bug_3050.c \ diff --git a/progs/tests/SConscript b/progs/tests/SConscript index bb6a1d2b8a..3a0da62717 100644 --- a/progs/tests/SConscript +++ b/progs/tests/SConscript @@ -52,6 +52,7 @@ progs = [ 'blendminmax', 'blendsquare', 'blendxor', + 'blitfb', 'bufferobj', 'bug_3050', 'bug_3101', diff --git a/progs/tests/blitfb.c b/progs/tests/blitfb.c new file mode 100644 index 0000000000..18c8380a5e --- /dev/null +++ b/progs/tests/blitfb.c @@ -0,0 +1,259 @@ +/** + * Test glFramebufferBlit() + * Brian Paul + * 27 Oct 2009 + */ + +#include +#include +#include +#include +#include +#include +#include + + +static int Win; +static int WinWidth = 1100, WinHeight = 600; + +static int SrcWidth = 512, SrcHeight = 512; +static int DstWidth = 512, DstHeight = 512; + +static GLuint SrcFB, DstFB; +static GLuint SrcTex, DstTex; + +#if 0 +static GLenum SrcTexTarget = GL_TEXTURE_2D, SrcTexFace = GL_TEXTURE_2D; +#else +static GLenum SrcTexTarget = GL_TEXTURE_CUBE_MAP, SrcTexFace = GL_TEXTURE_CUBE_MAP_POSITIVE_X; +#endif + +static GLenum DstTexTarget = GL_TEXTURE_2D, DstTexFace = GL_TEXTURE_2D; + +static GLuint SrcTexLevel = 01, DstTexLevel = 0; + + +static void +Draw(void) +{ + GLboolean rp = GL_FALSE; + GLubyte *buf; + GLint srcWidth = SrcWidth >> SrcTexLevel; + GLint srcHeight = SrcHeight >> SrcTexLevel; + GLint dstWidth = DstWidth >> DstTexLevel; + GLint dstHeight = DstHeight >> DstTexLevel; + GLenum status; + + /* clear window */ + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); + glClearColor(0.5, 0.5, 0.5, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + + + /* clear src buf */ + glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); + status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); + assert(status == GL_FRAMEBUFFER_COMPLETE_EXT); + glClearColor(0, 1, 0, 0); + glClear(GL_COLOR_BUFFER_BIT); + + /* clear dst buf */ + glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); + status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); + assert(status == GL_FRAMEBUFFER_COMPLETE_EXT); + glClearColor(1, 0, 0, 0); + glClear(GL_COLOR_BUFFER_BIT); + + /* blit src -> dst */ + glBindFramebufferEXT(GL_READ_FRAMEBUFFER, SrcFB); + glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER, DstFB); + glBlitFramebufferEXT(0, 0, srcWidth, srcHeight, + 0, 0, dstWidth, dstHeight, + GL_COLOR_BUFFER_BIT, GL_NEAREST); + +#if 01 + /* read src results */ + buf = malloc(4 * srcWidth * srcHeight); + memset(buf, 0x88, 4 * srcWidth * srcHeight); + glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); + if (rp) + glReadPixels(0, 0, srcWidth, srcHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + else { + glBindTexture(SrcTexTarget, SrcTex); + glGetTexImage(SrcTexFace, SrcTexLevel, GL_RGBA, GL_UNSIGNED_BYTE, buf); + } + + /* draw dst in window */ + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); + glWindowPos2i(0, 0); + glDrawPixels(srcWidth, srcHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + + printf("Src Pix[0] = %d %d %d %d\n", buf[0], buf[1], buf[2], buf[3]); + free(buf); +#endif + + glFinish(); + + /* read dst results */ + buf = malloc(4 * dstWidth * dstHeight); + memset(buf, 0x88, 4 * dstWidth * dstHeight); + glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); + if (rp) + glReadPixels(0, 0, dstWidth, dstHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + else { + glBindTexture(DstTexTarget, DstTex); + glGetTexImage(DstTexFace, DstTexLevel, GL_RGBA, GL_UNSIGNED_BYTE, buf); + } + + /* draw dst in window */ + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); + glWindowPos2i(srcWidth + 2, 0); + glDrawPixels(dstWidth, dstHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + + printf("Dst Pix[0] = %d %d %d %d\n", buf[0], buf[1], buf[2], buf[3]); + free(buf); + + glFinish(); + + glutSwapBuffers(); +} + + +static void +Reshape(int width, int height) +{ + WinWidth = width; + WinHeight = height; + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); + 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: + glutDestroyWindow(Win); + exit(0); + break; + } + glutPostRedisplay(); +} + + +static void +SpecialKey(int key, int x, int y) +{ + (void) x; + (void) y; + switch (key) { + } + glutPostRedisplay(); +} + + +static void +InitFBOs(void) +{ + GLuint w, h, lvl; + + /* Src */ + glGenTextures(1, &SrcTex); + glBindTexture(SrcTexTarget, SrcTex); + w = SrcWidth; + h = SrcHeight; + lvl = 0; + for (lvl = 0; ; lvl++) { + if (SrcTexTarget == GL_TEXTURE_CUBE_MAP) { + GLuint f; + for (f = 0; f < 6; f++) { + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + f, lvl, GL_RGBA8, + w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + } + } + else { + /* single face */ + glTexImage2D(SrcTexFace, lvl, GL_RGBA8, w, h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + } + if (w == 1 && h == 1) + break; + if (w > 1) + w /= 2; + if (h > 1) + h /= 2; + } + + glGenFramebuffersEXT(1, &SrcFB); + glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + SrcTexFace, SrcTex, SrcTexLevel); + + /* Dst */ + glGenTextures(1, &DstTex); + glBindTexture(DstTexTarget, DstTex); + w = DstWidth; + h = DstHeight; + lvl = 0; + for (lvl = 0; ; lvl++) { + glTexImage2D(DstTexFace, lvl, GL_RGBA8, w, h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + if (w == 1 && h == 1) + break; + if (w > 1) + w /= 2; + if (h > 1) + h /= 2; + } + + glGenFramebuffersEXT(1, &DstFB); + glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + DstTexFace, DstTex, DstTexLevel); +} + + +static void +Init(void) +{ + if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { + fprintf(stderr, "This test requires GL_EXT_framebuffer_object\n"); + exit(1); + } + + if (!glutExtensionSupported("GL_EXT_framebuffer_blit")) { + fprintf(stderr, "This test requires GL_EXT_framebuffer_blit,\n"); + exit(1); + } + + InitFBOs(); + + printf("Left rect = src FBO, Right rect = dst FBO.\n"); + printf("Both should be green.\n"); +} + + +int +main(int argc, char *argv[]) +{ + glutInit(&argc, argv); + glutInitWindowSize(WinWidth, WinHeight); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); + Win = glutCreateWindow(argv[0]); + glewInit(); + glutReshapeFunc(Reshape); + glutKeyboardFunc(Key); + glutSpecialFunc(SpecialKey); + glutDisplayFunc(Draw); + Init(); + glutMainLoop(); + return 0; +} -- cgit v1.2.3 From 3bee7610bef4c201a93e0ad8f670acc1b324e71d Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 27 Oct 2009 16:46:07 -0600 Subject: progs/tests: added new blitfb.c test Tests glBlitFramebuffer() between two texture/renderbuffer surfaces. In particular, blit from level[1] of a cube map face to a 2D texture. Used to find/fix bug in intel do_copy_texsubimage(). See commit aef1ab1073f3e30d699b99dae17518ed48b57c72 --- progs/tests/Makefile | 1 + progs/tests/SConscript | 1 + progs/tests/blitfb.c | 259 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 261 insertions(+) create mode 100644 progs/tests/blitfb.c (limited to 'progs/tests') diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 2b93aa5464..197e14d5b0 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -29,6 +29,7 @@ SOURCES = \ blendminmax.c \ blendsquare.c \ blendxor.c \ + blitfb.c \ bufferobj.c \ bumpmap.c \ bug_3050.c \ diff --git a/progs/tests/SConscript b/progs/tests/SConscript index bb6a1d2b8a..3a0da62717 100644 --- a/progs/tests/SConscript +++ b/progs/tests/SConscript @@ -52,6 +52,7 @@ progs = [ 'blendminmax', 'blendsquare', 'blendxor', + 'blitfb', 'bufferobj', 'bug_3050', 'bug_3101', diff --git a/progs/tests/blitfb.c b/progs/tests/blitfb.c new file mode 100644 index 0000000000..18c8380a5e --- /dev/null +++ b/progs/tests/blitfb.c @@ -0,0 +1,259 @@ +/** + * Test glFramebufferBlit() + * Brian Paul + * 27 Oct 2009 + */ + +#include +#include +#include +#include +#include +#include +#include + + +static int Win; +static int WinWidth = 1100, WinHeight = 600; + +static int SrcWidth = 512, SrcHeight = 512; +static int DstWidth = 512, DstHeight = 512; + +static GLuint SrcFB, DstFB; +static GLuint SrcTex, DstTex; + +#if 0 +static GLenum SrcTexTarget = GL_TEXTURE_2D, SrcTexFace = GL_TEXTURE_2D; +#else +static GLenum SrcTexTarget = GL_TEXTURE_CUBE_MAP, SrcTexFace = GL_TEXTURE_CUBE_MAP_POSITIVE_X; +#endif + +static GLenum DstTexTarget = GL_TEXTURE_2D, DstTexFace = GL_TEXTURE_2D; + +static GLuint SrcTexLevel = 01, DstTexLevel = 0; + + +static void +Draw(void) +{ + GLboolean rp = GL_FALSE; + GLubyte *buf; + GLint srcWidth = SrcWidth >> SrcTexLevel; + GLint srcHeight = SrcHeight >> SrcTexLevel; + GLint dstWidth = DstWidth >> DstTexLevel; + GLint dstHeight = DstHeight >> DstTexLevel; + GLenum status; + + /* clear window */ + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); + glClearColor(0.5, 0.5, 0.5, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + + + /* clear src buf */ + glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); + status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); + assert(status == GL_FRAMEBUFFER_COMPLETE_EXT); + glClearColor(0, 1, 0, 0); + glClear(GL_COLOR_BUFFER_BIT); + + /* clear dst buf */ + glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); + status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); + assert(status == GL_FRAMEBUFFER_COMPLETE_EXT); + glClearColor(1, 0, 0, 0); + glClear(GL_COLOR_BUFFER_BIT); + + /* blit src -> dst */ + glBindFramebufferEXT(GL_READ_FRAMEBUFFER, SrcFB); + glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER, DstFB); + glBlitFramebufferEXT(0, 0, srcWidth, srcHeight, + 0, 0, dstWidth, dstHeight, + GL_COLOR_BUFFER_BIT, GL_NEAREST); + +#if 01 + /* read src results */ + buf = malloc(4 * srcWidth * srcHeight); + memset(buf, 0x88, 4 * srcWidth * srcHeight); + glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); + if (rp) + glReadPixels(0, 0, srcWidth, srcHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + else { + glBindTexture(SrcTexTarget, SrcTex); + glGetTexImage(SrcTexFace, SrcTexLevel, GL_RGBA, GL_UNSIGNED_BYTE, buf); + } + + /* draw dst in window */ + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); + glWindowPos2i(0, 0); + glDrawPixels(srcWidth, srcHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + + printf("Src Pix[0] = %d %d %d %d\n", buf[0], buf[1], buf[2], buf[3]); + free(buf); +#endif + + glFinish(); + + /* read dst results */ + buf = malloc(4 * dstWidth * dstHeight); + memset(buf, 0x88, 4 * dstWidth * dstHeight); + glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); + if (rp) + glReadPixels(0, 0, dstWidth, dstHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + else { + glBindTexture(DstTexTarget, DstTex); + glGetTexImage(DstTexFace, DstTexLevel, GL_RGBA, GL_UNSIGNED_BYTE, buf); + } + + /* draw dst in window */ + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); + glWindowPos2i(srcWidth + 2, 0); + glDrawPixels(dstWidth, dstHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); + + printf("Dst Pix[0] = %d %d %d %d\n", buf[0], buf[1], buf[2], buf[3]); + free(buf); + + glFinish(); + + glutSwapBuffers(); +} + + +static void +Reshape(int width, int height) +{ + WinWidth = width; + WinHeight = height; + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); + 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: + glutDestroyWindow(Win); + exit(0); + break; + } + glutPostRedisplay(); +} + + +static void +SpecialKey(int key, int x, int y) +{ + (void) x; + (void) y; + switch (key) { + } + glutPostRedisplay(); +} + + +static void +InitFBOs(void) +{ + GLuint w, h, lvl; + + /* Src */ + glGenTextures(1, &SrcTex); + glBindTexture(SrcTexTarget, SrcTex); + w = SrcWidth; + h = SrcHeight; + lvl = 0; + for (lvl = 0; ; lvl++) { + if (SrcTexTarget == GL_TEXTURE_CUBE_MAP) { + GLuint f; + for (f = 0; f < 6; f++) { + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + f, lvl, GL_RGBA8, + w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + } + } + else { + /* single face */ + glTexImage2D(SrcTexFace, lvl, GL_RGBA8, w, h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + } + if (w == 1 && h == 1) + break; + if (w > 1) + w /= 2; + if (h > 1) + h /= 2; + } + + glGenFramebuffersEXT(1, &SrcFB); + glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + SrcTexFace, SrcTex, SrcTexLevel); + + /* Dst */ + glGenTextures(1, &DstTex); + glBindTexture(DstTexTarget, DstTex); + w = DstWidth; + h = DstHeight; + lvl = 0; + for (lvl = 0; ; lvl++) { + glTexImage2D(DstTexFace, lvl, GL_RGBA8, w, h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + if (w == 1 && h == 1) + break; + if (w > 1) + w /= 2; + if (h > 1) + h /= 2; + } + + glGenFramebuffersEXT(1, &DstFB); + glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + DstTexFace, DstTex, DstTexLevel); +} + + +static void +Init(void) +{ + if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { + fprintf(stderr, "This test requires GL_EXT_framebuffer_object\n"); + exit(1); + } + + if (!glutExtensionSupported("GL_EXT_framebuffer_blit")) { + fprintf(stderr, "This test requires GL_EXT_framebuffer_blit,\n"); + exit(1); + } + + InitFBOs(); + + printf("Left rect = src FBO, Right rect = dst FBO.\n"); + printf("Both should be green.\n"); +} + + +int +main(int argc, char *argv[]) +{ + glutInit(&argc, argv); + glutInitWindowSize(WinWidth, WinHeight); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); + Win = glutCreateWindow(argv[0]); + glewInit(); + glutReshapeFunc(Reshape); + glutKeyboardFunc(Key); + glutSpecialFunc(SpecialKey); + glutDisplayFunc(Draw); + Init(); + glutMainLoop(); + return 0; +} -- cgit v1.2.3 From 635ea8737488cc2fdcf0fcacb4ca39c8bc3b028a Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 10 Oct 2009 11:52:38 -0600 Subject: progs/tests: added test for GL_EXT_texture_compression_s3tc support --- progs/tests/mipmap_comp.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/mipmap_comp.c b/progs/tests/mipmap_comp.c index 5842e2b880..dd2232113b 100644 --- a/progs/tests/mipmap_comp.c +++ b/progs/tests/mipmap_comp.c @@ -285,6 +285,12 @@ main(int argc, char** argv) glutInitWindowSize (600, 600); glutCreateWindow (argv[0]); glewInit(); + + if (!glutExtensionSupported("GL_EXT_texture_compression_s3tc")) { + fprintf(stderr, "This test requires GL_EXT_texture_compression_s3tc.\n"); + exit(1); + } + myInit(); glutReshapeFunc (myReshape); glutDisplayFunc(display); -- cgit v1.2.3 From 1e2c51702675ad8093b77c3a37ed630e311cceb2 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 29 Oct 2009 10:49:38 -0600 Subject: progs/tests: also test GL_BGRA format in getteximage.c --- progs/tests/getteximage.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'progs/tests') 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"); -- cgit v1.2.3 From 02b9fb9c80ae9079cd2eab945d58551f9d9cbd7c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 29 Oct 2009 14:46:02 -0600 Subject: progs/tests: fixes for drawbuffers.c Disable GL_DEPTH_TEST before glDrawPixels. Show color buffer 0 on left, color buffer 1 on right. --- progs/tests/drawbuffers.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/drawbuffers.c b/progs/tests/drawbuffers.c index d75a870c26..7a19933e62 100644 --- a/progs/tests/drawbuffers.c +++ b/progs/tests/drawbuffers.c @@ -43,6 +43,8 @@ Display(void) glUseProgram_func(Program); + glEnable(GL_DEPTH_TEST); + /* draw to user framebuffer */ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBobject); @@ -68,18 +70,23 @@ Display(void) glPopMatrix(); /* read from user framebuffer */ - /* bottom half = colorbuffer 0 */ + /* left half = colorbuffer 0 */ glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); - glReadPixels(0, 0, Width, Height / 2, GL_RGBA, GL_UNSIGNED_BYTE, + glPixelStorei(GL_PACK_ROW_LENGTH, Width); + glPixelStorei(GL_PACK_SKIP_PIXELS, 0); + glReadPixels(0, 0, Width / 2, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - /* top half = colorbuffer 1 */ + + /* right half = colorbuffer 1 */ glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - glReadPixels(0, Height/2, Width, Height - Height / 2, + glPixelStorei(GL_PACK_SKIP_PIXELS, Width / 2); + glReadPixels(Width / 2, 0, Width - Width / 2, Height, GL_RGBA, GL_UNSIGNED_BYTE, - buffer + Width * (Height / 2) * 4); + buffer); /* draw to window */ glUseProgram_func(0); + glDisable(GL_DEPTH_TEST); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glWindowPos2iARB(0, 0); glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); -- cgit v1.2.3 From a8ed066858f12290239ddc9165b7c0734ccc0247 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 30 Oct 2009 09:39:51 -0600 Subject: progs/tests: fix MSVC build. Signed-off-by: Brian Paul --- progs/tests/vao-01.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'progs/tests') 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 ); -- cgit v1.2.3 From 9c3197ef0abc3bf521358ea0c7af0fc6979c82b3 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 30 Oct 2009 15:02:21 -0600 Subject: prog/tests: Fix MSVC build. Signed-off-by: Brian Paul --- progs/tests/vao-02.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'progs/tests') 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 ); -- cgit v1.2.3 From a017ad2861e8df0cfea7808cf9c094b9c4bcac48 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 3 Nov 2009 10:01:10 -0700 Subject: progs/tests: debug code for getting texture component sizes --- progs/tests/packedpixels.c | 7 +++++-- progs/tests/texcmp.c | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c index f4e5d0a795..d318cf516a 100644 --- a/progs/tests/packedpixels.c +++ b/progs/tests/packedpixels.c @@ -192,12 +192,15 @@ MakeTexture(const struct pixel_format *format, GLenum intFormat, GLboolean swap) } if (0) { - GLint r, g, b, a; + 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); - printf("sizes: %d %d %d %d\n", r, g, b, 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(); } diff --git a/progs/tests/texcmp.c b/progs/tests/texcmp.c index 3f2cee6e46..c5d352fdae 100644 --- a/progs/tests/texcmp.c +++ b/progs/tests/texcmp.c @@ -181,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) { -- cgit v1.2.3 From 60c328db2d5f269267dac7cd64335ba005890fca Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 4 Nov 2009 15:55:39 -0700 Subject: progs/tests: Fix MSVC build. Signed-off-by: Brian Paul --- progs/tests/shader_api.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/shader_api.c b/progs/tests/shader_api.c index 6453856345..fa0a992540 100644 --- a/progs/tests/shader_api.c +++ b/progs/tests/shader_api.c @@ -8,6 +8,10 @@ #include #include +#ifndef APIENTRY +#define APIENTRY +#endif + static void assert_test(const char *file, int line, int cond, const char *msg) { if (!cond) @@ -42,7 +46,7 @@ static void assert_error_test(const char *file, int line, GLenum expect) #define assert_error(err) assert_error_test(__FILE__, __LINE__, (err)) -static void check_status(GLuint id, GLenum pname, void (*query)(GLuint, GLenum, GLint *)) +static void check_status(GLuint id, GLenum pname, void (APIENTRY *query)(GLuint, GLenum, GLint *)) { GLint status; -- cgit v1.2.3 From 2ff4f5a7fe9b1ab9d46348768cc08e808f045822 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 11 Nov 2009 12:19:20 -0700 Subject: progs/tests: add alpha/blend testing to packedpixels.c --- progs/tests/packedpixels.c | 64 ++++++++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 22 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c index d318cf516a..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 @@ -234,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); @@ -245,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); @@ -279,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(); } @@ -301,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; @@ -336,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); } -- cgit v1.2.3 From fcf8dea36ce2bbeabeacc7a062f0c36326825ffa Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 12 Nov 2009 23:06:54 -0700 Subject: progs/tests: silence warning --- progs/tests/packedpixels.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c index a08e7c2b92..c8884bb79f 100644 --- a/progs/tests/packedpixels.c +++ b/progs/tests/packedpixels.c @@ -272,7 +272,7 @@ Draw(void) glPushMatrix(); glTranslatef(2, (i + 1) * (h + 2), 0); glRasterPos2i(8, 6); - sprintf(s, "Internal Texture Format [f/F]: %s (%d of %d)", + sprintf(s, "Internal Texture Format [f/F]: %s (%d of %lu)", IntFormats[CurFormat].name, CurFormat + 1, NUM_INT_FORMATS); PrintString(s); glPopMatrix(); -- cgit v1.2.3 From 773de83d3c942186f7e8ab87b5a0180d9a2d9f58 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 17 Nov 2009 15:24:40 -0800 Subject: progs/tests: Fix memory leak in arbgpuprog.c. --- progs/tests/arbgpuprog.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/arbgpuprog.c b/progs/tests/arbgpuprog.c index 23aa899d96..6098dca787 100644 --- a/progs/tests/arbgpuprog.c +++ b/progs/tests/arbgpuprog.c @@ -134,6 +134,8 @@ static void Init( const char *vertProgFile, } len = fread(buf, 1, 10*1000,f); + fclose(f); + glProgramStringARB_func(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, len, @@ -170,6 +172,8 @@ static void Init( const char *vertProgFile, } len = fread(buf, 1, 10*1000,f); + fclose(f); + glProgramStringARB_func(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, len, -- cgit v1.2.3 From e3cfd78969cd4a94fc83a5d6fb2f33730cc4e70f Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 18 Nov 2009 17:30:50 -0800 Subject: progs/tests: Fix memory leak in texdown.c if malloc fails. --- progs/tests/texdown.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/texdown.c b/progs/tests/texdown.c index 7e46045832..e6881d39a0 100644 --- a/progs/tests/texdown.c +++ b/progs/tests/texdown.c @@ -176,6 +176,8 @@ MeasureDownloadRate(void) orig_getImage = (GLubyte *) malloc(image_bytes + ALIGN); if (!orig_texImage || !orig_getImage) { DownloadRate = 0.0; + free(orig_texImage); + free(orig_getImage); return; } -- cgit v1.2.3 From 48deddaa6f81e58f0ad6ab1c6cbd31c0184a0a3b Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 20 Nov 2009 12:34:21 -0800 Subject: progs/tests: Initialize variable in getprocaddress.c. --- progs/tests/getprocaddress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/getprocaddress.c b/progs/tests/getprocaddress.c index a09ea58e1d..b905eeaf81 100644 --- a/progs/tests/getprocaddress.c +++ b/progs/tests/getprocaddress.c @@ -3516,7 +3516,7 @@ check_functions( const char *extensions ) struct name_test_pair *entry; int failures = 0, passes = 0, untested = 0; int totalFail = 0, totalPass = 0, totalUntested = 0, totalUnsupported = 0; - int doTests; + int doTests = 0; const char *version = (const char *) glGetString(GL_VERSION); /* The functions list will have "real" entries (consisting of -- cgit v1.2.3 From 02c3e0b82da6877a7e170bb3fafd591bc2d76115 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 20 Nov 2009 12:48:44 -0800 Subject: progs/tests: Silence unused value warnings in sharedtex.c. --- progs/tests/sharedtex.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/sharedtex.c b/progs/tests/sharedtex.c index c07ebd719c..2337b88d3f 100644 --- a/progs/tests/sharedtex.c +++ b/progs/tests/sharedtex.c @@ -424,13 +424,13 @@ main(int argc, char *argv[]) { const char *dpyName = XDisplayName(NULL); - struct window *h0, *h1, *h2, *h3; + struct window *h0; /* four windows and contexts sharing display lists and texture objects */ h0 = AddWindow(dpyName, 10, 10, NULL); - h1 = AddWindow(dpyName, 330, 10, h0); - h2 = AddWindow(dpyName, 10, 350, h0); - h3 = AddWindow(dpyName, 330, 350, h0); + (void) AddWindow(dpyName, 330, 10, h0); + (void) AddWindow(dpyName, 10, 350, h0); + (void) AddWindow(dpyName, 330, 350, h0); InitGLstuff(h0); -- cgit v1.2.3 From 3910e88ebf636cb34ae75bc4a7916fc8c2f1a9e1 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 14 Oct 2009 07:43:18 -0600 Subject: prog/tests: Fix MSVC build. (cherry picked from commit ea862ec8ff4a52b30b822e737d93a49330be9e31) --- progs/tests/arraytexture.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'progs/tests') 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 */ ; -- cgit v1.2.3 From 5a25adb646faa970dacec0dbfa2e2bd905e87eba Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 6 Oct 2009 16:02:47 -0600 Subject: progs/tests: fix MSVC build. (cherry picked from commit 9c778a90ea24f25437b68bb67856c81add61e261) --- progs/tests/copypixrate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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; } -- cgit v1.2.3 From 89e747920f35f28d651ad89380f58250aab7c2d4 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Mon, 12 Oct 2009 18:05:05 -0600 Subject: prog/tests: Fix MSVC build. (cherry picked from commit 96fd13c1a024e3b6c0b1c44394c67c772e52b9c9) --- progs/tests/crossbar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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 ]; -- cgit v1.2.3 From 791b7546876e72dcbcc012a855df7f610d777297 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 16 Oct 2009 11:36:09 +0100 Subject: prog/tests: Fix MSVC build. (cherry picked from commit 60b6c7458319ff01ecdd9d1650d526ac8f75e194) --- progs/tests/invert.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') 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)); -- cgit v1.2.3 From a38776419b1e18a43e8bab1371dfe802af44d14a Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 8 Oct 2009 08:08:11 -0600 Subject: progs/tests: Fix MSVC build. (cherry picked from commit f7455ad7af09b5ef31ccc454b79422a13c59af9a) --- progs/tests/minmag.c | 1 - 1 file changed, 1 deletion(-) (limited to 'progs/tests') 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 #include #include -#include #include #include -- cgit v1.2.3 From bb6e3af93920ca15d19fbb9685e5b6f612cc502c Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 16 Oct 2009 11:39:29 +0100 Subject: progs/tests: Use rand() instead of random(). More portable. Same implementation on Linux. (cherry picked from commit 699260b19535abaa3af0a5d33eb039e3d6a30ce9) --- progs/tests/prog_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 6dd956c402..6123ef7c16 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. -- cgit v1.2.3 From 28474e1225866e6b73928f79722f14cc5d6b35c7 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 16 Oct 2009 11:39:29 +0100 Subject: progs/tests: Use rand() instead of random(). Forgot these on previous commit. (cherry picked from commit 166957abebea6aa203eba7e6348e89d53cf0e13e) --- progs/tests/prog_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 6123ef7c16..28e3b537ac 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -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); -- cgit v1.2.3 From a99bf51bc845617c2086468a814685672b5de224 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 23 Oct 2009 13:49:02 -0600 Subject: progs/tests: Fix MSVC build. (cherry picked from commit 952bf63e2cf442504ef89b0b1d276da0d52b21d4) --- progs/tests/prog_parameter.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 28e3b537ac..0241f3a249 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -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"); -- cgit v1.2.3 From 97cbf4943a5926dc1bbec213ff8c919ece66555e Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Mon, 26 Oct 2009 15:03:31 -0600 Subject: progs/tests: Fix MSVC build. (cherry picked from commit 50e113e375b4ecfdf5b60ccce7bbcdb1c5f2ca11) --- progs/tests/stencil_twoside.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'progs/tests') 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"); } -- cgit v1.2.3 From d3208678c2ea0e50be7b8eb68106f7650b37dfc6 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 30 Oct 2009 09:39:51 -0600 Subject: progs/tests: fix MSVC build. Signed-off-by: Brian Paul (cherry picked from commit a8ed066858f12290239ddc9165b7c0734ccc0247) --- progs/tests/vao-01.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'progs/tests') 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 ); -- cgit v1.2.3 From 005242f1664afdd6f4b832863d569e9e3c583454 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 30 Oct 2009 15:02:21 -0600 Subject: prog/tests: Fix MSVC build. Signed-off-by: Brian Paul (cherry picked from commit 9c3197ef0abc3bf521358ea0c7af0fc6979c82b3) --- progs/tests/vao-02.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'progs/tests') 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 ); -- cgit v1.2.3 From efb582fde7d1375b21ecb28d8ba5690181a02a93 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 18 Nov 2009 17:30:50 -0800 Subject: progs/tests: Fix memory leak in texdown.c if malloc fails. (cherry picked from commit e3cfd78969cd4a94fc83a5d6fb2f33730cc4e70f) --- progs/tests/texdown.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/texdown.c b/progs/tests/texdown.c index 7e46045832..e6881d39a0 100644 --- a/progs/tests/texdown.c +++ b/progs/tests/texdown.c @@ -176,6 +176,8 @@ MeasureDownloadRate(void) orig_getImage = (GLubyte *) malloc(image_bytes + ALIGN); if (!orig_texImage || !orig_getImage) { DownloadRate = 0.0; + free(orig_texImage); + free(orig_getImage); return; } -- cgit v1.2.3 From 2cd2341ce88a3d485f81d920290a9c1d0ab988da Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Sat, 5 Dec 2009 01:22:34 -0800 Subject: progs/tests: Removed unused variable from texdown.c. --- progs/tests/texdown.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'progs/tests') diff --git a/progs/tests/texdown.c b/progs/tests/texdown.c index e6881d39a0..92df01b83d 100644 --- a/progs/tests/texdown.c +++ b/progs/tests/texdown.c @@ -162,7 +162,7 @@ MeasureDownloadRate(void) const int image_bytes = align(w * h * BytesPerTexel(Format), ALIGN); const int bytes = image_bytes * NR_TEXOBJ; GLubyte *orig_texImage, *orig_getImage; - GLubyte *texImage, *getImage; + GLubyte *texImage; GLdouble t0, t1, time; int count; int i; @@ -184,7 +184,6 @@ MeasureDownloadRate(void) printf("alloc %p %p\n", orig_texImage, orig_getImage); texImage = (GLubyte *)align((unsigned long)orig_texImage, ALIGN); - getImage = (GLubyte *)align((unsigned long)orig_getImage, ALIGN); for (i = 1; !(((unsigned long)texImage) & i); i<<=1) ; -- cgit v1.2.3 From d13c603e37bf7fb4c84b215775eb547761c1e2ec Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Sat, 5 Dec 2009 17:20:03 +0100 Subject: Add 'texture leak' test. --- progs/tests/Makefile | 1 + progs/tests/texleak.c | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 progs/tests/texleak.c (limited to 'progs/tests') diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 197e14d5b0..3e2541186b 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -98,6 +98,7 @@ SOURCES = \ texdown \ texfilt.c \ texgenmix.c \ + texleak.c \ texline.c \ texobj.c \ texobjshare.c \ diff --git a/progs/tests/texleak.c b/progs/tests/texleak.c new file mode 100644 index 0000000000..5cf4ff3239 --- /dev/null +++ b/progs/tests/texleak.c @@ -0,0 +1,140 @@ +/* + * 'Texture leak' test + * + * Allocates and uses an additional texture of the maximum supported size for + * each frame. This tests the system's ability to cope with using increasing + * amounts of texture memory. + * + * Michel Dänzer July 2009 This program is in the public domain. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include + + +GLint size; +GLvoid *image; +static GLuint numTexObj; +static GLuint *texObj; + + +static void Idle( void ) +{ + glutPostRedisplay(); +} + + +static void DrawObject(void) +{ + static const GLfloat tex_coords[] = { 0.0, 0.0, 1.0, 1.0, 0.0 }; + static const GLfloat vtx_coords[] = { -1.0, -1.0, 1.0, 1.0, -1.0 }; + GLint i, j; + + glEnable(GL_TEXTURE_2D); + + for (i = 0; i < numTexObj; i++) { + glBindTexture(GL_TEXTURE_2D, texObj[i]); + glBegin(GL_QUADS); + for (j = 0; j < 4; j++ ) { + glTexCoord2f(tex_coords[j], tex_coords[j+1]); + glVertex2f( vtx_coords[j], vtx_coords[j+1] ); + } + glEnd(); + } +} + + +static void Display( void ) +{ + struct timeval start, end; + + texObj = realloc(texObj, ++numTexObj * sizeof(*texObj)); + + /* allocate a texture object */ + glGenTextures(1, texObj + (numTexObj - 1)); + + glBindTexture(GL_TEXTURE_2D, texObj[numTexObj - 1]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + memset(image, (16 * numTexObj) & 0xff, 4 * size * size); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image); + + gettimeofday(&start, NULL); + + glClear( GL_COLOR_BUFFER_BIT ); + + glPushMatrix(); + glScalef(5.0, 5.0, 5.0); + DrawObject(); + glPopMatrix(); + + glutSwapBuffers(); + + glFinish(); + gettimeofday(&end, NULL); + printf("Rendering frame took %lu ms using %u MB of textures\n", + end.tv_sec * 1000 + end.tv_usec / 1000 - start.tv_sec * 1000 - + start.tv_usec / 1000, numTexObj * 4 * size / 1024 * size / 1024); + + sleep(1); +} + + +static void Reshape( int width, int height ) +{ + glViewport( 0, 0, width, height ); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + glOrtho( -6.0, 6.0, -6.0, 6.0, 10.0, 100.0 ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + glTranslatef( 0.0, 0.0, -70.0 ); +} + + +static void Init( int argc, char *argv[] ) +{ + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); + printf("%d x %d max texture size\n", size, size); + + image = malloc(4 * size * size); + if (!image) { + fprintf(stderr, "Failed to allocate %u bytes of memory\n", 4 * size * size); + exit(1); + } + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + glShadeModel(GL_FLAT); + glClearColor(0.3, 0.3, 0.4, 1.0); + + Idle(); +} + + +int main( int argc, char *argv[] ) +{ + glutInit( &argc, argv ); + glutInitWindowSize( 300, 300 ); + glutInitWindowPosition( 0, 0 ); + glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); + glutCreateWindow(argv[0] ); + glewInit(); + + Init( argc, argv ); + + glutReshapeFunc( Reshape ); + glutDisplayFunc( Display ); + glutIdleFunc(Idle); + + glutMainLoop(); + return 0; +} -- cgit v1.2.3 From 978b80c8e35b465273921a28540ed15f07d1afbf Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 9 Oct 2009 07:24:04 -0600 Subject: progs/tests: Add tests to Makefile. (cherry picked from commit 76d2ec3a0a047a65ffca70f53848241a3225dad3) --- progs/tests/Makefile | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'progs/tests') 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 \ -- cgit v1.2.3 From 3e8b2fda215689b9a77c73020a1efc523995931e Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Mon, 7 Dec 2009 18:40:37 -0800 Subject: progs/test: Initialize variable in prog_parameter. Silences uninitialized variable compiler warning. --- progs/tests/prog_parameter.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'progs/tests') diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 0241f3a249..2de7e2994a 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -192,6 +192,7 @@ static void Init( void ) GLfloat * params; GLint max_program_env_parameters; GLint max_program_local_parameters; + int i; printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); @@ -238,6 +239,10 @@ static void Init( void ) params = malloc(max_program_env_parameters * 4 * sizeof(GLfloat)); + for (i = 0; i < max_program_env_parameters * 4; i++) { + params[i] = 0.0F; + } + pass &= set_parameter_batch(max_program_env_parameters, params, "Env", program_env_parameter4fv, program_env_parameters4fv, -- cgit v1.2.3