diff --git a/Mesa.changes b/Mesa.changes index 7a54372..f581712 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed Sep 15 03:54:37 UTC 2010 - sndirsch@novell.com + +- Mesa git master #fd328a (2010-09-11) +- commit-4ebf07a.diff + * glx: Don't destroy DRI2 drawables for legacy glx drawables + (bfo #30109) + ------------------------------------------------------------------- Thu Sep 9 12:45:55 UTC 2010 - sndirsch@novell.com diff --git a/Mesa.spec b/Mesa.spec index 747632d..c233462 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -43,7 +43,7 @@ Provides: XFree86-Mesa-64bit = %{version} Mesa-64bit < %{version} %endif # Summary: System for rendering interactive 3-D graphics -Source: MesaLib-%{_version}-2dfd348.tar.bz2 +Source: MesaLib-%{_version}-afd328a.tar.bz2 Source1: MesaDemos-%{_version}.tar.bz2 Source2: baselibs.conf Source3: README.updates @@ -54,6 +54,8 @@ Patch1: dri_driver_dir.diff # to be upstreamed Patch8: egl-buildfix.diff Patch9: Mesa_indirect_old_xserver_compatibility.diff +# already upstream +Patch10: commit-4ebf07a.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -145,6 +147,7 @@ sed -i 's/REPLACE/%_lib/g' src/glx/Makefile sed -i 's/REPLACE/%_lib/g' src/egl/drivers/dri2/Makefile %patch8 %patch9 -p0 +%patch10 -p1 %build diff --git a/MesaLib-7.8.2-2dfd348.tar.bz2 b/MesaLib-7.8.2-2dfd348.tar.bz2 deleted file mode 100644 index ff952cd..0000000 --- a/MesaLib-7.8.2-2dfd348.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5067ec55c04cfc5b16d0fcb533c13452bee02fa1e2c6f805c117982d3f8af031 -size 6160002 diff --git a/MesaLib-7.8.2-afd328a.tar.bz2 b/MesaLib-7.8.2-afd328a.tar.bz2 new file mode 100644 index 0000000..818c437 --- /dev/null +++ b/MesaLib-7.8.2-afd328a.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32f9a9f0f51318bc4fe9f99a52a6ab5d5a59ecb58c5c313fe672bb056d13be86 +size 6325581 diff --git a/commit-4ebf07a.diff b/commit-4ebf07a.diff new file mode 100644 index 0000000..88a9b33 --- /dev/null +++ b/commit-4ebf07a.diff @@ -0,0 +1,51 @@ +commit 4ebf07a426771b62123e5fcb5a8be0de24037af1 +Author: Kristian Høgsberg +Date: Mon Sep 13 08:39:42 2010 -0400 + + glx: Don't destroy DRI2 drawables for legacy glx drawables + + For GLX 1.3 drawables, we can destroy the DRI2 drawable when the GLX + drawable is destroyed. However, for legacy drawables, there os no + good way of knowing when the application is done with it, so we just + let the DRI2 drawable linger on the server. The server will destroy + the DRI2 drawable when it destroys the X drawable or the client exits + anyway. + + https://bugs.freedesktop.org/show_bug.cgi?id=30109 + +diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c +index e38a40c..8247588 100644 +--- a/src/glx/dri2_glx.c ++++ b/src/glx/dri2_glx.c +@@ -210,7 +210,17 @@ dri2DestroyDrawable(__GLXDRIdrawable *base) + + __glxHashDelete(pdp->dri2Hash, pdraw->base.xDrawable); + (*psc->core->destroyDrawable) (pdraw->driDrawable); +- DRI2DestroyDrawable(psc->base.dpy, pdraw->base.xDrawable); ++ ++ /* If it's a GLX 1.3 drawables, we can destroy the DRI2 drawable ++ * now, as the application explicitly asked to destroy the GLX ++ * drawable. Otherwise, for legacy drawables, we let the DRI2 ++ * drawable linger on the server, since there's no good way of ++ * knowing when the application is done with it. The server will ++ * destroy the DRI2 drawable when it destroys the X drawable or the ++ * client exits anyway. */ ++ if (pdraw->base.xDrawable != pdraw->base.drawable) ++ DRI2DestroyDrawable(psc->base.dpy, pdraw->base.xDrawable); ++ + Xfree(pdraw); + } + +diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c +index 1759e57..60b999f 100644 +--- a/src/mesa/vbo/vbo_exec_array.c ++++ b/src/mesa/vbo/vbo_exec_array.c +@@ -490,6 +490,8 @@ vbo_exec_DrawArrays(GLenum mode, GLint start, GLsizei count) + if (!_mesa_validate_DrawArrays( ctx, mode, start, count )) + return; + ++ vbo_exec_FlushVertices_internal( ctx, GL_FALSE ); ++ + FLUSH_CURRENT( ctx, 0 ); + + if (!_mesa_valid_to_render(ctx, "glDrawArrays")) { diff --git a/dri_driver_dir.diff b/dri_driver_dir.diff index 476421d..3eaf99b 100644 --- a/dri_driver_dir.diff +++ b/dri_driver_dir.diff @@ -12,9 +12,9 @@ --- src/glx/Makefile.orig 2010-08-29 00:02:39.000000000 +0200 +++ src/glx/Makefile 2010-08-29 04:30:33.000000000 +0200 @@ -2,7 +2,7 @@ - include $(TOP)/configs/current + endif - EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT \ + EXTRA_DEFINES = $(EXTRA_DEFINES_XF86VIDMODE) -D_REENTRANT \ - -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" + -DDEFAULT_DRIVER_DIR=\"/usr/REPLACE/dri/updates:/usr/REPLACE/dri\"