summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Bainbridge <chrb@gentoo.org>2005-07-29 12:05:19 +0000
committerChris Bainbridge <chrb@gentoo.org>2005-07-29 12:05:19 +0000
commitb8e5850e5a976503823584c876583e2083ab3aa4 (patch)
tree9435c0a1e047e87d1b0489e04c25e6039818c904 /media-video
parentNew version (latest from Debian testing). Install as make for BSD userland sy... (diff)
downloadgentoo-2-b8e5850e5a976503823584c876583e2083ab3aa4.tar.gz
gentoo-2-b8e5850e5a976503823584c876583e2083ab3aa4.tar.bz2
gentoo-2-b8e5850e5a976503823584c876583e2083ab3aa4.zip
Remove 8.14.13-amd64.patch. Add fglrx-8.14.13-alt-2.6.12-agp.patch, ioctl32.patch, p1.patch. Bug #88767.
Diffstat (limited to 'media-video')
-rw-r--r--media-video/ati-drivers/ChangeLog10
-rw-r--r--media-video/ati-drivers/ati-drivers-8.14.13-r2.ebuild253
-rw-r--r--media-video/ati-drivers/files/fglrx-8.14.13-alt-2.6.12-agp.patch98
-rw-r--r--media-video/ati-drivers/files/ioctl32.patch14
-rw-r--r--media-video/ati-drivers/files/p1.patch66
5 files changed, 440 insertions, 1 deletions
diff --git a/media-video/ati-drivers/ChangeLog b/media-video/ati-drivers/ChangeLog
index c12ae13ea184..6c2c3a555c3a 100644
--- a/media-video/ati-drivers/ChangeLog
+++ b/media-video/ati-drivers/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for media-video/ati-drivers
# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/ati-drivers/ChangeLog,v 1.99 2005/06/25 09:19:44 lu_zero Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/ati-drivers/ChangeLog,v 1.100 2005/07/29 12:05:19 chrb Exp $
+
+*ati-drivers-8.14.13-r2 (29 Jul 2005)
+
+ 29 Jul 2005; Chris Bainbridge <chrb@gentoo.org> +files/ioctl32.patch,
+ +files/fglrx-8.14.13-alt-2.6.12-agp.patch, +files/p1.patch,
+ +ati-drivers-8.14.13-r2.ebuild:
+ Remove 8.14.13-amd64.patch. Add fglrx-8.14.13-alt-2.6.12-agp.patch,
+ ioctl32.patch, p1.patch. Bug #88767.
*ati-drivers-8.13.4 (25 Jun 2005)
diff --git a/media-video/ati-drivers/ati-drivers-8.14.13-r2.ebuild b/media-video/ati-drivers/ati-drivers-8.14.13-r2.ebuild
new file mode 100644
index 000000000000..d35a8b54e010
--- /dev/null
+++ b/media-video/ati-drivers/ati-drivers-8.14.13-r2.ebuild
@@ -0,0 +1,253 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/ati-drivers/ati-drivers-8.14.13-r2.ebuild,v 1.1 2005/07/29 12:05:19 chrb Exp $
+
+IUSE="opengl"
+
+inherit eutils rpm multilib linux-info linux-mod toolchain-funcs
+
+DESCRIPTION="Ati precompiled drivers for r350, r300, r250 and r200 chipsets"
+HOMEPAGE="http://www.ati.com"
+SRC_URI="x86? ( http://www2.ati.com/drivers/linux/fglrx_6_8_0-${PV}-1.i386.rpm )
+ amd64? ( http://www2.ati.com/drivers/linux/64bit/fglrx64_6_8_0-${PV}-1.x86_64.rpm )"
+
+LICENSE="ATI"
+KEYWORDS="-* ~amd64 ~x86"
+
+RDEPEND=">=x11-base/xorg-x11-6.8.0
+ >=x11-base/opengl-update-2.1_pre1"
+
+DEPEND=">=virtual/linux-sources-2.4
+ ${RDEPEND}"
+
+PROVIDE="virtual/opengl"
+
+ATIBIN="${D}/opt/ati/bin"
+RESTRICT="nostrip multilib-pkg-force"
+
+pkg_setup(){
+ #check kernel and sets up KV_OBJ
+ linux-mod_pkg_setup
+
+ ebegin "Checking for MTRR support enabled"
+ linux_chkconfig_present MTRR
+ eend $?
+ if [[ $? -ne 0 ]] ; then
+ ewarn "You don't have MTRR support enabled, the direct rendering"
+ ewarn "will not work."
+ fi
+
+ ebegin "Checking for AGP support enabled"
+ linux_chkconfig_present AGP
+ eend $?
+ if [[ $? -ne 0 ]] ; then
+ ewarn "You don't have AGP support enabled, the direct rendering"
+ ewarn "will not work."
+ fi
+ ebegin "Checking for DRM support disabled"
+ ! linux_chkconfig_present DRM
+ eend $?
+ if [[ $? -ne 0 ]] ; then
+ ewarn "You have DRM support enabled, the direct rendering"
+ ewarn "will not work."
+ fi
+
+ # Set up X11 implementation
+ X11_IMPLEM_P="$(best_version virtual/x11)"
+ X11_IMPLEM="${X11_IMPLEM_P%-[0-9]*}"
+ X11_IMPLEM="${X11_IMPLEM##*\/}"
+ einfo "X11 implementation is ${X11_IMPLEM}."
+}
+
+src_unpack() {
+ local OLDBIN="/usr/X11R6/bin"
+
+ cd ${WORKDIR}
+ rpm_src_unpack
+
+ cd ${WORKDIR}/lib/modules/fglrx/build_mod
+
+ #epatch ${FILESDIR}/fglrx-3.9.0-allocation.patch
+
+ if kernel_is 2 6
+ then
+ epatch ${FILESDIR}/fglrx-2.6.12-pci_name.patch
+ epatch ${FILESDIR}/fglrx-2.6.12-inter_module_get.patch
+ epatch ${FILESDIR}/fglrx-8.14.13-alt-2.6.12-agp.patch
+ fi
+ epatch ${FILESDIR}/8.8.25-via-amd64.patch
+ epatch ${FILESDIR}/8.8.25-smp.patch
+ epatch ${FILESDIR}/ioctl32.patch
+ epatch ${FILESDIR}/p1.patch
+
+ rm -rf ${WORKDIR}/usr/X11R6/bin/fgl_glxgears
+}
+
+src_compile() {
+ einfo "Building the DRM module..."
+ cd ${WORKDIR}/lib/modules/fglrx/build_mod
+ if kernel_is 2 6
+ then
+ set_arch_to_kernel
+ addwrite "/usr/src/${FK}"
+ cp 2.6.x/Makefile .
+ export _POSIX2_VERSION="199209"
+ if use_m ;
+ then
+ make -C ${KV_DIR} M="`pwd`" GCC_VER_MAJ=$(gcc-major-version) \
+ modules || ewarn "DRM module not built"
+ else
+ make -C ${KV_DIR} SUBDIRS="`pwd`" GCC_VER_MAJ=$(gcc-major-version) \
+ modules || ewarn "DRM module not built"
+ fi
+ set_arch_to_portage
+ else
+ export _POSIX2_VERSION="199209"
+ # That is the dirty way to avoid the id -u check
+ sed -e 's:`id -u`:0:' \
+ -e "s:\`uname -r\`:${KV_FULL}:" \
+ -i make.sh
+ chmod +x make.sh
+ ./make.sh || die "DRM module not built"
+ fi
+}
+
+pkg_preinst() {
+ # Clean the dinamic libGL stuff's home to ensure
+ # we don't have stale libs floating around ...
+ if [ -d "${ROOT}/usr/lib/opengl/ati" ]
+ then
+ rm -rf ${ROOT}/usr/lib/opengl/ati/*
+ fi
+}
+
+src_install() {
+ local ATI_ROOT="/usr/lib/opengl/ati"
+
+ cd ${WORKDIR}
+
+ # DRM module
+ insinto /lib/modules/${KV_FULL}/video
+ # set_kvobj
+ doins ${WORKDIR}/lib/modules/fglrx/build_mod/fglrx.${KV_OBJ}
+
+ local native_dir
+ use x86 && native_dir="lib"
+ use amd64 && native_dir="lib64"
+
+ # Install the libs
+ # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage
+ local MLTEST=$(type dyn_unpack)
+ if [ "${MLTEST/set_abi}" = "${MLTEST}" ] && has_multilib_profile; then
+ local OABI=${ABI}
+ for ABI in $(get_install_abis); do
+ src_install-libs
+ done
+ ABI=${OABI}
+ unset OABI
+ elif has_multilib_profile; then
+ src_install-libs
+ elif use amd64; then
+ src_install-libs lib $(get_multilibdir)
+ src_install-libs lib64 $(get_libdir)
+ else
+ src_install-libs
+ fi &> /dev/null
+
+ #apps
+ insinto /etc/env.d
+ doins ${FILESDIR}/09ati
+ exeinto /opt/ati/bin
+ doexe usr/X11R6/bin/*
+
+ #ati custom stuff
+ insinto /usr
+ doins -r ${WORKDIR}/usr/include
+}
+
+src_install-libs() {
+ local pkglibdir=lib
+ local inslibdir=$(get_libdir)
+
+ if [ ${#} -eq 2 ]; then
+ pkglibdir=${1}
+ inslibdir=${2}
+ elif has_multilib_profile && [ "${ABI}" == "amd64" ]; then
+ pkglibdir=lib64
+ fi
+
+ einfo "${pkglibdir} -> ${inslibdir}"
+
+ local ATI_ROOT="/usr/${inslibdir}/opengl/ati"
+
+ # The GLX libraries
+ exeinto ${ATI_ROOT}/lib
+ doexe ${WORKDIR}/usr/X11R6/${pkglibdir}/libGL.so.1.2
+ dosym libGL.so.1.2 ${ATI_ROOT}/lib/libGL.so.1
+ dosym libGL.so.1.2 ${ATI_ROOT}/lib/libGL.so
+
+ # Don't do this... see bug #47598
+ #dosym libGL.so.1.2 ${ATI_ROOT}/lib/libMesaGL.so
+
+ # same as the xorg implementation
+ dosym ../${X11_IMPLEM}/extensions ${ATI_ROOT}/extensions
+ #Workaround
+ if use opengl ; then
+ sed -e "s:libdir=.*:libdir=${ATI_ROOT}/lib:" \
+ /usr/${inslibdir}/opengl/${X11_IMPLEM}/lib/libGL.la \
+ > $D/${ATI_ROOT}/lib/libGL.la
+ dosym ../${X11_IMPLEM}/include ${ATI_ROOT}/include
+ fi
+ # X and DRI driver
+ if has_version ">=x11-base/xorg-x11-6.8.0-r4"
+ then
+ local X11_DIR="/usr/"
+ else
+ local X11_DIR="/usr/X11R6/"
+ fi
+
+ local X11_LIB_DIR="${X11_DIR}${inslibdir}"
+
+ exeinto ${X11_LIB_DIR}/modules/drivers
+ doexe ${WORKDIR}/usr/X11R6/${pkglibdir}/modules/drivers/fglrx_drv.o
+
+ exeinto ${X11_LIB_DIR}/modules/dri
+ doexe ${WORKDIR}/usr/X11R6/${pkglibdir}/modules/dri/fglrx_dri.so
+ doexe ${WORKDIR}/usr/X11R6/${pkglibdir}/modules/dri/atiogl_a_dri.so
+
+ exeinto ${X11_LIB_DIR}/modules/linux
+ doexe ${WORKDIR}/usr/X11R6/${pkglibdir}/modules/linux/libfglrxdrm.a
+ cp -a ${WORKDIR}/usr/X11R6/${pkglibdir}/libfglrx_gamma.* \
+ ${D}/${X11_LIB_DIR}
+ #Not the best place
+ insinto ${X11_DIR}/include/X11/extensions
+ doins ${WORKDIR}/usr/X11R6/include/X11/extensions/fglrx_gamma.h
+
+}
+
+
+pkg_postinst() {
+# Ebuild shouldn't do this automatically, just tell the user to do it,
+# otherwise it messes up livecd/gamecd stuff ... (drobbins, 1 May 2003)
+# if [ "${ROOT}" = "/" ]
+# then
+# /usr/sbin/opengl-update ati
+# fi
+
+ echo
+ einfo "To switch to ATI OpenGL, run \"opengl-update ati\""
+ einfo "To change your XF86Config you can use the bundled \"fglrxconfig\""
+ if use !opengl ; then
+ ewarn "You don't have the opengl useflag enabled, you won't be able to build"
+ ewarn "opengl applications nor use opengl driver features, if that isn't"
+ ewarn "the intended behaviour please add opengl to your useflag and issue"
+ ewarn "# emerge -Nu ati-drivers"
+ fi
+ # DRM module
+ update-modules
+}
+
+pkg_postrm() {
+ opengl-update --use-old xorg-x11
+}
+
diff --git a/media-video/ati-drivers/files/fglrx-8.14.13-alt-2.6.12-agp.patch b/media-video/ati-drivers/files/fglrx-8.14.13-alt-2.6.12-agp.patch
new file mode 100644
index 000000000000..beda866414f5
--- /dev/null
+++ b/media-video/ati-drivers/files/fglrx-8.14.13-alt-2.6.12-agp.patch
@@ -0,0 +1,98 @@
+--- build_mod/firegl_public.c.alt-2.6.12-agp 2005-06-26 19:35:34 +0400
++++ build_mod/firegl_public.c 2005-06-26 19:41:28 +0400
+@@ -1002,8 +1002,16 @@ void* ATI_API_CALL __ke_high_memory(void
+ return high_memory;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
++/* Saved pci_dev pointer for the new agpgart API */
++static struct pci_dev *fglrx_pci_dev;
++#endif
++
+ int ATI_API_CALL __ke_pci_enable_device(__ke_pci_dev_t* dev)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
++ fglrx_pci_dev = (struct pci_dev *)dev;
++#endif
+ return (pci_enable_device( (struct pci_dev*)(void *)dev ));
+ }
+
+@@ -2865,6 +2873,68 @@ typedef struct {
+ int (*copy_info)(struct agp_kern_info *);
+ } drm_agp_t;
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
++/*
++ * Kernel 2.6.12 has new agpgart API with support for multiple AGP bridges, but
++ * the fglrx core does not know about this yet. For now, just emulate the old
++ * API.
++ */
++
++static struct agp_bridge_data *fglrx_agp_bridge;
++
++static int fglrx_compat_agp_backend_acquire(void)
++{
++ fglrx_agp_bridge = agp_backend_acquire(fglrx_pci_dev);
++ if (!fglrx_agp_bridge)
++ return -ENODEV;
++ return 0;
++}
++
++static void fglrx_compat_agp_backend_release(void)
++{
++ agp_backend_release(fglrx_agp_bridge);
++}
++
++static struct agp_memory *fglrx_compat_agp_allocate_memory(size_t page_count,
++ u32 type)
++{
++ return agp_allocate_memory(fglrx_agp_bridge, page_count, type);
++}
++
++static void fglrx_compat_agp_enable(u32 mode)
++{
++ agp_enable(fglrx_agp_bridge, mode);
++}
++
++static int fglrx_compat_agp_copy_info(struct agp_kern_info *info)
++{
++ if (!fglrx_agp_bridge) {
++ fglrx_agp_bridge = agp_find_bridge(fglrx_pci_dev);
++ if (!fglrx_agp_bridge) {
++ memset(info, 0, sizeof(struct agp_kern_info));
++ info->chipset = NOT_SUPPORTED;
++ return -ENODEV;
++ }
++ }
++ return agp_copy_info(fglrx_agp_bridge, info);
++}
++
++static const drm_agp_t drm_agp = {
++ &agp_free_memory,
++ &fglrx_compat_agp_allocate_memory,
++ &agp_bind_memory,
++ &agp_unbind_memory,
++ &fglrx_compat_agp_enable,
++ &fglrx_compat_agp_backend_acquire,
++ &fglrx_compat_agp_backend_release,
++ &fglrx_compat_agp_copy_info
++};
++
++#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12) */
++/*
++ * For 2.6.11 we can just use the agpgart functions directly.
++ */
++
+ static const drm_agp_t drm_agp = {
+ &agp_free_memory,
+ &agp_allocate_memory,
+@@ -2875,6 +2945,9 @@ static const drm_agp_t drm_agp = {
+ &agp_backend_release,
+ &agp_copy_info
+ };
++
++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12) */
++
+ #undef DRM_AGP_MODULE_GET
+ #undef DRM_AGP_MODULE_PUT
+
diff --git a/media-video/ati-drivers/files/ioctl32.patch b/media-video/ati-drivers/files/ioctl32.patch
new file mode 100644
index 000000000000..f5ba9bd60982
--- /dev/null
+++ b/media-video/ati-drivers/files/ioctl32.patch
@@ -0,0 +1,14 @@
+--- firegl_public.c.orig 2005-06-18 17:42:41.000000000 -0300
++++ firegl_public.c 2005-06-18 17:43:46.000000000 -0300
+@@ -116,7 +116,11 @@
+ #endif
+
+ #ifdef __x86_64__
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
++#include "asm/ioctl.h"
++#else
+ #include "asm/ioctl32.h"
++#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,2)
+ #include "linux/syscalls.h"
+ #endif
diff --git a/media-video/ati-drivers/files/p1.patch b/media-video/ati-drivers/files/p1.patch
new file mode 100644
index 000000000000..b291a3a7219c
--- /dev/null
+++ b/media-video/ati-drivers/files/p1.patch
@@ -0,0 +1,66 @@
+
+
+2005-03-02 22:32 diff -lu or.c agpgart_be.c Page 1
+
+
+--- or.c 2005-01-31 19:50:00.000000000 +0200
++++ agpgart_be.c 2005-03-02 22:19:25.000000000 +0200
+@@ -261,6 +261,12 @@
+ #define firegl_pci_find_class(class,from) pci_find_class(class,from)
+ #endif
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
++#define firegl_pci_find_class(class,from) pci_get_class(class,from)
++#else
++#define firegl_pci_find_class(class,from) pci_find_class(class,from)
++#endif
++
+ int agp_backend_acquire(void)
+ {
+ if (agp_bridge.type == NOT_SUPPORTED) {
+@@ -4075,6 +4081,13 @@
+ }
+ }
+ }
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
++ // the reference count has been increased in agp_backend_initialize.
++ if (device)
++ pci_dev_put(device);
++#endif
++
+ /*
+ * PASS3: Figure out the 8X/4X setting and enable the
+ * target (our motherboard chipset).
+@@ -5283,6 +5296,12 @@
+ pci_dev_put(device);
+ #endif
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
++ // the reference count has been increased in agp_backend_initialize.
++ if (device)
++ pci_dev_put(device);
++#endif
++
+ return(0); /* success */
+ }
+
+@@ -7428,6 +7447,11 @@
+ return rc;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
++ // decrease the reference count.
++ pci_dev_put(agp_bridge.dev);
++#endif
++
+ if (agp_bridge.needs_scratch_page == TRUE) {
+ agp_bridge.scratch_page = agp_bridge.agp_alloc_page();
+
+
+
+
+
+
+
+