From c36ba22b1e80982ba2d89ac9ef68c383f0ae1968 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Tue, 6 Apr 2010 18:16:21 -0400 Subject: [PATCH] mesa: Add version 7.8.1 with invalidate compat removal. --- media-libs/mesa/Manifest | 3 + ...Delete-invalidate-compatibility-code.patch | 64 +++++ media-libs/mesa/mesa-7.8.1.ebuild | 224 ++++++++++++++++++ 3 files changed, 291 insertions(+) create mode 100644 media-libs/mesa/files/0001-dri2-Delete-invalidate-compatibility-code.patch create mode 100644 media-libs/mesa/mesa-7.8.1.ebuild diff --git a/media-libs/mesa/Manifest b/media-libs/mesa/Manifest index 9823daf..921d60c 100644 --- a/media-libs/mesa/Manifest +++ b/media-libs/mesa/Manifest @@ -1,3 +1,6 @@ +AUX 0001-dri2-Delete-invalidate-compatibility-code.patch 2180 RMD160 f9e1a3c18c6135947fa5d91937e8448945c8607f SHA1 f23f85256e1bd18c419d12e22c643afa8c43d0cd SHA256 84ca714cba01f06e38b7ebf9b36baea23ece112d530c92846cb34b37a7caabe2 AUX 0001-i965-Fix-the-response-len-of-masked-sampler-messages.patch 2137 RMD160 08118ad35fec06fa5aeb7ca828cf763178158fb5 SHA1 40f5a8767d87244880544a26c6b1cdbd02edef22 SHA256 7a9ab83d98fced49ae2668b7e1f9a01a3a865246e0599bba61a4288af5e92773 DIST MesaLib-7.7.1.tar.bz2 4990250 RMD160 2f0dcc017aa97c364538a9fd29d5cdb247ab7880 SHA1 31500d7e3e3bbf9288b3bee4fbddd26a5e0b7782 SHA256 dc44f73e50d2ccdb96e7b72cc71e56024c198a228112c69c5e86dbc610fd4e84 +DIST MesaLib-7.8.1.tar.bz2 5137426 RMD160 b7b989342dc80a2a12456c17882e652db7bd86cd SHA1 1c15c62f845ef9b648366aa804410f68f7f79172 SHA256 b0b46e5abfd75db44501e308125fa92bcf1c91d91e97a043a3b1764cfa0907fa EBUILD mesa-7.7.1.ebuild 6042 RMD160 1a975d055edfae21b0deb19a06a09c1fbc3f4299 SHA1 b6c204b0d760184d9028fe3adc6d86e91d71ed48 SHA256 84deea5a48d4c11981523fe8d2e63defc33b1cfe6ee81d5b447074d4797fc0ca +EBUILD mesa-7.8.1.ebuild 6023 RMD160 a9b90f7d560e86ce4e962612eb1df687d22f0a41 SHA1 223295dfb743695d342738c3f64964884d7653f6 SHA256 757be823ba399dab165aea8316b359adee6e15cb16073f70b6fd1aa90813f8c0 diff --git a/media-libs/mesa/files/0001-dri2-Delete-invalidate-compatibility-code.patch b/media-libs/mesa/files/0001-dri2-Delete-invalidate-compatibility-code.patch new file mode 100644 index 0000000..f185a92 --- /dev/null +++ b/media-libs/mesa/files/0001-dri2-Delete-invalidate-compatibility-code.patch @@ -0,0 +1,64 @@ +From 792e1d05c04a65d8cdabde131e28c5fbb700a609 Mon Sep 17 00:00:00 2001 +From: Nick Bowler +Date: Tue, 6 Apr 2010 18:05:25 -0400 +Subject: [PATCH] dri2: Delete invalidate compatibility code. + +Commit 61d26bc82e7c4100a ("dri2: Event driven buffer validation.") +introduced severe stuttering on my GM45 when using X server 1.7. +This appears to have been caused by the compatibility code added +to handle the case where the server does not emit invalidate events. + +Removing the code entirely solves the issue. + +Fixes fdo bug #27277. + +Signed-off-by: Nick Bowler +--- + src/glx/dri2_glx.c | 10 ---------- + 1 files changed, 0 insertions(+), 10 deletions(-) + +diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c +index c4b5cb9..582e4a4 100644 +--- a/src/glx/dri2_glx.c ++++ b/src/glx/dri2_glx.c +@@ -67,7 +67,6 @@ struct __GLXDRIdisplayPrivateRec + int driMinor; + int driPatch; + int swapAvailable; +- int invalidateAvailable; + }; + + struct __GLXDRIcontextPrivateRec +@@ -327,10 +326,6 @@ dri2FlushFrontBuffer(__DRIdrawable *driDrawable, void *loaderPrivate) + __GLXdisplayPrivate *priv = __glXInitialize(pdraw->base.psc->dpy); + __GLXDRIdisplayPrivate *pdp = (__GLXDRIdisplayPrivate *)priv->dri2Display; + +- /* Old servers don't send invalidate events */ +- if (!pdp->invalidateAvailable) +- dri2InvalidateBuffers(priv->dpy, pdraw->base.drawable); +- + dri2WaitGL(loaderPrivate); + } + +@@ -391,10 +386,6 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor, + (*pdraw->psc->f->flush)(pdraw->driDrawable); + #endif + +- /* Old servers don't send invalidate events */ +- if (!pdp->invalidateAvailable) +- dri2InvalidateBuffers(dpyPriv->dpy, pdraw->drawable); +- + /* Old servers can't handle swapbuffers */ + if (!pdp->swapAvailable) { + dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height); +@@ -682,7 +673,6 @@ dri2CreateDisplay(Display * dpy) + + pdp->driPatch = 0; + pdp->swapAvailable = (pdp->driMinor >= 2); +- pdp->invalidateAvailable = (pdp->driMinor >= 3); + + pdp->base.destroyDisplay = dri2DestroyDisplay; + pdp->base.createScreen = dri2CreateScreen; +-- +1.6.4.4 + diff --git a/media-libs/mesa/mesa-7.8.1.ebuild b/media-libs/mesa/mesa-7.8.1.ebuild new file mode 100644 index 0000000..28085db --- /dev/null +++ b/media-libs/mesa/mesa-7.8.1.ebuild @@ -0,0 +1,224 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.8.1.ebuild,v 1.1 2010/04/06 08:43:11 scarabeus Exp $ + +EAPI=3 + +EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa" + +if [[ ${PV} = 9999* ]]; then + GIT_ECLASS="git" + EXPERIMENTAL="true" +fi + +inherit autotools multilib flag-o-matic ${GIT_ECLASS} portability + +OPENGL_DIR="xorg-x11" + +MY_PN="${PN/m/M}" +MY_P="${MY_PN}-${PV/_/-}" +MY_SRC_P="${MY_PN}Lib-${PV/_/-}" +DESCRIPTION="OpenGL-like graphic library for Linux" +HOMEPAGE="http://mesa3d.sourceforge.net/" + +#SRC_PATCHES="mirror://gentoo/${P}-gentoo-patches-01.tar.bz2" +if [[ $PV = 9999* ]]; then + SRC_URI="${SRC_PATCHES}" +else + SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/${PV}/${MY_SRC_P}.tar.bz2 + ${SRC_PATCHES}" +fi + +LICENSE="LGPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd" + +VIDEO_CARDS="intel mach64 mga none nouveau r128 radeon radeonhd savage sis svga tdfx via" +for card in ${VIDEO_CARDS}; do + IUSE_VIDEO_CARDS+=" video_cards_${card}" +done + +IUSE="${IUSE_VIDEO_CARDS} + debug +gallium motif +nptl pic selinux +xcb kernel_FreeBSD" + +# keep correct libdrm and dri2proto dep +# keep blocks in rdepend for binpkg +RDEPEND=" + !=app-admin/eselect-opengl-1.1.1-r2 + dev-libs/expat + >=x11-libs/libdrm-2.4.19 + x11-libs/libICE + x11-libs/libX11[xcb?] + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXi + x11-libs/libXmu + x11-libs/libXxf86vm + motif? ( x11-libs/openmotif ) +" +DEPEND="${RDEPEND} + dev-util/pkgconfig + x11-misc/makedepend + >=x11-proto/dri2proto-2.2 + >=x11-proto/glproto-1.4.11 + x11-proto/inputproto + >=x11-proto/xextproto-7.0.99.1 + x11-proto/xf86driproto + x11-proto/xf86vidmodeproto +" + +S="${WORKDIR}/${MY_P}" + +# It is slow without texrels, if someone wants slow +# mesa without texrels +pic use is worth shot +QA_EXECSTACK="usr/lib*/opengl/xorg-x11/lib/libGL.so*" +QA_WX_LOAD="usr/lib*/opengl/xorg-x11/lib/libGL.so*" + +# Think about: ggi, svga, fbcon, no-X configs + +pkg_setup() { + # gcc 4.2 has buggy ivopts + if [[ $(gcc-version) = "4.2" ]]; then + append-flags -fno-ivopts + fi + + # recommended by upstream + append-flags -ffast-math +} + +src_unpack() { + [[ $PV = 9999* ]] && git_src_unpack || unpack ${A} +} + +src_prepare() { + # apply patches + if [[ ${PV} != 9999* && -n ${SRC_PATCHES} ]]; then + EPATCH_FORCE="yes" \ + EPATCH_SOURCE="${WORKDIR}/patches" \ + EPATCH_SUFFIX="patch" \ + epatch + fi + # FreeBSD 6.* doesn't have posix_memalign(). + [[ ${CHOST} == *-freebsd6.* ]] && \ + sed -i -e "s/-DHAVE_POSIX_MEMALIGN//" configure.ac + + epatch "${FILESDIR}/0001-dri2-Delete-invalidate-compatibility-code.patch" + + eautoreconf +} + +src_configure() { + local myconf r600 + + # Configurable DRI drivers + driver_enable swrast + driver_enable video_cards_intel i810 i915 i965 + driver_enable video_cards_mach64 mach64 + driver_enable video_cards_mga mga + driver_enable video_cards_r128 r128 + # ATI has two implementations as video_cards + driver_enable video_cards_radeon radeon r200 r300 r600 + driver_enable video_cards_radeonhd r300 r600 + driver_enable video_cards_savage savage + driver_enable video_cards_sis sis + driver_enable video_cards_tdfx tdfx + driver_enable video_cards_via unichrome + + myconf="${myconf} $(use_enable gallium)" + if use gallium; then + elog "You have enabled gallium infrastructure." + elog "This infrastructure currently support these drivers:" + elog " Intel: works only i915." + elog " Nouveau: Support for nVidia NV30 and later cards." + elog " Radeon: Newest implementation of r300-r500 driver." + elog " Svga: VMWare Virtual GPU driver." + echo + myconf="${myconf} + --with-state-trackers=glx,dri,egl + $(use_enable video_cards_svga gallium-svga) + $(use_enable video_cards_nouveau gallium-nouveau) + $(use_enable video_cards_intel gallium-intel)" + if use video_cards_radeon || use video_cards_radeonhd; then + myconf="${myconf} --enable-gallium-radeon" + else + myconf="${myconf} --disable-gallium-radeon" + fi + else + if use video_cards_nouveau || use video_cards_svga; then + elog "SVGA and nouveau drivers are available only via gallium interface." + elog "Enable gallium useflag if you want to use them." + fi + fi + + # --with-driver=dri|xlib|osmesa || do we need osmesa? + econf \ + --disable-option-checking \ + --with-driver=dri \ + --disable-glut \ + --without-demos \ + $(use_enable debug) \ + $(use_enable motif glw) \ + $(use_enable motif) \ + $(use_enable nptl glx-tls) \ + $(use_enable xcb) \ + $(use_enable !pic asm) \ + --with-dri-drivers=${DRI_DRIVERS} \ + ${myconf} +} + +src_install() { + emake DESTDIR="${D}" install || die "Installation failed" + + # Remove redundant headers + # GLUT thing + rm -f "${D}"/usr/include/GL/glut*.h || die "Removing glut include failed." + # Glew includes + rm -f "${D}"/usr/include/GL/{glew,glxew,wglew}.h \ + || die "Removing glew includes failed." + + # Move libGL and others from /usr/lib to /usr/lib/opengl/blah/lib + # because user can eselect desired GL provider. + ebegin "Moving libGL and friends for dynamic switching" + dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/{lib,extensions,include} + local x + for x in "${D}"/usr/$(get_libdir)/libGL.{la,a,so*}; do + if [ -f ${x} -o -L ${x} ]; then + mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/lib \ + || die "Failed to move ${x}" + fi + done + for x in "${D}"/usr/include/GL/{gl.h,glx.h,glext.h,glxext.h}; do + if [ -f ${x} -o -L ${x} ]; then + mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/include \ + || die "Failed to move ${x}" + fi + done + eend $? +} + +pkg_postinst() { + # Switch to the xorg implementation. + echo + eselect opengl set --use-old ${OPENGL_DIR} +} + +# $1 - VIDEO_CARDS flag +# other args - names of DRI drivers to enable +driver_enable() { + case $# in + # for enabling unconditionally + 1) + DRI_DRIVERS+=",$1" + ;; + *) + if use $1; then + shift + for i in $@; do + DRI_DRIVERS+=",${i}" + done + fi + ;; + esac +} -- 2.43.2