diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.am mesa-demos-8.0.1//src/demos/Makefile.am
--- Desktop/mesa-demos-8.0.1//src/demos/Makefile.am	2010-07-13 14:46:40.000000000 -0400
+++ mesa-demos-8.0.1/src/demos/Makefile.am	2011-06-04 15:34:18.000000000 -0400
@@ -62,7 +62,6 @@ bin_PROGRAMS = \
 	morph3d \
 	multiarb \
 	paltex \
-	pointblast \
 	projtex \
 	ray \
 	readpix \
@@ -71,7 +70,6 @@ bin_PROGRAMS = \
 	shadowtex \
 	singlebuffer \
 	spectex \
-	spriteblast \
 	stex3d \
 	teapot \
 	terrain \
diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.in mesa-demos-8.0.1//src/demos/Makefile.in
--- Desktop/mesa-demos-8.0.1//src/demos/Makefile.in	2010-07-13 14:53:23.000000000 -0400
+++ mesa-demos-8.0.1/src/demos/Makefile.in	2011-06-04 15:35:32.000000000 -0400
@@ -73,11 +73,10 @@ host_triplet = @host@
 @HAVE_GLUT_TRUE@	ipers$(EXEEXT) isosurf$(EXEEXT) \
 @HAVE_GLUT_TRUE@	lodbias$(EXEEXT) morph3d$(EXEEXT) \
 @HAVE_GLUT_TRUE@	multiarb$(EXEEXT) paltex$(EXEEXT) \
-@HAVE_GLUT_TRUE@	pointblast$(EXEEXT) projtex$(EXEEXT) \
-@HAVE_GLUT_TRUE@	ray$(EXEEXT) readpix$(EXEEXT) reflect$(EXEEXT) \
-@HAVE_GLUT_TRUE@	renormal$(EXEEXT) shadowtex$(EXEEXT) \
-@HAVE_GLUT_TRUE@	singlebuffer$(EXEEXT) spectex$(EXEEXT) \
-@HAVE_GLUT_TRUE@	spriteblast$(EXEEXT) stex3d$(EXEEXT) \
+@HAVE_GLUT_TRUE@	projtex$(EXEEXT) ray$(EXEEXT) readpix$(EXEEXT) \
+@HAVE_GLUT_TRUE@	reflect$(EXEEXT) renormal$(EXEEXT) \
+@HAVE_GLUT_TRUE@	shadowtex$(EXEEXT) singlebuffer$(EXEEXT) \
+@HAVE_GLUT_TRUE@	spectex$(EXEEXT) stex3d$(EXEEXT) \
 @HAVE_GLUT_TRUE@	teapot$(EXEEXT) terrain$(EXEEXT) \
 @HAVE_GLUT_TRUE@	tessdemo$(EXEEXT) texcyl$(EXEEXT) \
 @HAVE_GLUT_TRUE@	texenv$(EXEEXT) textures$(EXEEXT) \
@@ -188,9 +187,6 @@ multiarb_DEPENDENCIES = ../util/libutil.
 paltex_SOURCES = paltex.c
 paltex_OBJECTS = paltex.$(OBJEXT)
 paltex_LDADD = $(LDADD)
-pointblast_SOURCES = pointblast.c
-pointblast_OBJECTS = pointblast.$(OBJEXT)
-pointblast_LDADD = $(LDADD)
 projtex_SOURCES = projtex.c
 projtex_OBJECTS = projtex.$(OBJEXT)
 projtex_DEPENDENCIES = ../util/libutil.la
@@ -215,9 +211,6 @@ singlebuffer_LDADD = $(LDADD)
 spectex_SOURCES = spectex.c
 spectex_OBJECTS = spectex.$(OBJEXT)
 spectex_LDADD = $(LDADD)
-spriteblast_SOURCES = spriteblast.c
-spriteblast_OBJECTS = spriteblast.$(OBJEXT)
-spriteblast_LDADD = $(LDADD)
 stex3d_SOURCES = stex3d.c
 stex3d_OBJECTS = stex3d.$(OBJEXT)
 stex3d_LDADD = $(LDADD)
@@ -285,21 +278,20 @@ SOURCES = arbfplight.c arbfslight.c arbo
 	fbo_firecube.c fbotexture.c fire.c fogcoord.c fplight.c \
 	fslight.c gamma.c gearbox.c gears.c geartrain.c glinfo.c \
 	gloss.c gltestperf.c ipers.c isosurf.c lodbias.c morph3d.c \
