From 09c04db3c900e4ed833d060853b48c7ca23697e1 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 14 May 2009 11:07:49 +0200 Subject: r300: Make sure to drop current hardware state reference to texture objects. Fixes potential texture object leaks. --- src/mesa/drivers/dri/r300/r300_context.c | 7 +++++++ src/mesa/drivers/dri/r300/r300_texstate.c | 22 ++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 12bee1a8fb..8f0effd83e 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -43,6 +43,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/matrix.h" #include "main/extensions.h" #include "main/state.h" +#include "main/texobj.h" #include "main/bufferobj.h" #include "swrast/swrast.h" @@ -500,6 +501,7 @@ void r300DestroyContext(__DRIcontextPrivate * driContextPriv) r300ContextPtr r300 = (r300ContextPtr) driContextPriv->driverPrivate; radeonContextPtr radeon = (radeonContextPtr) r300; radeonContextPtr current = ctx ? RADEON_CONTEXT(ctx) : NULL; + int i; if (RADEON_DEBUG & DEBUG_DRI) { fprintf(stderr, "Destroying context !\n"); @@ -553,6 +555,11 @@ void r300DestroyContext(__DRIcontextPrivate * driContextPriv) assert(is_empty_list(&r300->swapped)); } + /* Drop texture object references from current hardware state */ + for (i = 0; i < 8; i++) { + _mesa_reference_texobj(&r300->state.texture.unit[i].texobj, NULL); + } + radeonCleanupContext(&r300->radeon); #ifdef USER_BUFFERS diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index abe613e27b..f6ae4b675b 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -557,12 +557,15 @@ static GLboolean r300UpdateTexture(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; - struct gl_texture_object *tObj = texUnit->_Current; - r300TexObjPtr t = (r300TexObjPtr) tObj->DriverData; + struct gl_texture_object *tObj = texUnit->_ReallyEnabled ? + texUnit->_Current : NULL; + r300TexObjPtr t = tObj ? (r300TexObjPtr) tObj->DriverData : NULL; /* Fallback if there's a texture border */ - if (tObj->Image[0][tObj->BaseLevel]->Border > 0) - return GL_FALSE; + if (tObj && tObj->Image[0][tObj->BaseLevel]->Border > 0) { + tObj = NULL; + t = NULL; + } /* Update state if this is a different texture object to last * time. @@ -579,11 +582,14 @@ static GLboolean r300UpdateTexture(GLcontext * ctx, int unit) } _mesa_reference_texobj(&rmesa->state.texture.unit[unit].texobj, tObj); - t->base.bound |= (1 << unit); - driUpdateTextureLRU(&t->base); /* XXX: should be locked! */ + + if (t) { + t->base.bound |= (1 << unit); + driUpdateTextureLRU(&t->base); /* XXX: should be locked! */ + } } - return !t->border_fallback; + return !t || !t->border_fallback; } void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname, @@ -651,7 +657,7 @@ static GLboolean r300UpdateTextureUnit(GLcontext * ctx, int unit) } else if (texUnit->_ReallyEnabled) { return GL_FALSE; } else { - return GL_TRUE; + return r300UpdateTexture(ctx, unit); } } -- cgit v1.2.3 From 65b9cd74e3145b416f2c9695a0c3bc7bd6b85e25 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 15 May 2009 08:02:40 -0600 Subject: docs: updates from the 7.4 branch --- docs/news.html | 5 ++-- docs/relnotes-7.4.2.html | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ docs/relnotes.html | 6 ++-- 3 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 docs/relnotes-7.4.2.html diff --git a/docs/news.html b/docs/news.html index 98cee9b8b8..8cf2f91dd0 100644 --- a/docs/news.html +++ b/docs/news.html @@ -11,9 +11,10 @@

News

-

May tbd, 2009

+

May 15, 2009

-Mesa 7.5 is released. +Mesa 7.4.2 is released. +This is a stable release fixing bugs since the 7.4.1 release.

diff --git a/docs/relnotes-7.4.2.html b/docs/relnotes-7.4.2.html new file mode 100644 index 0000000000..7d066e418e --- /dev/null +++ b/docs/relnotes-7.4.2.html @@ -0,0 +1,74 @@ + + +Mesa Release Notes + + + + + + + +

Mesa 7.4.2 Release Notes / May 15, 2009

+ +

+Mesa 7.4.2 is a stable development release fixing bugs since the 7.4.1 release. +

+

+Mesa 7.4.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

+

+See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

+ + +

MD5 checksums

+
+172f5193154dad731387f97bd44ab68f  MesaLib-7.4.2.tar.gz
+b10a76e32bde4645cfc34ea0416d7d8b  MesaLib-7.4.2.tar.bz2
+cc6dfc2efd424cc342b84e6bcd78ce5d  MesaLib-7.4.2.zip
+182a7e78aa7a480b3650a5c956dbddd1  MesaDemos-7.4.2.tar.gz
+bf559a0485667a3bfa4513a23501579b  MesaDemos-7.4.2.tar.bz2
+5379e622b65e8c22022dba34aeb6f4f9  MesaDemos-7.4.2.zip
+7cc43c1c35bf6a279a16e063dea3b8c5  MesaGLUT-7.4.2.tar.gz
+e0dfc44d537904a030861e5b3c760c11  MesaGLUT-7.4.2.tar.bz2
+4a6cf5bbbac190d6ba97448b3098b7f4  MesaGLUT-7.4.2.zip
+
+ + +

Bug fixes

+ + + + +

Driver Status

+ +
+Driver			Status
+----------------------	----------------------
+DRI drivers		varies with the driver
+XMesa/GLX (on Xlib)	implements OpenGL 2.1
+OSMesa (off-screen)	implements OpenGL 2.1
+Windows/Win32		implements OpenGL 2.1
+Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
+SVGA			unsupported
+Wind River UGL		unsupported
+DJGPP			unsupported
+GGI			unsupported
+BeOS			unsupported
+Allegro			unsupported
+D3D			unsupported
+
+ + + diff --git a/docs/relnotes.html b/docs/relnotes.html index 298352038c..ca808af64c 100644 --- a/docs/relnotes.html +++ b/docs/relnotes.html @@ -10,8 +10,8 @@

Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 7.5) designate new developmental releases. -Even numbered versions (such as 7.4) designate stable releases. +Odd numbered versions (such as 6.5) designate new developmental releases. +Even numbered versions (such as 6.4) designate stable releases.

@@ -20,7 +20,7 @@ The release notes summarize what's new or changed in each Mesa release.