summaryrefslogtreecommitdiffstats
path: root/progs
diff options
context:
space:
mode:
Diffstat (limited to 'progs')
-rw-r--r--progs/demos/textures.c66
-rw-r--r--progs/egl/eglut/Makefile5
-rw-r--r--progs/egl/opengl/Makefile4
-rw-r--r--progs/egl/opengles1/Makefile4
-rw-r--r--progs/egl/openvg/Makefile4
-rw-r--r--progs/osdemos/Makefile2
-rw-r--r--progs/osdemos/ostest1.c6
-rw-r--r--progs/tests/arraytexture.c2
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));