-	multiarb.c paltex.c pointblast.c projtex.c ray.c readpix.c \
-	reflect.c renormal.c shadowtex.c singlebuffer.c spectex.c \
-	spriteblast.c stex3d.c teapot.c terrain.c tessdemo.c texcyl.c \
-	texenv.c textures.c trispd.c $(tunnel_SOURCES) tunnel2.c \
-	vao_demo.c winpos.c
+	multiarb.c paltex.c projtex.c ray.c readpix.c reflect.c \
+	renormal.c shadowtex.c singlebuffer.c spectex.c stex3d.c \
+	teapot.c terrain.c tessdemo.c texcyl.c texenv.c textures.c \
+	trispd.c $(tunnel_SOURCES) tunnel2.c vao_demo.c winpos.c
 DIST_SOURCES = arbfplight.c arbfslight.c arbocclude.c bounce.c \
 	clearspd.c copypix.c cubemap.c dinoshade.c dissolve.c \
 	drawpix.c engine.c fbo_firecube.c fbotexture.c fire.c \
 	fogcoord.c fplight.c fslight.c gamma.c gearbox.c gears.c \
 	geartrain.c glinfo.c gloss.c gltestperf.c ipers.c isosurf.c \
-	lodbias.c morph3d.c multiarb.c paltex.c pointblast.c projtex.c \
-	ray.c readpix.c reflect.c renormal.c shadowtex.c \
-	singlebuffer.c spectex.c spriteblast.c stex3d.c teapot.c \
-	terrain.c tessdemo.c texcyl.c texenv.c textures.c trispd.c \
-	$(tunnel_SOURCES) tunnel2.c vao_demo.c winpos.c
+	lodbias.c morph3d.c multiarb.c paltex.c projtex.c ray.c \
+	readpix.c reflect.c renormal.c shadowtex.c singlebuffer.c \
+	spectex.c stex3d.c teapot.c terrain.c tessdemo.c texcyl.c \
+	texenv.c textures.c trispd.c $(tunnel_SOURCES) tunnel2.c \
+	vao_demo.c winpos.c
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -653,9 +645,6 @@ multiarb$(EXEEXT): $(multiarb_OBJECTS) $
 paltex$(EXEEXT): $(paltex_OBJECTS) $(paltex_DEPENDENCIES) 
 	@rm -f paltex$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(paltex_OBJECTS) $(paltex_LDADD) $(LIBS)
-pointblast$(EXEEXT): $(pointblast_OBJECTS) $(pointblast_DEPENDENCIES) 
-	@rm -f pointblast$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pointblast_OBJECTS) $(pointblast_LDADD) $(LIBS)
 projtex$(EXEEXT): $(projtex_OBJECTS) $(projtex_DEPENDENCIES) 
 	@rm -f projtex$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(projtex_OBJECTS) $(projtex_LDADD) $(LIBS)
@@ -680,9 +669,6 @@ singlebuffer$(EXEEXT): $(singlebuffer_OB
 spectex$(EXEEXT): $(spectex_OBJECTS) $(spectex_DEPENDENCIES) 
 	@rm -f spectex$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(spectex_OBJECTS) $(spectex_LDADD) $(LIBS)
-spriteblast$(EXEEXT): $(spriteblast_OBJECTS) $(spriteblast_DEPENDENCIES) 
-	@rm -f spriteblast$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(spriteblast_OBJECTS) $(spriteblast_LDADD) $(LIBS)
 stex3d$(EXEEXT): $(stex3d_OBJECTS) $(stex3d_DEPENDENCIES) 
 	@rm -f stex3d$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stex3d_OBJECTS) $(stex3d_LDADD) $(LIBS)
