diff options
| -rw-r--r-- | docs/relnotes-7.6.1.html | 2 | ||||
| -rw-r--r-- | progs/demos/projtex.c | 1 | ||||
| -rwxr-xr-x | progs/fp/Makefile | 1 | ||||
| -rw-r--r-- | progs/fp/tri-inv.c | 2 | ||||
| -rw-r--r-- | progs/samples/Makefile | 2 | ||||
| -rw-r--r-- | progs/samples/rgbtoppm.c | 4 | ||||
| -rw-r--r-- | progs/tests/texdown.c | 3 | ||||
| -rw-r--r-- | progs/vpglsl/vp-tris.c | 12 | ||||
| -rw-r--r-- | progs/xdemos/glxinfo.c | 15 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/Makefile | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common.c | 23 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common.h | 1 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_context.h | 4 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_state.c | 25 | 
14 files changed, 58 insertions, 39 deletions
| diff --git a/docs/relnotes-7.6.1.html b/docs/relnotes-7.6.1.html index d155cf5a67..752f9cac64 100644 --- a/docs/relnotes-7.6.1.html +++ b/docs/relnotes-7.6.1.html @@ -56,6 +56,8 @@ tbd  <li>Fixed clipping / provoking vertex bugs in i965 driver.  <li>Assorted build fixes for AIX.  <li>Endianness fixes for the DRI swrast driver (bug 22767).</li> +<li>Point sprite fixes for i915/945 driver. +<li>Fixed assorted memory leaks (usually on error paths)  </ul>  <h2>Changes</h2> diff --git a/progs/demos/projtex.c b/progs/demos/projtex.c index ad205c7413..503cf5de08 100644 --- a/progs/demos/projtex.c +++ b/progs/demos/projtex.c @@ -248,6 +248,7 @@ loadImageTextures(void)       free(texData3);       free(texData4); +     free(image);    }  } diff --git a/progs/fp/Makefile b/progs/fp/Makefile index 681928cf26..d77cd32b4d 100755 --- a/progs/fp/Makefile +++ b/progs/fp/Makefile @@ -17,6 +17,7 @@ SOURCES = \  	tri-depth2.c \  	tri-depthwrite.c \  	tri-depthwrite2.c \ +	tri-inv.c \          tri-param.c \          fp-tri.c diff --git a/progs/fp/tri-inv.c b/progs/fp/tri-inv.c index 7e8d8c5ce2..7e490fa61c 100644 --- a/progs/fp/tri-inv.c +++ b/progs/fp/tri-inv.c @@ -56,7 +56,7 @@ static void Key(unsigned char key, int x, int y)        case 27:  	exit(1);        default: -	return; +	break;      }      glutPostRedisplay(); diff --git a/progs/samples/Makefile b/progs/samples/Makefile index b300e38b9c..64fa47addb 100644 --- a/progs/samples/Makefile +++ b/progs/samples/Makefile @@ -10,7 +10,7 @@ LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) $(T  LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS)  PROGS = accum bitmap1 bitmap2 blendeq blendxor copy cursor depth eval fog \ -	font line logo nurb olympic overlay point prim quad select \ +	font line logo nurb olympic overlay point prim rgbtoppm quad select \  	shape sphere star stencil stretch texture tri wave diff --git a/progs/samples/rgbtoppm.c b/progs/samples/rgbtoppm.c index 116d9a8cfa..56ca5b0efe 100644 --- a/progs/samples/rgbtoppm.c +++ b/progs/samples/rgbtoppm.c @@ -86,7 +86,8 @@ static ImageRec *ImageOpen(char *fileName)          exit(1);      }      if ((image->file = fopen(fileName, "rb")) == NULL) { -	return NULL; +        free(image); +        return NULL;      }      fread(image, 1, 12, image->file); @@ -224,6 +225,7 @@ read_rgb_texture(char *name, int *width, int *height)        if (gbuf) free(gbuf);        if (bbuf) free(bbuf);        if (abuf) free(abuf); +      ImageClose(image);         return NULL;      }      ptr = base; 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)        ; diff --git a/progs/vpglsl/vp-tris.c b/progs/vpglsl/vp-tris.c index b2b0508091..6a1fa3d3bf 100644 --- a/progs/vpglsl/vp-tris.c +++ b/progs/vpglsl/vp-tris.c @@ -84,9 +84,9 @@ static void check_link(GLuint prog)  static void setup_uniforms()  {     { -      GLuint loc1f = glGetUniformLocationARB(program, "Offset1f"); -      GLuint loc2f = glGetUniformLocationARB(program, "Offset2f"); -      GLuint loc4f = glGetUniformLocationARB(program, "Offset4f"); +      GLint loc1f = glGetUniformLocationARB(program, "Offset1f"); +      GLint loc2f = glGetUniformLocationARB(program, "Offset2f"); +      GLint loc4f = glGetUniformLocationARB(program, "Offset4f");        GLfloat vecKer[] =           { 1.0, 0.0, 0.0,  1.0,             0.0, 1.0, 0.0,  1.0, @@ -105,9 +105,9 @@ static void setup_uniforms()     }     { -      GLuint loc1f = glGetUniformLocationARB(program, "KernelValue1f"); -      GLuint loc2f = glGetUniformLocationARB(program, "KernelValue2f"); -      GLuint loc4f = glGetUniformLocationARB(program, "KernelValue4f"); +      GLint loc1f = glGetUniformLocationARB(program, "KernelValue1f"); +      GLint loc2f = glGetUniformLocationARB(program, "KernelValue2f"); +      GLint loc4f = glGetUniformLocationARB(program, "KernelValue4f");        GLfloat vecKer[] =           { 1.0, 0.0, 0.0,  0.25,             0.0, 1.0, 0.0,  0.25, diff --git a/progs/xdemos/glxinfo.c b/progs/xdemos/glxinfo.c index b182a3091d..23df82f6f9 100644 --- a/progs/xdemos/glxinfo.c +++ b/progs/xdemos/glxinfo.c @@ -401,6 +401,10 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits)     root = RootWindow(dpy, scrnum); +   /* +    * Find a basic GLX visual.  We'll then create a rendering context and +    * query various info strings. +    */     visinfo = glXChooseVisual(dpy, scrnum, attribSingle);     if (!visinfo)        visinfo = glXChooseVisual(dpy, scrnum, attribDouble); @@ -409,24 +413,29 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits)        ctx = glXCreateContext( dpy, visinfo, NULL, allowDirect );  #ifdef GLX_VERSION_1_3 -   { +   /* Try glXChooseFBConfig() if glXChooseVisual didn't work. +    * XXX when would that happen? +    */ +   if (!visinfo) {        int fbAttribSingle[] = {  	 GLX_RENDER_TYPE,   GLX_RGBA_BIT,  	 GLX_RED_SIZE,      1,  	 GLX_GREEN_SIZE,    1,  	 GLX_BLUE_SIZE,     1, -	 GLX_DOUBLEBUFFER,  GL_TRUE, +	 GLX_DOUBLEBUFFER,  GL_FALSE,  	 None };        int fbAttribDouble[] = {  	 GLX_RENDER_TYPE,   GLX_RGBA_BIT,  	 GLX_RED_SIZE,      1,  	 GLX_GREEN_SIZE,    1,  	 GLX_BLUE_SIZE,     1, +	 GLX_DOUBLEBUFFER,  GL_TRUE,  	 None };        GLXFBConfig *configs = NULL;        int nConfigs; -      if (!visinfo) +      configs = glXChooseFBConfig(dpy, scrnum, fbAttribSingle, &nConfigs); +      if (!configs)  	 configs = glXChooseFBConfig(dpy, scrnum, fbAttribDouble, &nConfigs);        if (configs) { diff --git a/src/gallium/drivers/r300/Makefile b/src/gallium/drivers/r300/Makefile index d13bb7a36b..121b65063f 100644 --- a/src/gallium/drivers/r300/Makefile +++ b/src/gallium/drivers/r300/Makefile @@ -35,4 +35,4 @@ include ../../Makefile.template  .PHONY : $(COMPILER_ARCHIVE)  $(COMPILER_ARCHIVE): -	cd $(TOP)/src/mesa/drivers/dri/r300/compiler; make +	$(MAKE) -C $(TOP)/src/mesa/drivers/dri/r300/compiler diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 184287aa44..9b64c21685 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -262,29 +262,6 @@ void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h)  	}  } -void radeonPolygonStipplePreKMS( GLcontext *ctx, const GLubyte *mask ) -{ -   radeonContextPtr radeon = RADEON_CONTEXT(ctx); -   GLuint i; -   drm_radeon_stipple_t stipple; - -   /* Must flip pattern upside down. -   */ -   for ( i = 0 ; i < 32 ; i++ ) { -      stipple.mask[31 - i] = ((GLuint *) mask)[i]; -   } - -   /* TODO: push this into cmd mechanism -   */ -   radeon_firevertices(radeon); -   LOCK_HARDWARE( radeon ); - -   drmCommandWrite( radeon->dri.fd, DRM_RADEON_STIPPLE, -	 &stipple, sizeof(stipple) ); -   UNLOCK_HARDWARE( radeon ); -} - -  /* ================================================================   * SwapBuffers with client-side throttling   */ diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h b/src/mesa/drivers/dri/radeon/radeon_common.h index def0cc17a9..0608fe2418 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.h +++ b/src/mesa/drivers/dri/radeon/radeon_common.h @@ -10,7 +10,6 @@ void radeonRecalcScissorRects(radeonContextPtr radeon);  void radeonSetCliprects(radeonContextPtr radeon);  void radeonUpdateScissor( GLcontext *ctx );  void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h); -void radeonPolygonStipplePreKMS( GLcontext *ctx, const GLubyte *mask );  void radeonWaitForIdleLocked(radeonContextPtr radeon);  extern uint32_t radeonGetAge(radeonContextPtr radeon); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.h b/src/mesa/drivers/dri/radeon/radeon_context.h index 4e2c52c835..12ab33a009 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_context.h @@ -331,8 +331,12 @@ struct r100_hw_state {  	struct radeon_state_atom stp;  }; +struct radeon_stipple_state { +	GLuint mask[32]; +};  struct r100_state { +	struct radeon_stipple_state stipple;  	struct radeon_texture_state texture;  }; diff --git a/src/mesa/drivers/dri/radeon/radeon_state.c b/src/mesa/drivers/dri/radeon/radeon_state.c index 4d0d35ee0c..f6c733ab20 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state.c +++ b/src/mesa/drivers/dri/radeon/radeon_state.c @@ -550,6 +550,31 @@ static void radeonPolygonOffset( GLcontext *ctx,     rmesa->hw.zbs.cmd[ZBS_SE_ZBIAS_CONSTANT] = constant.ui32;  } +static void radeonPolygonStipplePreKMS( GLcontext *ctx, const GLubyte *mask ) +{ +   r100ContextPtr rmesa = R100_CONTEXT(ctx); +   GLuint i; +   drm_radeon_stipple_t stipple; + +   /* Must flip pattern upside down. +    */ +   for ( i = 0 ; i < 32 ; i++ ) { +      rmesa->state.stipple.mask[31 - i] = ((GLuint *) mask)[i]; +   } + +   /* TODO: push this into cmd mechanism +    */ +   radeon_firevertices(&rmesa->radeon); +   LOCK_HARDWARE( &rmesa->radeon ); + +   /* FIXME: Use window x,y offsets into stipple RAM. +    */ +   stipple.mask = rmesa->state.stipple.mask; +   drmCommandWrite( rmesa->radeon.dri.fd, DRM_RADEON_STIPPLE, +		    &stipple, sizeof(drm_radeon_stipple_t) ); +   UNLOCK_HARDWARE( &rmesa->radeon ); +} +  static void radeonPolygonMode( GLcontext *ctx, GLenum face, GLenum mode )  {     r100ContextPtr rmesa = R100_CONTEXT(ctx); | 
