diff options
Diffstat (limited to 'progs')
-rw-r--r-- | progs/demos/textures.c | 66 | ||||
-rw-r--r-- | progs/egl/eglut/Makefile | 5 | ||||
-rw-r--r-- | progs/egl/opengl/Makefile | 4 | ||||
-rw-r--r-- | progs/egl/opengles1/Makefile | 4 | ||||
-rw-r--r-- | progs/egl/openvg/Makefile | 4 | ||||
-rw-r--r-- | progs/osdemos/Makefile | 2 | ||||
-rw-r--r-- | progs/osdemos/ostest1.c | 6 | ||||
-rw-r--r-- | progs/tests/arraytexture.c | 2 |
8 files changed, 77 insertions, 16 deletions
diff --git a/progs/demos/textures.c b/progs/demos/textures.c index 1415ef1c43c..b668995aac1 100644 --- a/progs/demos/textures.c +++ b/progs/demos/textures.c @@ -6,11 +6,13 @@ #include <stdio.h> #include <stdlib.h> #include <math.h> +#include <GL/glew.h> #include <GL/glut.h> #include "readtex.h" #define TEST_CLAMP 0 #define TEST_MIPMAPS 0 +#define TEST_GEN_COMPRESSED_MIPMAPS 0 #define MAX_TEXTURES 8 @@ -304,6 +306,69 @@ LoadTextures(GLuint n, const char *files[]) GL_RGBA, GL_UNSIGNED_BYTE, image); } } +#elif TEST_GEN_COMPRESSED_MIPMAPS + { + GLenum intFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; + int f; + GLenum format; + GLubyte *img = LoadRGBImage(files[i], &w, &h, &format); + GLboolean write_compressed = GL_FALSE; + GLboolean read_compressed = GL_FALSE; + + glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); + glTexImage2D(GL_TEXTURE_2D, 0, intFormat, w, h, 0, + format, GL_UNSIGNED_BYTE, img); + glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE); + free(img); + + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, + GL_TEXTURE_INTERNAL_FORMAT, &f); + printf("actual internal format 0x%x\n", f); + + if (write_compressed) { + GLint i, sz, w, h; + int num_levels = 8; + for (i = 0; i < num_levels; i++) { + char name[20], *buf; + FILE *f; + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w); + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h); + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, + GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz); + printf("Writing level %d: %d x %d bytes: %d\n", i, w, h, sz); + buf = malloc(sz); + glGetCompressedTexImageARB(GL_TEXTURE_2D, i, buf); + sprintf(name, "comp%d", i); + f = fopen(name, "w"); + fwrite(buf, 1, sz, f); + fclose(f); + free(buf); + } + } + + if (read_compressed) { + GLint i, sz, w, h; + int num_levels = 8; + for (i = 01; i < num_levels; i++) { + char name[20], *buf; + FILE *f; + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w); + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h); + glGetTexLevelParameteriv(GL_TEXTURE_2D, i, + GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz); + buf = malloc(sz); + sprintf(name, "comp%d", i); + printf("Reading level %d: %d x %d bytes: %d from %s\n", + i, w, h, sz, name); + f = fopen(name, "r"); + fread(buf, 1, sz, f); + fclose(f); + glCompressedTexImage2DARB(GL_TEXTURE_2D, i, intFormat, + w, h, 0, sz, buf); + free(buf); + } + } + } #else if (!LoadRGBMipmaps2(files[i], GL_TEXTURE_2D, GL_RGB, &w, &h)) { printf("Error: couldn't load %s\n", files[i]); @@ -360,6 +425,7 @@ main(int argc, char *argv[]) glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); Win = glutCreateWindow(argv[0]); + glewInit(); glutReshapeFunc(Reshape); glutKeyboardFunc(Key); glutSpecialFunc(SpecialKey); diff --git a/progs/egl/eglut/Makefile b/progs/egl/eglut/Makefile index dec89117bb9..364f5b0be3d 100644 --- a/progs/egl/eglut/Makefile +++ b/progs/egl/eglut/Makefile @@ -7,7 +7,10 @@ INCLUDES = \ -I$(TOP)/include \ $(X11_CFLAGS) -SOURCES = $(wildcard *.c) +SOURCES = \ + eglut.c \ + eglut_screen.c \ + eglut_x11.c EGLUT_X11_OBJECTS = eglut.o eglut_x11.o EGLUT_SCREEN_OBJECTS = eglut.o eglut_screen.o diff --git a/progs/egl/opengl/Makefile b/progs/egl/opengl/Makefile index 20158b1f0bc..79cd5fc6533 100644 --- a/progs/egl/opengl/Makefile +++ b/progs/egl/opengl/Makefile @@ -62,9 +62,6 @@ xeglgears: xeglgears.o $(HEADERS) $(LIB_DEP) xeglthreads: xeglthreads.o $(HEADERS) $(LIB_DEP) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lpthread -lm $(X11_LIBS) -$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a: - @$(MAKE) -C $(EGLUT_DIR) - # define the rules for EGLUT demos define eglut-demo-rule $(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a $(LIB_DEP) @@ -80,4 +77,3 @@ $(EGLUT_SCREEN_DEMOS): clean: -rm -f *.o *~ -rm -f $(PROGRAMS) $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS) - @$(MAKE) -C $(EGLUT_DIR) clean diff --git a/progs/egl/opengles1/Makefile b/progs/egl/opengles1/Makefile index ba9d1b84d5f..593145d4bf2 100644 --- a/progs/egl/opengles1/Makefile +++ b/progs/egl/opengles1/Makefile @@ -81,9 +81,6 @@ two_win: two_win.o $(ES1_LIB_DEPS) $(CC) $(CFLAGS) two_win.o $(ES1_LIBS) -o $@ -$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a: - @$(MAKE) -C $(EGLUT_DIR) - # define the rules for EGLUT demos define eglut-demo-rule $(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a $(ES1_LIB_DEPS) @@ -100,4 +97,3 @@ $(EGLUT_SCREEN_DEMOS): clean: -rm -f *.o *~ -rm -f $(PROGRAMS) $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS) - @$(MAKE) -C $(EGLUT_DIR) clean diff --git a/progs/egl/openvg/Makefile b/progs/egl/openvg/Makefile index 431341c8a3f..3b11933db26 100644 --- a/progs/egl/openvg/Makefile +++ b/progs/egl/openvg/Makefile @@ -34,9 +34,6 @@ lion_screen: lion.o lion-render.o $(EGLUT_DIR)/libeglut-screen.a -L$(EGLUT_DIR) -leglut-screen $(VG_LIBS) -$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a: - @$(MAKE) -C $(EGLUT_DIR) - # define the rules for EGLUT demos define eglut-demo-rule $(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a @@ -52,4 +49,3 @@ $(EGLUT_SCREEN_DEMOS): clean: rm -f *.o *~ rm -f $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS) - @$(MAKE) -C $(EGLUT_DIR) clean diff --git a/progs/osdemos/Makefile b/progs/osdemos/Makefile index f53515cb0a7..2a0f2080832 100644 --- a/progs/osdemos/Makefile +++ b/progs/osdemos/Makefile @@ -5,7 +5,7 @@ include $(TOP)/configs/current INCDIR = $(TOP)/include -OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS) +OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS) OSMESA16_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -lOSMesa16 -l$(GLU_LIB) \ -l$(GL_LIB) $(APP_LIB_DEPS) diff --git a/progs/osdemos/ostest1.c b/progs/osdemos/ostest1.c index 000b8c4a781..5a00fdb246e 100644 --- a/progs/osdemos/ostest1.c +++ b/progs/osdemos/ostest1.c @@ -399,7 +399,11 @@ test(GLenum type, GLint bits, const char *filename) /* sanity checks */ glGetIntegerv(GL_RED_BITS, &cBits); - assert(cBits == bits); + if (cBits != bits) { + fprintf(stderr, "Unable to create %d-bit/channel renderbuffer.\n", bits); + fprintf(stderr, "May need to recompile Mesa with CHAN_BITS=16 or 32.\n"); + return 0; + } glGetIntegerv(GL_GREEN_BITS, &cBits); assert(cBits == bits); glGetIntegerv(GL_BLUE_BITS, &cBits); diff --git a/progs/tests/arraytexture.c b/progs/tests/arraytexture.c index e4e86b9b4ce..94adf478d90 100644 --- a/progs/tests/arraytexture.c +++ b/progs/tests/arraytexture.c @@ -249,7 +249,7 @@ static void require_extension(const char *ext) static void Init(void) { - const char *const ver_string = (const char *const) glGetString(GL_VERSION); + const char *const ver_string = (const char *) glGetString(GL_VERSION); unsigned i; printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); |