@@ -756,7 +742,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph3d.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiarb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paltex.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pointblast.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projtex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ray.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readpix.Po@am__quote@
@@ -765,7 +750,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shadowtex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/singlebuffer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spectex.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spriteblast.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stex3d.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/teapot.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/terrain.Po@am__quote@
diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/pointblast.c mesa-demos-8.0.1//src/demos/pointblast.c
--- Desktop/mesa-demos-8.0.1//src/demos/pointblast.c	2010-07-07 13:57:15.000000000 -0400
+++ mesa-demos-8.0.1/src/demos/pointblast.c	1969-12-31 19:00:00.000000000 -0500
@@ -1,504 +0,0 @@
-
-/* Copyright (c) Mark J. Kilgard, 1997.  */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-/* This example demonstrates how to render particle effects
-   with OpenGL.  A cloud of pinkish/orange particles explodes with the
-   particles bouncing off the ground.  When the EXT_point_parameters
-   is present , the particle size is attenuated based on eye distance. */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>       /* for cos(), sin(), and sqrt() */
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-/* Some <math.h> files do not define M_PI... */
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#if 0  /* For debugging. */
-#undef GL_EXT_point_parameters
-#endif
-
-static GLfloat angle = -150;   /* in degrees */
-static int spin = 0;
-static int moving, begin;
-static int newModel = 1;
-static float theTime;
-static int repeat = 1;
-static int blend = 1;
-int useMipmaps = 1;
-int linearFiltering = 1;
-
-static GLfloat constant[3] = { 1/5.0, 0.0, 0.0 };
-static GLfloat linear[3] = { 0.0, 1/5.0, 0.0 };
-static GLfloat theQuad[3] = { 0.25, 0.0, 1/60.0 };
-
-#define MAX_POINTS 2000
-
-static int numPoints = 200;
-
-static GLfloat pointList[MAX_POINTS][3];
-static GLfloat pointTime[MAX_POINTS];
-static GLfloat pointVelocity[MAX_POINTS][2];
-static GLfloat pointDirection[MAX_POINTS][2];
-static int colorList[MAX_POINTS];
-static int animate = 1, motion = 0;
-
-static GLfloat colorSet[][4] = {
-  /* Shades of red. */
-  { 0.7, 0.2, 0.4, 0.5 },
-  { 0.8, 0.0, 0.7, 0.5 },
-  { 1.0, 0.0, 0.0, 0.5 },
-  { 0.9, 0.3, 0.6, 0.5 },
-  { 1.0, 0.4, 0.0, 0.5 },
-  { 1.0, 0.0, 0.5, 0.5 },
-};
-
-#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
-
-#define DEAD (NUM_COLORS+1)
-
-
-#if 0  /* drand48 might be better on Unix machines */
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
-#else
-static float float_rand(void) { return rand() / (float) RAND_MAX; }
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
-#endif
-
-#define MEAN_VELOCITY 3.0
-#define GRAVITY 2.0
-
-/* Modeling units of ground extent in each X and Z direction. */
-#define EDGE 12
-
-static void
-makePointList(void)
-{
-  float angle, velocity, direction;
-  int i;
-
-  motion = 1;
-  for (i=0; i<numPoints; i++) {
-    pointList[i][0] = 0.0;
-    pointList[i][1] = 0.0;
-    pointList[i][2] = 0.0;
-    pointTime[i] = 0.0;
-    angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
-    direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
-    pointDirection[i][0] = cos(direction);
-    pointDirection[i][1] = sin(direction);
-    velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
-    pointVelocity[i][0] = velocity * cos(angle);
-    pointVelocity[i][1] = velocity * sin(angle);
-    colorList[i] = rand() % NUM_COLORS;
-  }
-  theTime = 0.0;
-}
-
-static void
-updatePointList(void)
-{
-  float distance;
-  int i;
-
-  static double t0 = -1.;
-  double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
-  if (t0 < 0.0)
-    t0 = t;
-  dt = t - t0;
-  t0 = t;
-
-  motion = 0;
-  for (i=0; i<numPoints; i++) {
-    distance = pointVelocity[i][0] * theTime;
-
-    /* X and Z */
-    pointList[i][0] = pointDirection[i][0] * distance;
-    pointList[i][2] = pointDirection[i][1] * distance;
-
-    /* Z */
-    pointList[i][1] =
-      (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
-
-    /* If we hit the ground, bounce the point upward again. */
-    if (pointList[i][1] <= 0.0) {
-      if (distance > EDGE) {
-        /* Particle has hit ground past the distance duration of
-          the particles.  Mark particle as dead. */
-       colorList[i] = NUM_COLORS;  /* Not moving. */
-       continue;
-      }
-
-      pointVelocity[i][1] *= 0.8;  /* 80% of previous up velocity. */
-      pointTime[i] = 0.0;  /* Reset the particles sense of up time. */
-    }
-    motion = 1;
-    pointTime[i] += dt;
-  }
-  theTime += dt;
-  if (!motion && !spin) {
-    if (repeat) {
-      makePointList();
-    } else {
-      glutIdleFunc(NULL);
-    }
-  }
-}
-
-static void
-idle(void)
-{
-  updatePointList();
-  if (spin) {
-    angle += 0.3;
-    newModel = 1;
-  }
-  glutPostRedisplay();
-}
-
-static void
-visible(int vis)
-{
-  if (vis == GLUT_VISIBLE) {
-    if (animate && (motion || spin)) {
-      glutIdleFunc(idle);
-    }
-  } else {
-    glutIdleFunc(NULL);
-  }
-}
-
-static void
-recalcModelView(void)
-{
-  glPopMatrix();
-  glPushMatrix();
-  glRotatef(angle, 0.0, 1.0, 0.0);
-  newModel = 0;
-}
-
-static void
-redraw(void)
-{
-  int i;
-
-  glDepthMask(GL_TRUE);
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-  if (newModel)
-    recalcModelView();
-
-
-  /* Draw the floor. */
-/*  glEnable(GL_TEXTURE_2D);*/
-  glColor3f(0.5, 1.0, 0.5);
-  glBegin(GL_QUADS);
-    glTexCoord2f(0.0, 0.0);
-    glVertex3f(-EDGE, -0.05, -EDGE);
-    glTexCoord2f(20.0, 0.0);
-    glVertex3f(EDGE, -0.05, -EDGE);
-    glTexCoord2f(20.0, 20.0);
-    glVertex3f(EDGE, -0.05, EDGE);
-    glTexCoord2f(0.0, 20.0);
-    glVertex3f(-EDGE, -0.05, EDGE);
-  glEnd();
-
-  /* Allow particles to blend with each other. */
-  glDepthMask(GL_FALSE);
-
-  if (blend)
-     glEnable(GL_BLEND);
-
-  glDisable(GL_TEXTURE_2D);
-  glBegin(GL_POINTS);
-    for (i=0; i<numPoints; i++) {
-      /* Draw alive particles. */
-      if (colorList[i] != DEAD) {
-        glColor4fv(colorSet[colorList[i]]);
-        glVertex3fv(pointList[i]);
-      }
-    }
-  glEnd();
-
-  glDisable(GL_BLEND);
-
-  glutSwapBuffers();
-}
-
-/* ARGSUSED2 */
-static void
-mouse(int button, int state, int x, int y)
-{
-  /* Scene can be spun around Y axis using left
-     mouse button movement. */
-  if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
-    moving = 1;
-    begin = x;
-  }
-  if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
-    moving = 0;
-  }
-}
-
-/* ARGSUSED1 */
-static void
-mouseMotion(int x, int y)
-{
-  if (moving) {
-    angle = angle + (x - begin);
-    begin = x;
-    newModel = 1;
-    glutPostRedisplay();
-  }
-}
-
-static void
-menu(int option)
-{
-  switch (option) {
-  case 0:
-    makePointList();
-    break;
-#ifdef GL_ARB_point_parameters
-  case 1:
-    glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
-    break;
-  case 2:
-    glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
-    break;
-  case 3:
-    glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-    break;
-#endif
-  case 4:
-    blend = 1;
-    break;
-  case 5:
-    blend = 0;
-    break;
-#ifdef GL_ARB_point_parameters
-  case 6:
-    glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
-    break;
-  case 7:
-    glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
-    break;
-#endif
-  case 8:
-    glEnable(GL_POINT_SMOOTH);
-    break;
-  case 9:
-    glDisable(GL_POINT_SMOOTH);
-    break;
-  case 10:
-    glPointSize(2.0);
-    break;
-  case 11:
-    glPointSize(4.0);
-    break;
-  case 12:
-    glPointSize(8.0);
-    break;
-  case 13:
-    spin = 1 - spin;
-    if (animate && (spin || motion)) {
-      glutIdleFunc(idle);
-    } else {
-      glutIdleFunc(NULL);
-    }
-    break;
-  case 14:
-    numPoints = 200;
-    break;
-  case 15:
-    numPoints = 500;
-    break;
-  case 16:
-    numPoints = 1000;
-    break;
-  case 17:
-    numPoints = 2000;
-    break;
-  case 666:
-    exit(0);
-  }
-  glutPostRedisplay();
-}
-
-/* ARGSUSED1 */
-static void
-key(unsigned char c, int x, int y)
-{
-  switch (c) {
-  case 13:
-    animate = 1 - animate;  /* toggle. */
-    if (animate && (motion || spin)) {
-      glutIdleFunc(idle);
-    } else {
-      glutIdleFunc(NULL);
-    }
-    break;
-  case ' ':
-    animate = 1;
-    makePointList();
-    glutIdleFunc(idle);
-    break;
-  case 27:
-    exit(0);
-  }
-}
-
-/* Nice floor texture tiling pattern. */
-static char *circles[] = {
-  "....xxxx........",
-  "..xxxxxxxx......",
-  ".xxxxxxxxxx.....",
-  ".xxx....xxx.....",
-  "xxx......xxx....",
-  "xxx......xxx....",
-  "xxx......xxx....",
-  "xxx......xxx....",
-  ".xxx....xxx.....",
-  ".xxxxxxxxxx.....",
-  "..xxxxxxxx......",
-  "....xxxx........",
-  "................",
-  "................",
-  "................",
-  "................",
-};
-
-static void
-makeFloorTexture(void)
-{
-  GLubyte floorTexture[16][16][3];
-  GLubyte *loc;
-  int s, t;
-
-  /* Setup RGB image for the texture. */
-  loc = (GLubyte*) floorTexture;
-  for (t = 0; t < 16; t++) {
-    for (s = 0; s < 16; s++) {
-      if (circles[t][s] == 'x') {
-        /* Nice blue. */
-        loc[0] = 0x1f;
-        loc[1] = 0x1f;
-        loc[2] = 0x8f;
-      } else {
-        /* Light gray. */
-        loc[0] = 0xca;
-        loc[1] = 0xca;
-        loc[2] = 0xca;
-      }
-      loc += 3;
-    }
-  }
-
-  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
-  if (useMipmaps) {
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
-      GL_LINEAR_MIPMAP_LINEAR);
-    gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16,
-      GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
-  } else {
-    if (linearFiltering) {
-      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    } else {
-      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-    }
-    glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
-      GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
-  }
-}
-
-int
-main(int argc, char **argv)
-{
-  int i;
-
-  glutInitWindowSize(300, 300);
-  glutInit(&argc, argv);
-  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
-
-  for (i=1; i<argc; i++) {
-    if(!strcmp("-noms", argv[i])) {
-      glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
-      printf("forcing no multisampling\n");
-    } else if(!strcmp("-nomipmaps", argv[i])) {
-      useMipmaps = 0;
-    } else if(!strcmp("-nearest", argv[i])) {
-      linearFiltering = 0;
-    }
-  }
-
-  glutCreateWindow("point burst");
-  glewInit();
-  glutDisplayFunc(redraw);
-  glutMouseFunc(mouse);
-  glutMotionFunc(mouseMotion);
-  glutVisibilityFunc(visible);
-  glutKeyboardFunc(key);
-  glutCreateMenu(menu);
-  glutAddMenuEntry("Reset time", 0);
-  glutAddMenuEntry("Constant", 1);
-  glutAddMenuEntry("Linear", 2);
-  glutAddMenuEntry("Quadratic", 3);
-  glutAddMenuEntry("Blend on", 4);
-  glutAddMenuEntry("Blend off", 5);
-  glutAddMenuEntry("Threshold 1", 6);
-  glutAddMenuEntry("Threshold 10", 7);
-  glutAddMenuEntry("Point smooth on", 8);
-  glutAddMenuEntry("Point smooth off", 9);
-  glutAddMenuEntry("Point size 2", 10);
-  glutAddMenuEntry("Point size 4", 11);
-  glutAddMenuEntry("Point size 8", 12);
-  glutAddMenuEntry("Toggle spin", 13);
-  glutAddMenuEntry("200 points ", 14);
-  glutAddMenuEntry("500 points ", 15);
-  glutAddMenuEntry("1000 points ", 16);
-  glutAddMenuEntry("2000 points ", 17);
-  glutAddMenuEntry("Quit", 666);
-  glutAttachMenu(GLUT_RIGHT_BUTTON);
-
-  if (!glutExtensionSupported("GL_ARB_point_parameters")) {
-    fprintf(stderr, "Sorry, GL_ARB_point_parameters is not supported.\n");
-    return -1;
-  }
-
-  glShadeModel(GL_FLAT);
-  glEnable(GL_DEPTH_TEST);
-  glEnable(GL_POINT_SMOOTH);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  glPointSize(8.0);
-#if GL_ARB_point_parameters
-  glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-#endif
-  glMatrixMode(GL_PROJECTION);
-  gluPerspective( /* field of view in degree */ 40.0,
-  /* aspect ratio */ 1.0,
-    /* Z near */ 0.5, /* Z far */ 40.0);
-  glMatrixMode(GL_MODELVIEW);
-  gluLookAt(0.0, 1.0, 8.0, /* eye location */
-    0.0, 1.0, 0.0,      /* center is at (0,0,0) */
-    0.0, 1.0, 0.);      /* up is in postivie Y direction */
-  glPushMatrix();       /* dummy push so we can pop on model
-                           recalc */
-
-  makePointList();
-  makeFloorTexture();
-
-  glutMainLoop();
-  return 0;             /* ANSI C requires main to return int. */
-}
diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/spriteblast.c mesa-demos-8.0.1//src/demos/spriteblast.c
--- Desktop/mesa-demos-8.0.1//src/demos/spriteblast.c	2010-07-07 13:57:15.000000000 -0400
+++ mesa-demos-8.0.1/src/demos/spriteblast.c	1969-12-31 19:00:00.000000000 -0500
@@ -1,555 +0,0 @@
-
-/* Copyright (c) Mark J. Kilgard, 1997.  */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-/* This example demonstrates how to render particle effects
-   with OpenGL.  A cloud of pinkish/orange particles explodes with the
-   particles bouncing off the ground.  When the EXT_point_parameters
-   is present , the particle size is attenuated based on eye distance. */
-
-
-/* Modified by Brian Paul to test GL_ARB_point_sprite */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>       /* for cos(), sin(), and sqrt() */
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-/* Some <math.h> files do not define M_PI... */
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#if 0  /* For debugging. */
-#undef GL_EXT_point_parameters
-#endif
-
-static GLfloat angle = -150;   /* in degrees */
-static int spin = 0;
-static int moving, begin;
-static float theTime;
-static int repeat = 1;
-static int blend = 1;
-int useMipmaps = 1;
-int linearFiltering = 1;
-
-static GLfloat constant[3] = { .2,  0.0,     0.0 };
-static GLfloat linear[3]   = { .0,   .1,     0.0 };
-static GLfloat theQuad[3]  = { .005, 0.1, 1/600.0 };
-
-#define MAX_POINTS 2000
-
-static int numPoints = 200;
-
-static GLfloat pointList[MAX_POINTS][3];
-static GLfloat pointTime[MAX_POINTS];
-static GLfloat pointVelocity[MAX_POINTS][2];
-static GLfloat pointDirection[MAX_POINTS][2];
-static int colorList[MAX_POINTS];
-static int animate = 1, motion = 0, org = 0, sprite = 1, smooth = 1;
-
-static GLfloat colorSet[][4] = {
-  /* Shades of red. */
-  { 0.7, 0.2, 0.4, 0.5 },
-  { 0.8, 0.0, 0.7, 0.5 },
-  { 1.0, 0.0, 0.0, 0.5 },
-  { 0.9, 0.3, 0.6, 0.5 },
-  { 1.0, 0.4, 0.0, 0.5 },
-  { 1.0, 0.0, 0.5, 0.5 },
-};
-
-#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
-
-#define DEAD (NUM_COLORS+1)
-
-
-/* GL */
-static GLint spritePattern[16][16] = {
-   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-   { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
-   { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
-   { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
-   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
-};
-
-
-
-
-#if 0  /* drand48 might be better on Unix machines */
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
-#else
-static float float_rand(void) { return rand() / (float) RAND_MAX; }
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
-#endif
-
-#define MEAN_VELOCITY 3.0
-#define GRAVITY 2.0
-
-/* Modeling units of ground extent in each X and Z direction. */
-#define EDGE 12
-
-static void
-makePointList(void)
-{
-  float angle, velocity, direction;
-  int i;
-
-  motion = 1;
-  for (i=0; i<numPoints; i++) {
-    pointList[i][0] = 0.0;
-    pointList[i][1] = 0.0;
-    pointList[i][2] = 0.0;
-    pointTime[i] = 0.0;
-    angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
-    direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
-    pointDirection[i][0] = cos(direction);
-    pointDirection[i][1] = sin(direction);
-    velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
-    pointVelocity[i][0] = velocity * cos(angle);
-    pointVelocity[i][1] = velocity * sin(angle);
-    colorList[i] = rand() % NUM_COLORS;
-  }
-  theTime = 0.0;
-}
-
-static void
-updatePointList(void)
-{
-  float distance;
-  int i;
-
-  static double t0 = -1.;
-  double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
-  if (t0 < 0.0)
-    t0 = t;
-  dt = t - t0;
-  t0 = t;
-
-  motion = 0;
-  for (i=0; i<numPoints; i++) {
-    distance = pointVelocity[i][0] * theTime;
-
-    /* X and Z */
-    pointList[i][0] = pointDirection[i][0] * distance;
-    pointList[i][2] = pointDirection[i][1] * distance;
-
-    /* Z */
-    pointList[i][1] =
-      (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
-
-    /* If we hit the ground, bounce the point upward again. */
-    if (pointList[i][1] <= 0.0) {
-      if (distance > EDGE) {
-        /* Particle has hit ground past the distance duration of
-          the particles.  Mark particle as dead. */
-       colorList[i] = NUM_COLORS;  /* Not moving. */
-       continue;
-      }
-
-      pointVelocity[i][1] *= 0.8;  /* 80% of previous up velocity. */
-      pointTime[i] = 0.0;  /* Reset the particles sense of up time. */
-    }
-    motion = 1;
-    pointTime[i] += dt;
-  }
-  theTime += dt;
-  if (!motion && !spin) {
-    if (repeat) {
-      makePointList();
-    } else {
-      glutIdleFunc(NULL);
-    }
-  }
-}
-
-static void
-idle(void)
-{
-  updatePointList();
-  if (spin) {
-    angle += 0.3;
-  }
-  glutPostRedisplay();
-}
-
-static void
-visible(int vis)
-{
-  if (vis == GLUT_VISIBLE) {
-    if (animate && (motion || spin)) {
-      glutIdleFunc(idle);
-    }
-  } else {
-    glutIdleFunc(NULL);
-  }
-}
-
-static void
-redraw(void)
-{
-  int i;
-
-  glDepthMask(GL_TRUE);
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-  glPushMatrix();
-  glRotatef(15.0, 1.0, 0.0, 0.0);
-  glRotatef(angle, 0.0, 1.0, 0.0);
-
-
-  /* Draw the floor. */
-/*  glEnable(GL_TEXTURE_2D);*/
-  glColor3f(0.1, 0.5, 1.0);
-  glBegin(GL_QUADS);
-    glTexCoord2f(0.0, 0.0);
-    glVertex3f(-EDGE, -0.05, -EDGE);
-    glTexCoord2f(20.0, 0.0);
-    glVertex3f(EDGE, -0.05, -EDGE);
-    glTexCoord2f(20.0, 20.0);
-    glVertex3f(EDGE, -0.05, EDGE);
-    glTexCoord2f(0.0, 20.0);
-    glVertex3f(-EDGE, -0.05, EDGE);
-  glEnd();
-
-  /* Allow particles to blend with each other. */
-  glDepthMask(GL_FALSE);
-
-  if (blend)
-     glEnable(GL_BLEND);
-
-  if (sprite) {
-     glEnable(GL_TEXTURE_2D);
-#ifdef GL_ARB_point_sprite
-     glEnable(GL_POINT_SPRITE_ARB);
-#endif
-  }
-
-  glColor3f(1,1,1);
-  glBegin(GL_POINTS);
-    for (i=0; i<numPoints; i++) {
-      /* Draw alive particles. */
-      if (colorList[i] != DEAD) {
-        if (!sprite) glColor4fv(colorSet[colorList[i]]);
-        glVertex3fv(pointList[i]);
-      }
-    }
-  glEnd();
-
-  glDisable(GL_TEXTURE_2D);
-#ifdef GL_ARB_point_sprite
-  glDisable(GL_POINT_SPRITE_ARB);
-#endif
-  glDisable(GL_BLEND);
-
-  glPopMatrix();
-
-  glutSwapBuffers();
-}
-
-/* ARGSUSED2 */
-static void
-mouse(int button, int state, int x, int y)
-{
-  /* Scene can be spun around Y axis using left
-     mouse button movement. */
-  if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
-    moving = 1;
-    begin = x;
-  }
-  if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
-    moving = 0;
-  }
-}
-
-/* ARGSUSED1 */
-static void
-mouseMotion(int x, int y)
-{
-  if (moving) {
-    angle = angle + (x - begin);
-    begin = x;
-    glutPostRedisplay();
-  }
-}
-
-static void
-menu(int option)
-{
-  switch (option) {
-  case 0:
-    makePointList();
-    break;
-#ifdef GL_ARB_point_parameters
-  case 1:
-    glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
-    break;
-  case 2:
-    glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
-    break;
-  case 3:
-    glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-    break;
-#endif
-  case 4:
-    blend = 1;
-    break;
-  case 5:
-    blend = 0;
-    break;
-#ifdef GL_ARB_point_parameters
-  case 6:
-    glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
-    break;
-  case 7:
-    glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
-    break;
-#endif
-  case 8:
-    glEnable(GL_POINT_SMOOTH);
-    smooth = 1;
-    break;
-  case 9:
-    glDisable(GL_POINT_SMOOTH);
-    smooth = 0;
-    break;
-  case 10:
-    glPointSize(16.0);
-    break;
-  case 11:
-    glPointSize(32.0);
-    break;
-  case 12:
-    glPointSize(64.0);
-    break;
-  case 13:
-    spin = 1 - spin;
-    if (animate && (spin || motion)) {
-      glutIdleFunc(idle);
-    } else {
-      glutIdleFunc(NULL);
-    }
-    break;
-  case 14:
-    numPoints = 200;
-    break;
-  case 15:
-    numPoints = 500;
-    break;
-  case 16:
-    numPoints = 1000;
-    break;
-  case 17:
-    numPoints = 2000;
-    break;
-  case 666:
-    exit(0);
-  }
-  glutPostRedisplay();
-}
-
-/* ARGSUSED1 */
-static void
-key(unsigned char c, int x, int y)
-{
-  switch (c) {
-  case 13:
-    animate = 1 - animate;  /* toggle. */
-    if (animate && (motion || spin)) {
-      glutIdleFunc(idle);
-    } else {
-      glutIdleFunc(NULL);
-    }
-    break;
-  case ' ':
-    animate = 1;
-    makePointList();
-    glutIdleFunc(idle);
-    break;
-  case 'o':
-  case 'O':
-    org ^= 1;
-#ifdef GL_VERSION_2_0
-#ifdef GL_ARB_point_parameters
-    glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN,
-                      org ? GL_LOWER_LEFT : GL_UPPER_LEFT);
-#endif
-#endif
-    glutPostRedisplay();
-    break;
-  case 't':
-  case 'T':
-    sprite ^= 1;
-    glutPostRedisplay();
-    break;
-  case 's':
-  case 'S':
-    (smooth ^= 1) ? glEnable(GL_POINT_SMOOTH) : glDisable(GL_POINT_SMOOTH);
-    glutPostRedisplay();
-    break;
-  case '0':
-    glPointSize(1.0);
-    glutPostRedisplay();
-    break;
-  case '1':
-    glPointSize(16.0);
-    glutPostRedisplay();
-    break;
-  case '2':
-    glPointSize(32.0);
-    glutPostRedisplay();
-    break;
-  case '3':
-    glPointSize(64.0);
-    glutPostRedisplay();
-    break;
-  case '4':
-    glPointSize(128.0);
-    glutPostRedisplay();
-    break;
-  case 27:
-    exit(0);
-  }
-}
-
-
-
-static void
-makeSprite(void)
-{
-   GLubyte texture[16][16][4];
-   int i, j;
-
-   if (!glutExtensionSupported("GL_ARB_point_sprite")) {
-      printf("Sorry, this demo requires GL_ARB_point_sprite.\n");
-      exit(0);
-   }
-   if (!glutExtensionSupported("GL_ARB_point_parameters")) {
-      printf("Sorry, this demo requires GL_ARB_point_parameters.\n");
-      exit(0);
-   }
-
-   for (i = 0; i < 16; i++) {
-      for (j = 0; j < 16; j++) {
-         if (spritePattern[i][j]) {
-            texture[i][j][0] = 255;
-            texture[i][j][1] = 255;
-            texture[i][j][2] = 255;
-            texture[i][j][3] = 255;
-         }
-         else {
-            texture[i][j][0] = 255;
-            texture[i][j][1] = 0;
-            texture[i][j][2] = 0;
-            texture[i][j][3] = 0;
-         }
-      }
-   }
-
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE,
-                texture);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-#ifdef GL_ARB_point_sprite
-   glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
-#endif
-}
-
-
-static void
-reshape(int width, int height)
-{
-  GLfloat h = (GLfloat) height / (GLfloat) width;
-
-  glViewport(0, 0, (GLint) width, (GLint) height);
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-  glFrustum(-1.0, 1.0, -h, h, 2.0, 30.0);
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-  glTranslatef(0.0, 0.0, -10.0);
-}
-
-int
-main(int argc, char **argv)
-{
-  int i;
-
-  glutInitWindowSize(600,300);
-  glutInit(&argc, argv);
-  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
-
-  for (i=1; i<argc; i++) {
-    if(!strcmp("-noms", argv[i])) {
-      glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
-      printf("forcing no multisampling\n");
-    } else if(!strcmp("-nomipmaps", argv[i])) {
-      useMipmaps = 0;
-    } else if(!strcmp("-nearest", argv[i])) {
-      linearFiltering = 0;
-    }
-  }
-  glutCreateWindow("sprite blast");
-  glewInit();
-  glutReshapeFunc(reshape);
-  glutDisplayFunc(redraw);
-  glutMouseFunc(mouse);
-  glutMotionFunc(mouseMotion);
-  glutVisibilityFunc(visible);
-  glutKeyboardFunc(key);
-  glutCreateMenu(menu);
-  glutAddMenuEntry("Reset time", 0);
-  glutAddMenuEntry("Constant", 1);
-  glutAddMenuEntry("Linear", 2);
-  glutAddMenuEntry("Quadratic", 3);
-  glutAddMenuEntry("Blend on", 4);
-  glutAddMenuEntry("Blend off", 5);
-  glutAddMenuEntry("Threshold 1", 6);
-  glutAddMenuEntry("Threshold 10", 7);
-  glutAddMenuEntry("Point smooth on", 8);
-  glutAddMenuEntry("Point smooth off", 9);
-  glutAddMenuEntry("Point size 16", 10);
-  glutAddMenuEntry("Point size 32", 11);
-  glutAddMenuEntry("Point size 64", 12);
-  glutAddMenuEntry("Toggle spin", 13);
-  glutAddMenuEntry("200 points ", 14);
-  glutAddMenuEntry("500 points ", 15);
-  glutAddMenuEntry("1000 points ", 16);
-  glutAddMenuEntry("2000 points ", 17);
-  glutAddMenuEntry("Quit", 666);
-  glutAttachMenu(GLUT_RIGHT_BUTTON);
-
-  makePointList();
-  makeSprite();
-
-  glShadeModel(GL_FLAT);
-  glEnable(GL_DEPTH_TEST);
-  glEnable(GL_POINT_SMOOTH);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  glPointSize(32.0);
-#ifdef GL_ARB_point_parameters
-  glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-#endif
-
-  glutMainLoop();
-  return 0;             /* ANSI C requires main to return int. */
-}