ati-drivers: temporarily fork due to incorrect die line

This commit is contained in:
Zero_Chaos 2013-07-01 17:58:54 +00:00
parent bcee4dd74f
commit 37426e68bd
15 changed files with 1944 additions and 0 deletions

View file

@ -0,0 +1,23 @@
AUX ati-drivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch 799 SHA256 0001fa7f2c3e15ec315f6c963dd428b682778c129250941a849577b8b3293e36 SHA512 a7ae5e7017c9b5a68d112d9a77df40ada722b06aff0cc31147713bfbce2419f9ca8c22b40398ab8b80c86427ff086a5617fb6de93d540af54365c7039cdcfe0f WHIRLPOOL 809c5bf8f0b0381af6a8549c36fcd00e75ff2f571f21cef3f2dec9ea823c65c29db28373b7145f39b9ed2cad234ec3c063407fb7a12260cfe1fe62eb67b5780d
AUX ati-drivers-13.6-linux-3.10-proc.diff 11837 SHA256 24edbb4fe0390d3eea4bf6b76b8bab87e26a5906cc3e273f2b87b8f3c5fc4918 SHA512 467b111e6c18a587c3d24c0460ce3797b82daf029c5f90614ab7e25e813011a54efc31f8364fe96b46bb28361be87cfe8e49a5ff73b5f23c4e8b072b83785c6c WHIRLPOOL de0d55658ef0f2123cc44928dd3e9d6b6f96223e6669bf38060c5bb50e4084433657708462f04db9ec60932135b6451054b52e962d203dc78f330a9ec48ef309
AUX ati-drivers-do_mmap.patch 1405 SHA256 3fc9bae50d25d3bfe76a3a1e89c8d025674a4cb9afd16d3a5d8b3c25a66f536d SHA512 1a2f8fe7f2506037d6d158e5c2efffa39c503566284d8f516cb2d84db546eced24df5dcb8d74ac84911589efb4547d7f8610d78ad29703f9ed0a9890576c51b7 WHIRLPOOL 86daa957d7569b26fdf92929e5b04a32379af067a208628eab1a4541fdebfb51fa4bfedeec63f4685c6258adcba2ddc4223b69dca329ecbebd4ba13167f66f82
AUX ati-drivers-kernel-3.8-acpihandle.patch 717 SHA256 f7012bbc1d27a4d9207f8ba78256684a74b917311f525d3b061c11caefad2846 SHA512 a064ad1ebbb1010349c22d6fd6a4a3715df3d7087353a70199957b5c1c325b533b21c3f004567362a834faa0d8f169296ef996765d47439fdad4109a0d01f85c WHIRLPOOL e0eb93cd367f9e6e1848c3c3301c914f783865eb5d6c11a27a334624ee84cf7ee99073a6a2ff69014c8b920a51933573bf1224f53ea64c2666968f93ca922003
AUX ati-drivers-old_rsp.patch 989 SHA256 dd222de89b515046c6cbfef172a3ec8d4bc48664799b3bbfff648091c6d54b49 SHA512 b86a230f126950d309b899ab3445154cf38cb8127b7686d0a467df6d3561a1785747e9522c00b55a294961c1157fe41833a5a85d4737775ae68bdb4099b0ee37 WHIRLPOOL cd06422ee90587c5c7485074b03ccaaef921134c721c0d0f6f678a9c968aae6417523c77d6dfcccc856cb5d125579197cd3c6a5b1c8557ce621784eabd0c43fa
AUX ati-drivers-vm-reserverd.patch 408 SHA256 61128444938f94f911325b6cac810d3cb3614d0002758e48ba976b678414df30 SHA512 34cd4705f632b1493eac756538eb21fe0e090f78cf92cde7c2a7094a8fc8134ee6d5dd24c6bb9ad18c8ef46dd1d5505ae12d43032265cd4ade03793f277fe4c2 WHIRLPOOL 5a1a98145576b20bdd2e80e5f7f9a2b9bab02942a9fb83814d73d17f1bfec690ee0cd2ccfdf418f297e75432d8fcee8164a1d179eeb5bc716e1becf96bb373f1
AUX ati-drivers-x32_something_something.patch 486 SHA256 9eb114a797089fca3693420305a6b668c4d7a16a722d5faa53dd904bba1b4c07 SHA512 157884244a49748c897a2eca1a46bf40631042d15af85c2b2f49bc3c3c48f5638dec815a4e9c67ee2c8b88cc15b7f71e9fe4d9bfebf5444bb169542048f66499 WHIRLPOOL f7583d7df16c9eb608aff2330b4bd55ede34986e6f3cf63aa4cb2c77dcfade7c499f1b4cef95fdc8e6ab28d7bb5544a80703bcf5a41eae6b90ca8830b6fdd888
AUX ati-powermode-opt-path-3.patch 1471 SHA256 35e73fef3d8e39714e8d6e73afaa7b205505db3bdd65c364e7ea02fdc0cb3055 SHA512 0e17026847062117993ba6115942d16421f6b9943afd57913c96e7550b0e49f3ed10e06bc98f9db1a5ba4af7c42dae6b55a332a97e73d48dba7f61ed0ad35ad4 WHIRLPOOL 39861d10d307e537549ed0c7967e18ad3ef658af66396f5491d1f2e13ab13e8b8e252d4c14b5ab616ff5aad69a599cf3b32accedd51438021d50cc074fa296a8
AUX atieventsd.init 533 SHA256 20010ebc5cb286149f3c4c9c099b6470463ccdb8fd47cea054b783dc2ad1fff3 SHA512 9f8990bb5619f99524e0759a1c4b41b0b2c081c6eecb3916ab60df8e6b59d99e3615af61e0ba5b71d003ccaaf41e2143237b26f36f64f00a47e0fe94f83473dd WHIRLPOOL 21979818a19bc27e3527958c66bf45654df4a307862897530bc02be6616f45ee210590a9d1bcab84336c6061482034010efbb251770bfaf023f20ffae8212ecd
AUX const-notifier-block.patch 878 SHA256 cd73f5e15d9521a989d8cd9b7e3b252406e7b89fdfc129fd2d470f0bc86e8457 SHA512 1b84cb85ce903d80ad50a0e2d53509016625d1ede070e18b800408d486dc89d5283d801d6449eb81ee25a7adffbd0094b57a301842364e1fb58cc6bf9623e5b4 WHIRLPOOL ee9785d250632cd8843a5995f36442ff6abec2d5a7158f3604a6bc147c7db251608b9484c3ac95376c4cc6b6a15f6682675bd011eb6a193a073ba873e17a9872
AUX switchlibGL 1349 SHA256 a4aa2107fdb903da77fea432bc809a1155e213db460fdec72fd1c3c7cc0d13a0 SHA512 51d2912aa6ec2002b096c0483be69650d682feec54486ed5226b91988bc1516f718c71d9f58a2b28e0dbc512c0300ea271f9a97885776dd045fe324f1549b85d WHIRLPOOL d335ea9c57a28f8450423089bbf798da77cc72fff6bad1221989412808abcd6bcb7afa41aa2b04231feff3dac6eaaff58a7595173e53b6cf0f5d3d591997b43d
AUX typesafe-kuid.diff 927 SHA256 1791cdb3640509422d0c6770519cf896c0a0a8a85274c83cb3fa65ebe147366c SHA512 010a605f542d2fa328de8537420ae7dbba56b4075089baedd8d039c2dd271dbaaa4dadf29d6fc5c202ba0077d62f36982f867e2681e36f6bf36ce19b13bca252 WHIRLPOOL 0096d0b77c2eeb62761cccc9e012dfa3ddaf2d10bd3afaff6edf918d921b6e4ce5865e5857f24e23278fcaf37b66fec589e59012142fde9dd8112dd59a78df20
DIST amd-catalyst-13.4-linux-x86.x86_64.zip 122588023 SHA256 ebec78c7f78db3601d1c97116a6823076a7765318e16d88b619ebc80d4c6d1d5 SHA512 ce012f46527ee0073f658e97dd793954930b934b96be9e1c6cd1d344e7734ef81949b484701d5e7e1ebb221f46b5a617f4efb4445e42c06ac0a8b4eca76463fc WHIRLPOOL cb0f7af6d0474c3d521c5785bab49d76da7e09e1ddd02dc0e72b70b5afdb2bd1e07d4a4115a755f213718e7c32c816697d993b73706d58be68fa043aef1ad551
DIST amd-driver-installer-catalyst-13-6-beta-x86.x86_64.zip 118103843 SHA256 3e1bd2ac2d2fcf7188c9e365f77b0c27fc71d788618ab9b2cbf86d0d48e8b63a SHA512 0af9a32528fb381cb1e39462ec6effaa7a6999c6f9bfdc30524e1ecbc2dbd5ce388bcf4f35b8a93225bb56a0bed536622183e78cb2c980a4a3916c30c5ab27c7 WHIRLPOOL 314c92e0d6a9ff5f4477ce38ae2b813cd09910d720fb40a21f0b4f193cd4a1ac210344050a9abb105494888e37097c9a2e8e1bbeafde7a21e6128daaad540319
DIST amd-driver-installer-catalyst-13.1-legacy-linux-x86.x86_64.zip 106908508 SHA256 3a992fb7564dba17a696217dc32043dabc21743c82116a6657817ee8a3a1d55f SHA512 96b34045dca3ad70156500b37d3f06008728ff81878a3e1432060d08e668d8cbd9bfe172440bcb818f01d731d39e3eeccc25396417993d2b9b8985b3b7dc7357 WHIRLPOOL f0e34ccb1a9dfe3cfd9e9c640c3d6ed97a4a3e892b65325a78045653b40d29a78427dc9092d8e14bee1a8ba603405ed9e8cd60188d5bc5e8c5eee03d66a8f25c
DIST amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip 114850263 SHA256 67898a922b6b58f25a276a144f16b19014f79c39e4d44d8d2883a467d31e34ad SHA512 30763ab7f47ac22c5b5055495e2d8ae6cc2c8e5ce711fa389f1145a48da2799020c2b8cbf082759d93628017860c39d69337f42ce21b78e1d60c9eda32096df9 WHIRLPOOL ee5dc85a89bc56858ef1c2bcdc6cbfde7e2f9e5675d209c1f6db877e0104cc536f1e18139f0b991a064b14b231a982770eef47368ea281067d62647b4c5365a5
DIST xvba-sdk-0.74-404001.tar.gz 583847 SHA256 731a2c489f2fb5d7318c1976061b26c1057a696f46d09dcf55fbada97fed17eb SHA512 aa1dd52b59eeeabd026d8b76e3b75eaf02587ef286438ba28884afeef5a5efaf50283b5ee4f5b81b12cf79cb4ec77c9a235a886b29fb7cdf850c9779f4b07b35 WHIRLPOOL 69917b746d353a884512e97b9d9a9b89e6f51add3119e69ddd119d51c0c3f2820b93a449fe42bd76d671dc505f92bf25b7f2c5868b33768fc68a19596e460951
EBUILD ati-drivers-13.1.ebuild 19758 SHA256 ddf468e9cf1cda7faf536b34b635c4619e37314064b081a941bbb6a37064396e SHA512 9cf16a5822e6695285c6ff747918ed16a87e03059fc91404ad8b157d9f9ed1d653adf6c47fe9cb13dd1f2dfa167464abb0ac670b89d39c23896b2ac6ef80fb82 WHIRLPOOL 03c7b4d8db05543a1cf6d21b20e7a81be0bb21e206a368108cc7f74f380aa22208ec3c6161ad6bfa96e57534f7a338e2a1ae0e1b85722e75fbbe16c4fec910be
EBUILD ati-drivers-13.1_pre897.ebuild 19982 SHA256 b004303b1b12563c365d0d2f643bf892092a9262880176c26d3542d9d206dee6 SHA512 9045276558ac065a804a25ae919ddb129ce939c621f3eb61291065729826d99e9d2e9128c47db41f1030552b8aaace29730552420ed03558478c83261aac5e86 WHIRLPOOL 38f437df20b93c0c83f271ab56c7653b356ae2421a28d7a2bb7ea0c3d73c2c3701892a4317ea125dfe447bc9737e9b8369fa1570eca20f5510bf6f21e357f67f
EBUILD ati-drivers-13.4.ebuild 20939 SHA256 ef27369510a53aa8c8bc98458ea562a9a8c1c82d88fdd831a53777be07eb3382 SHA512 57562a9848fe6a01878bf59294eee2bd63c57685ed48f13bf0e7395f9a500260773c70a72af07fc1b29651b6730217074956451f79ac62a3ed0ee4c270da33ba WHIRLPOOL 085c1f94132ad941e96b015ac13d5645eb37753961deb914f7fcab1c350148f291a7ec4e64bcab20ea7256e5f7d316d1081f6a8c189de4c3e95fcb2d95cc2828
EBUILD ati-drivers-13.6_beta.ebuild 20964 SHA256 85350c0f955765f541e70736ad8cd8a627c035825ad78888a69311170ba27c4d SHA512 a775b3ee8f4ad20755294ddd8414541278548131221683a87d37178a0918e75cfe7fd6785d5e0a74082b02f431a21ee9af6a432c20c4b454ea8724139772cd73 WHIRLPOOL a8259e2949db58a8268a2d10b11e4b58e7cb12915f8dc08cbfd0e006a153ace0ea8fba17622486afa7364bcc3234d583a39de54168f61f2a285440f860a9fc93
MISC ChangeLog 87909 SHA256 67e3bb887f601bc46841e6a48ca738f33ccff9eb5d12661f645d5ea0a9240781 SHA512 e30edfc09b95253e6b1914c14cba75f24ff530b4d2bed0edaa0ab93c84d66f7bb4666691e7bf577df0614200ce7c2e52ef15eeec05693961fe35f46e01faac1b WHIRLPOOL 64b9050ba72981d89f63b543715d812e224c61dd20c3e7e7052e1754da68a0cc0d281ec14cd7e750af302f8f3e4946c68656b443fd49a7ff954ad43f3eccdf74
MISC metadata.xml 731 SHA256 4eb1b53d7a0484614a57c7907c5f5411961bd8aae1d71fda50e21cf587f77b46 SHA512 89a2efca45077eed7151fc712b1e14be152559a33f186a0cb9dca7f678c45260be038e41a2e74a6bb5c780e0b37ea12d42a3a4889c29c92f312dc8be8711d54c WHIRLPOOL 24ef38f432b632e2957ad084e9e0ba5ab227ca52c612a108bc9d14c474922f1a979bda614ab984d94e8879c582b580bc25bee4cabefa21308529600bb5776e19

View file

@ -0,0 +1,622 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/ati-drivers/ati-drivers-13.4.ebuild,v 1.4 2013/06/18 14:00:32 chithanh Exp $
EAPI=5
inherit eutils multilib linux-info linux-mod toolchain-funcs versionator pax-utils
DESCRIPTION="Ati precompiled drivers for Radeon Evergreen (HD5000 Series) and newer chipsets"
HOMEPAGE="http://www.amd.com"
MY_V=( $(get_version_components) )
#RUN="${WORKDIR}/amd-driver-installer-9.00-x86.x86_64.run"
SLOT="1"
if [[ "${MY_V[2]}" =~ beta.* ]]; then
BETADIR="beta/"
else
BETADIR="linux/"
fi
if [[ legacy != ${SLOT} ]]; then
DRIVERS_URI="http://www2.ati.com/drivers/${BETADIR}amd-catalyst-${PV/_beta/-beta}-linux-x86.x86_64.zip"
else
DRIVERS_URI="http://www2.ati.com/drivers/legacy/amd-driver-installer-catalyst-$(get_version_component_range 1-2)-$(get_version_component_range 3)-legacy-linux-x86.x86_64.zip"
fi
XVBA_SDK_URI="http://developer.amd.com/wordpress/media/2012/10/xvba-sdk-0.74-404001.tar.gz"
SRC_URI="${DRIVERS_URI} ${XVBA_SDK_URI}"
FOLDER_PREFIX="common/"
IUSE="debug +modules multilib qt4 static-libs disable-watermark pax_kernel"
LICENSE="AMD GPL-2 QPL-1.0"
KEYWORDS="-* ~amd64 ~x86"
RESTRICT="bindist test"
RDEPEND="
<=x11-base/xorg-server-1.13.49[-minimal]
>=app-admin/eselect-opengl-1.0.7
app-admin/eselect-opencl
sys-power/acpid
x11-apps/xauth
x11-libs/libX11
x11-libs/libXext
x11-libs/libXinerama
x11-libs/libXrandr
x11-libs/libXrender
virtual/glu
multilib? (
app-emulation/emul-linux-x86-opengl
|| (
(
x11-libs/libX11[abi_x86_32]
x11-libs/libXext[abi_x86_32]
x11-libs/libXinerama[abi_x86_32]
x11-libs/libXrandr[abi_x86_32]
x11-libs/libXrender[abi_x86_32]
)
app-emulation/emul-linux-x86-xlibs
)
)
qt4? (
x11-libs/libICE
x11-libs/libSM
x11-libs/libXcursor
x11-libs/libXfixes
x11-libs/libXxf86vm
dev-qt/qtcore:4
dev-qt/qtgui:4[accessibility]
)
"
if [[ legacy != ${SLOT} ]]; then
RDEPEND="${RDEPEND}
!x11-drivers/ati-drivers:legacy"
else
RDEPEND="${RDEPEND}
!x11-drivers/ati-drivers:1"
fi
DEPEND="${RDEPEND}
x11-proto/inputproto
x11-proto/xf86miscproto
x11-proto/xf86vidmodeproto
x11-proto/xineramaproto
x11-libs/libXtst
sys-apps/findutils
app-misc/pax-utils
app-arch/unzip
"
EMULTILIB_PKG="true"
S="${WORKDIR}"
# QA Silencing
QA_TEXTRELS="
usr/lib*/opengl/ati/lib/libGL.so.1.2
usr/lib*/libatiadlxx.so
usr/lib*/xorg/modules/glesx.so
usr/lib*/libaticaldd.so
usr/lib*/dri/fglrx_dri.so
"
QA_EXECSTACK="
opt/bin/atiode
opt/bin/amdcccle
usr/lib*/opengl/ati/lib/libGL.so.1.2
usr/lib*/dri/fglrx_dri.so
"
QA_WX_LOAD="
usr/lib*/opengl/ati/lib/libGL.so.1.2
usr/lib*/dri/fglrx_dri.so
"
QA_PRESTRIPPED="
usr/lib\(32\|64\)\?/libXvBAW.so.1.0
usr/lib\(32\|64\)\?/opengl/ati/lib/libGL.so.1.2
usr/lib\(32\|64\)\?/opengl/ati/extensions/libglx.so
usr/lib\(32\|64\)\?/xorg/modules/glesx.so
usr/lib\(32\|64\)\?/libAMDXvBA.so.1.0
usr/lib\(32\|64\)\?/libaticaldd.so
usr/lib\(32\|64\)\?/dri/fglrx_dri.so
"
QA_SONAME="
usr/lib\(32\|64\)\?/libatiadlxx.so
usr/lib\(32\|64\)\?/libaticalcl.so
usr/lib\(32\|64\)\?/libaticaldd.so
usr/lib\(32\|64\)\?/libaticalrt.so
usr/lib\(32\|64\)\?/libamdocl\(32\|64\)\?.so
"
QA_DT_HASH="
opt/bin/amdcccle
opt/bin/aticonfig
opt/bin/atiodcli
opt/bin/atiode
opt/bin/clinfo
opt/bin/fglrxinfo
opt/sbin/atieventsd
opt/sbin/amdnotifyui
usr/lib\(32\|64\)\?/libaticalcl.so
usr/lib\(32\|64\)\?/libaticalrt.so
usr/lib\(32\|64\)\?/libatiuki.so.1.0
usr/lib\(32\|64\)\?/libatiadlxx.so
usr/lib\(32\|64\)\?/libfglrx_dm.so.1.0
usr/lib\(32\|64\)\?/libXvBAW.so.1.0
usr/lib\(32\|64\)\?/libAMDXvBA.so.1.0
usr/lib\(32\|64\)\?/xorg/modules/amdxmm.so
usr/lib\(32\|64\)\?/xorg/modules/glesx.so
usr/lib\(32\|64\)\?/xorg/modules/linux/libfglrxdrm.so
usr/lib\(32\|64\)\?/xorg/modules/drivers/fglrx_drv.so
usr/lib\(32\|64\)\?/libaticaldd.so
usr/lib\(32\|64\)\?/dri/fglrx_dri.so
usr/lib\(32\|64\)\?/opengl/ati/extensions/libglx.so
usr/lib\(32\|64\)\?/opengl/ati/extensions/fglrx-libglx.so
usr/lib\(32\|64\)\?/opengl/ati/lib/fglrx-libGL.so.1.2
usr/lib\(32\|64\)\?/opengl/ati/lib/libGL.so.1.2
usr/lib\(32\|64\)\?/OpenCL/vendors/amd/libamdocl\(32\|64\)\?.so
usr/lib\(32\|64\)\?/OpenCL/vendors/amd/libOpenCL.so.1
"
CONFIG_CHECK="~MTRR ~!DRM ACPI PCI_MSI !LOCKDEP !PAX_KERNEXEC_PLUGIN_METHOD_OR"
ERROR_MTRR="CONFIG_MTRR required for direct rendering."
ERROR_DRM="CONFIG_DRM must be disabled or compiled as a module and not loaded for direct
rendering to work."
ERROR_LOCKDEP="CONFIG_LOCKDEP (lock tracking) exports the symbol lock_acquire
as GPL-only. This prevents ${P} from compiling with an error like this:
FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'lock_acquire'"
ERROR_PAX_KERNEXEC_PLUGIN_METHOD_OR="This config option will cause
kernel to reject loading the fglrx module with
\"ERROR: could not insert 'fglrx': Exec format error.\"
You may want to try CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_BTS instead."
_check_kernel_config() {
if ! linux_chkconfig_present AGP && \
! linux_chkconfig_present PCIEPORTBUS; then
ewarn "You don't have AGP and/or PCIe support enabled in the kernel"
ewarn "Direct rendering will not work."
fi
kernel_is ge 2 6 37 && kernel_is le 2 6 38 && if ! linux_chkconfig_present BKL ; then
die "CONFIG_BKL must be enabled for kernels 2.6.37-2.6.38."
fi
if use amd64 && ! linux_chkconfig_present COMPAT; then
die "CONFIG_COMPAT must be enabled for amd64 kernels."
fi
}
pkg_pretend() {
# workaround until bug 365543 is solved
if ! has XT ${PAX_MARKINGS} && use pax_kernel; then
ewarn "You have disabled xattr pax markings for portage."
ewarn "This will likely cause programs using ati-drivers provided"
ewarn "libraries to be killed kernel."
fi
}
pkg_setup() {
if use modules; then
MODULE_NAMES="fglrx(video:${S}/${FOLDER_PREFIX}/lib/modules/fglrx/build_mod/2.6.x)"
BUILD_TARGETS="kmod_build"
linux-mod_pkg_setup
BUILD_PARAMS="GCC_VER_MAJ=$(gcc-major-version) KVER=${KV_FULL} KDIR=${KV_DIR}"
BUILD_PARAMS="${BUILD_PARAMS} CFLAGS_MODULE+=\"-DMODULE -DATI -DFGL\""
if grep -q arch_compat_alloc_user_space ${KV_DIR}/arch/x86/include/asm/compat.h ; then
BUILD_PARAMS="${BUILD_PARAMS} CFLAGS_MODULE+=-DCOMPAT_ALLOC_USER_SPACE=arch_compat_alloc_user_space"
else
BUILD_PARAMS="${BUILD_PARAMS} CFLAGS_MODULE+=-DCOMPAT_ALLOC_USER_SPACE=compat_alloc_user_space"
fi
fi
# Define module dir.
MODULE_DIR="${S}/${FOLDER_PREFIX}/lib/modules/fglrx/build_mod"
# get the xorg-server version and set BASE_DIR for that
BASE_DIR="${S}/xpic"
# amd64/x86
if use amd64 ; then
MY_BASE_DIR="${BASE_DIR}_64a"
PKG_LIBDIR=lib64
ARCH_DIR="${S}/arch/x86_64"
else
MY_BASE_DIR="${BASE_DIR}"
PKG_LIBDIR=lib
ARCH_DIR="${S}/arch/x86"
fi
elog
elog "Please note that this driver only supports graphic cards based on"
elog "Evergreen chipset and newer."
elog "This includes the AMD Radeon HD 5400+ series at this moment."
elog
elog "If your card is older then use ${CATEGORY}/xf86-video-ati"
elog "For migration informations please refer to:"
elog "http://www.gentoo.org/proj/en/desktop/x/x11/ati-migration-guide.xml"
einfo
}
src_unpack() {
local DRIVERS_DISTFILE XVBA_SDK_DISTFILE
DRIVERS_DISTFILE=${DRIVERS_URI##*/}
XVBA_SDK_DISTFILE=${XVBA_SDK_URI##*/}
if [[ ${DRIVERS_DISTFILE} =~ .*\.tar\.gz ]]; then
unpack ${DRIVERS_DISTFILE}
else
#please note, RUN may be insanely assigned at top near SRC_URI
if [[ ${DRIVERS_DISTFILE} =~ .*\.zip ]]; then
unpack ${DRIVERS_DISTFILE}
[[ -z "$RUN" ]] && RUN="${S}/${DRIVERS_DISTFILE/%.zip/.run}"
else
RUN="${DISTDIR}/${DRIVERS_DISTFILE}"
fi
sh ${RUN} --extract "${S}" 2>&1 > /dev/null || die
fi
mkdir xvba_sdk
cd xvba_sdk
unpack ${XVBA_SDK_DISTFILE}
}
src_prepare() {
if use modules; then
if use debug; then
sed -i '/^#define DRM_DEBUG_CODE/s/0/1/' \
"${MODULE_DIR}/firegl_public.c" \
|| die "Failed to enable debug output."
fi
fi
# These are the userspace utilities that we also have source for.
# We rebuild these later.
rm \
"${ARCH_DIR}"/usr/X11R6/bin/fgl_glxgears \
|| die "bin rm failed"
# in this version amdcccle isn't static, thus we depend on qt4
use qt4 || rm "${ARCH_DIR}"/usr/X11R6/bin/amdcccle
# ACPI fixups
sed -i \
-e "s:/var/lib/xdm/authdir/authfiles/:/var/run/xauth/:" \
-e "s:/var/lib/gdm/:/var/gdm/:" \
"${S}/${FOLDER_PREFIX}etc/ati/authatieventsd.sh" \
|| die "ACPI fixups failed."
# Since "who" is in coreutils, we're using that one instead of "finger".
sed -i -e 's:finger:who:' \
"${S}/${FOLDER_PREFIX}usr/share/doc/fglrx/examples/etc/acpi/ati-powermode.sh" \
|| die "Replacing 'finger' with 'who' failed."
# Adjust paths in the script from /usr/X11R6/bin/ to /opt/bin/ and
# add function to detect default state.
epatch "${FILESDIR}"/ati-powermode-opt-path-3.patch
# see http://ati.cchtml.com/show_bug.cgi?id=495
#epatch "${FILESDIR}"/ati-drivers-old_rsp.patch
# first hunk applied upstream second (x32 related) was not
epatch "${FILESDIR}"/ati-drivers-x32_something_something.patch
# compile fix for AGP-less kernel, bug #435322
epatch "${FILESDIR}"/ati-drivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch
# Compile fix for kernel typesafe uid types #469160
epatch "${FILESDIR}/typesafe-kuid.diff"
epatch "${FILESDIR}/linux-3.10-proc.diff"
# Compile fix, https://bugs.gentoo.org/show_bug.cgi?id=454870
use pax_kernel && epatch "${FILESDIR}/const-notifier-block.patch"
cd "${MODULE_DIR}"
# bugged fglrx build system, this file should be copied by hand
cp ${ARCH_DIR}/lib/modules/fglrx/build_mod/libfglrx_ip.a 2.6.x
convert_to_m 2.6.x/Makefile || die "convert_to_m failed"
# When built with ati's make.sh it defines a bunch of macros if
# certain .config values are set, falling back to less reliable
# detection methods if linux/autoconf.h is not available. We
# simply use the linux/autoconf.h settings directly, bypassing the
# detection script.
sed -i -e 's/__SMP__/CONFIG_SMP/' *.c *h || die "SMP sed failed"
sed -i -e 's/ifdef MODVERSIONS/ifdef CONFIG_MODVERSIONS/' *.c *.h \
|| die "MODVERSIONS sed failed"
cd "${S}"
mkdir extra || die "mkdir extra failed"
cd extra
unpack ./../${FOLDER_PREFIX}usr/src/ati/fglrx_sample_source.tgz
# Get rid of watermark. Oldest known reference:
# http://phoronix.com/forums/showthread.php?19875-Unsupported-Hardware-watermark
if use disable-watermark; then
ebegin "Disabling watermark"
driver="${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/drivers/fglrx_drv.so
for x in $(objdump -d ${driver}|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
sed -i "s/${x/x5b/\x5b}/\x90\x90\x90\x90\x90/g" ${driver} || break 1
done
eend $? || die "Disabling watermark failed"
fi
}
src_compile() {
use modules && linux-mod_src_compile
ebegin "Building fgl_glxgears"
cd "${S}"/extra/fgl_glxgears
# These extra libs/utils either have an Imakefile that does not
# work very well without tweaking or a Makefile ignoring CFLAGS
# and the like. We bypass those.
# The -DUSE_GLU is needed to compile using nvidia headers
# according to a comment in ati-drivers-extra-8.33.6.ebuild.
"$(tc-getCC)" -o fgl_glxgears ${CFLAGS} ${LDFLAGS} -DUSE_GLU \
-I"${S}"/${FOLDER_PREFIX}usr/include fgl_glxgears.c \
-lGL -lGLU -lX11 -lm || die "fgl_glxgears build failed"
eend $?
}
src_install() {
use modules && linux-mod_src_install
# We can do two things here, and neither of them is very nice.
# For direct rendering libGL has to be able to load one or more
# dri modules (files ending in _dri.so, like fglrx_dri.so).
# Gentoo's mesa looks for these files in the location specified by
# LIBGL_DRIVERS_PATH or LIBGL_DRIVERS_DIR, then in the hardcoded
# location /usr/$(get_libdir)/dri. Ati's libGL does the same
# thing, but the hardcoded location is /usr/X11R6/lib/modules/dri
# on x86 and amd64 32bit, /usr/X11R6/lib64/modules/dri on amd64
# 64bit. So we can either put the .so files in that (unusual,
# compared to "normal" mesa libGL) location or set
# LIBGL_DRIVERS_PATH. We currently do the latter. See also bug
# 101539.
# The problem with this approach is that LIBGL_DRIVERS_PATH
# *overrides* the default hardcoded location, it does not extend
# it. So if ati-drivers is merged but a non-ati libGL is selected
# and its hardcoded path does not match our LIBGL_DRIVERS_PATH
# (because it changed in a newer mesa or because it was compiled
# for a different set of multilib abis than we are) stuff breaks.
# We create one file per ABI to work with "native" multilib, see
# below.
echo "COLON_SEPARATED=LIBGL_DRIVERS_PATH" > "${T}/03ati-colon-sep"
doenvd "${T}/03ati-colon-sep" || die
# All libraries that we have a 32 bit and 64 bit version of on
# amd64 are installed in src_install-libs. Everything else
# (including libraries only available in native 64bit on amd64)
# goes in here.
# There used to be some code here that tried to detect running
# under a "native multilib" portage ((precursor of)
# http://dev.gentoo.org/~kanaka/auto-multilib/). I removed that, it
# should just work (only doing some duplicate work). --marienz
if has_multilib_profile; then
local OABI=${ABI}
for ABI in $(get_install_abis); do
src_install-libs
done
ABI=${OABI}
unset OABI
else
src_install-libs
fi
# This is sorted by the order the files occur in the source tree.
# X modules.
exeinto /usr/$(get_libdir)/xorg/modules/drivers
doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/drivers/fglrx_drv.so
exeinto /usr/$(get_libdir)/xorg/modules/linux
doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/linux/libfglrxdrm.so
exeinto /usr/$(get_libdir)/xorg/modules
doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/{glesx.so,amdxmm.so}
# Arch-specific files.
# (s)bin.
into /opt
dosbin "${ARCH_DIR}"/usr/sbin/atieventsd
use qt4 && dosbin "${ARCH_DIR}"/usr/sbin/amdnotifyui
dobin "${ARCH_DIR}"/usr/bin/clinfo
# We cleaned out the compilable stuff in src_unpack
dobin "${ARCH_DIR}"/usr/X11R6/bin/*
# Common files.
# etc.
insinto /etc/ati
exeinto /etc/ati
# Everything except for the authatieventsd.sh script.
doins ${FOLDER_PREFIX}etc/ati/{logo*,control,atiogl.xml,signature,amdpcsdb.default}
doexe ${FOLDER_PREFIX}etc/ati/authatieventsd.sh
# include.
insinto /usr
doins -r ${FOLDER_PREFIX}usr/include
insinto /usr/include/X11/extensions
# Just the atigetsysteminfo.sh script.
into /usr
dosbin ${FOLDER_PREFIX}usr/sbin/*
# data files for the control panel.
if use qt4 ; then
insinto /usr/share
doins -r ${FOLDER_PREFIX}usr/share/ati
insinto /usr/share/pixmaps
doins ${FOLDER_PREFIX}usr/share/icons/ccc_large.xpm
make_desktop_entry amdcccle 'AMD Catalyst Control Center' \
ccc_large System
fi
# doc.
dohtml -r ${FOLDER_PREFIX}usr/share/doc/fglrx
doman ${FOLDER_PREFIX}usr/share/man/man8/atieventsd.8
pushd ${FOLDER_PREFIX}usr/share/doc/fglrx/examples/etc/acpi > /dev/null
exeinto /etc/acpi
doexe ati-powermode.sh
insinto /etc/acpi/events
doins events/*
popd > /dev/null
# Done with the "source" tree. Install tools we rebuilt:
dobin extra/fgl_glxgears/fgl_glxgears
newdoc extra/fgl_glxgears/README README.fgl_glxgears
# Gentoo-specific stuff:
newinitd "${FILESDIR}"/atieventsd.init atieventsd
echo 'ATIEVENTSDOPTS=""' > "${T}"/atieventsd.conf
newconfd "${T}"/atieventsd.conf atieventsd
# PowerXpress stuff
exeinto /usr/$(get_libdir)/fglrx
doexe "${FILESDIR}"/switchlibGL || die "doexe switchlibGL failed"
cp "${FILESDIR}"/switchlibGL "${T}"/switchlibglx
doexe "${T}"/switchlibglx || die "doexe switchlibglx failed"
}
src_install-libs() {
if [[ "${ABI}" == "amd64" ]]; then
local EX_BASE_DIR="${BASE_DIR}_64a"
local pkglibdir=lib64
local MY_ARCH_DIR="${S}/arch/x86_64"
local oclsuffix=64
else
local EX_BASE_DIR="${BASE_DIR}"
local pkglibdir=lib
local MY_ARCH_DIR="${S}/arch/x86"
local oclsuffix=32
fi
einfo "ati tree '${pkglibdir}' -> '$(get_libdir)' on system"
local ATI_ROOT=/usr/$(get_libdir)/opengl/ati
# To make sure we do not miss a spot when these change.
local libmajor=1 libminor=2
local libver=${libmajor}.${libminor}
# The GLX libraries
# (yes, this really is "lib" even on amd64/multilib --marienz)
exeinto ${ATI_ROOT}/lib
newexe "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir}/fglrx/fglrx-libGL.so.${libver} \
libGL.so.${libver}
dosym libGL.so.${libver} ${ATI_ROOT}/lib/libGL.so.${libmajor}
dosym libGL.so.${libver} ${ATI_ROOT}/lib/libGL.so
exeinto ${ATI_ROOT}/extensions
doexe "${EX_BASE_DIR}"/usr/X11R6/${pkglibdir}/modules/extensions/fglrx/fglrx-libglx.so
mv "${D}"/${ATI_ROOT}/extensions/{fglrx-,}libglx.so
# other libs
exeinto /usr/$(get_libdir)
# Everything except for the libGL.so installed some row above
doexe $(find "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir} \
-maxdepth 1 -type f -name '*.so*' -not -name '*libGL.so*')
insinto /usr/$(get_libdir)
doins $(find "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir} \
-maxdepth 1 -type f -not -name '*.so*')
# DRI modules, installed into the path used by recent versions of mesa.
exeinto /usr/$(get_libdir)/dri
doexe "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir}/modules/dri/fglrx_dri.so
# AMD Cal and OpenCL libraries
exeinto /usr/$(get_libdir)/OpenCL/vendors/amd
doexe "${MY_ARCH_DIR}"/usr/${pkglibdir}/libamdocl*.so*
doexe "${MY_ARCH_DIR}"/usr/${pkglibdir}/libOpenCL*.so*
dosym libOpenCL.so.${libmajor} /usr/$(get_libdir)/OpenCL/vendors/amd/libOpenCL.so
exeinto /usr/$(get_libdir)
doexe "${MY_ARCH_DIR}"/usr/${pkglibdir}/libati*.so*
# OpenCL vendor files
insinto /etc/OpenCL/vendors/
cat > "${T}"/amdocl${oclsuffix}.icd <<-EOF
/usr/$(get_libdir)/OpenCL/vendors/amd/libamdocl${oclsuffix}.so
EOF
doins "${T}"/amdocl${oclsuffix}.icd
local envname="${T}"/04ati-dri-path
if [[ -n ${ABI} ]]; then
envname="${envname}-${ABI}"
fi
echo "LIBGL_DRIVERS_PATH=/usr/$(get_libdir)/dri" > "${envname}"
doenvd "${envname}"
# Silence the QA notice by creating missing soname symlinks
for so in $(find "${D}"/usr/$(get_libdir) -maxdepth 1 -name *.so.[0-9].[0-9])
do
local soname=${so##*/}
local soname_one=${soname%.[0-9]}
local soname_zero=${soname_one%.[0-9]}
dosym ${soname} /usr/$(get_libdir)/${soname_one}
dosym ${soname_one} /usr/$(get_libdir)/${soname_zero}
done
# See https://bugs.gentoo.org/show_bug.cgi?id=443466
dodir /etc/revdep-rebuild/
echo "SEARCH_DIRS_MASK=\"/opt/bin/clinfo\"" > "${ED}/etc/revdep-rebuild/62-ati-drivers"
#remove static libs if not wanted
use static-libs || rm -rf "${D}"/usr/$(get_libdir)/libfglrx_dm.a
#install xvba sdk headers
doheader xvba_sdk/include/amdxvba.h
if use pax_kernel; then
pax-mark m "${D}"/usr/lib*/opengl/ati/lib/libGL.so.1.2 || die "pax-mark failed"
fi
}
pkg_postinst() {
elog "To switch to AMD OpenGL, run \"eselect opengl set ati\""
elog "To change your xorg.conf you can use the bundled \"aticonfig\""
elog
elog "If you experience unexplained segmentation faults and kernel crashes"
elog "with this driver and multi-threaded applications such as wine,"
elog "set UseFastTLS in xorg.conf to either 0 or 1, but not 2."
elog
elog "Fully rebooting the system after an ${PN} update is recommended"
elog "Stopping Xorg, reloading fglrx kernel module and restart Xorg"
elog "might not work"
elog
elog "Some cards need acpid running to handle events"
elog "Please add it to boot runlevel with rc-update add acpid boot"
elog
use modules && linux-mod_pkg_postinst
"${ROOT}"/usr/bin/eselect opengl set --use-old ati
"${ROOT}"/usr/bin/eselect opencl set --use-old amd
if has_version "x11-drivers/xf86-video-intel[sna]"; then
ewarn "It is reported that xf86-video-intel built with USE=\"sna\" causes the X server"
ewarn "to crash on systems that use hybrid AMD/Intel graphics. If you experience"
ewarn "this crash, downgrade to xf86-video-intel-2.20.2 or earlier or"
ewarn "try disabling sna for xf86-video-intel."
ewarn "For details, see https://bugs.gentoo.org/show_bug.cgi?id=430000"
fi
if use pax_kernel; then
ewarn "Please run \"revdep-pax -s libGL.so.1 -me\" after installation and"
ewarn "after you have run \"eselect opengl set ati\". Executacle"
ewarn "revdep-pax is part of package sys-apps/elfix."
fi
}
pkg_preinst() {
use modules && linux-mod_pkg_preinst
}
pkg_prerm() {
"${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
}
pkg_postrm() {
use modules && linux-mod_pkg_postrm
"${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
}

View file

@ -0,0 +1,622 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/ati-drivers/ati-drivers-13.6_beta.ebuild,v 1.4 2013/06/18 14:00:32 chithanh Exp $
EAPI=5
inherit eutils multilib linux-info linux-mod toolchain-funcs versionator pax-utils
DESCRIPTION="Ati precompiled drivers for Radeon Evergreen (HD5000 Series) and newer chipsets"
HOMEPAGE="http://www.amd.com"
MY_V=( $(get_version_components) )
#RUN="${WORKDIR}/amd-driver-installer-9.00-x86.x86_64.run"
SLOT="1"
if [[ "${MY_V[2]}" =~ beta.* ]]; then
BETADIR="beta/"
else
BETADIR="linux/"
fi
if [[ legacy != ${SLOT} ]]; then
DRIVERS_URI="http://www2.ati.com/drivers/${BETADIR}amd-driver-installer-catalyst-13-6-beta-x86.x86_64.zip"
else
DRIVERS_URI="http://www2.ati.com/drivers/legacy/amd-driver-installer-catalyst-$(get_version_component_range 1-2)-$(get_version_component_range 3)-legacy-linux-x86.x86_64.zip"
fi
XVBA_SDK_URI="http://developer.amd.com/wordpress/media/2012/10/xvba-sdk-0.74-404001.tar.gz"
SRC_URI="${DRIVERS_URI} ${XVBA_SDK_URI}"
FOLDER_PREFIX="common/"
IUSE="debug +modules multilib qt4 static-libs disable-watermark pax_kernel"
LICENSE="AMD GPL-2 QPL-1.0"
KEYWORDS="-* ~amd64 ~x86"
RESTRICT="bindist test"
RDEPEND="
<=x11-base/xorg-server-1.14.49[-minimal]
>=app-admin/eselect-opengl-1.0.7
app-admin/eselect-opencl
sys-power/acpid
x11-apps/xauth
x11-libs/libX11
x11-libs/libXext
x11-libs/libXinerama
x11-libs/libXrandr
x11-libs/libXrender
virtual/glu
multilib? (
app-emulation/emul-linux-x86-opengl
|| (
(
x11-libs/libX11[abi_x86_32]
x11-libs/libXext[abi_x86_32]
x11-libs/libXinerama[abi_x86_32]
x11-libs/libXrandr[abi_x86_32]
x11-libs/libXrender[abi_x86_32]
)
app-emulation/emul-linux-x86-xlibs
)
)
qt4? (
x11-libs/libICE
x11-libs/libSM
x11-libs/libXcursor
x11-libs/libXfixes
x11-libs/libXxf86vm
dev-qt/qtcore:4
dev-qt/qtgui:4[accessibility]
)
"
if [[ legacy != ${SLOT} ]]; then
RDEPEND="${RDEPEND}
!x11-drivers/ati-drivers:legacy"
else
RDEPEND="${RDEPEND}
!x11-drivers/ati-drivers:1"
fi
DEPEND="${RDEPEND}
x11-proto/inputproto
x11-proto/xf86miscproto
x11-proto/xf86vidmodeproto
x11-proto/xineramaproto
x11-libs/libXtst
sys-apps/findutils
app-misc/pax-utils
app-arch/unzip
"
EMULTILIB_PKG="true"
S="${WORKDIR}"
# QA Silencing
QA_TEXTRELS="
usr/lib*/opengl/ati/lib/libGL.so.1.2
usr/lib*/libatiadlxx.so
usr/lib*/xorg/modules/glesx.so
usr/lib*/libaticaldd.so
usr/lib*/dri/fglrx_dri.so
"
QA_EXECSTACK="
opt/bin/atiode
opt/bin/amdcccle
usr/lib*/opengl/ati/lib/libGL.so.1.2
usr/lib*/dri/fglrx_dri.so
"
QA_WX_LOAD="
usr/lib*/opengl/ati/lib/libGL.so.1.2
usr/lib*/dri/fglrx_dri.so
"
QA_PRESTRIPPED="
usr/lib\(32\|64\)\?/libXvBAW.so.1.0
usr/lib\(32\|64\)\?/opengl/ati/lib/libGL.so.1.2
usr/lib\(32\|64\)\?/opengl/ati/extensions/libglx.so
usr/lib\(32\|64\)\?/xorg/modules/glesx.so
usr/lib\(32\|64\)\?/libAMDXvBA.so.1.0
usr/lib\(32\|64\)\?/libaticaldd.so
usr/lib\(32\|64\)\?/dri/fglrx_dri.so
"
QA_SONAME="
usr/lib\(32\|64\)\?/libatiadlxx.so
usr/lib\(32\|64\)\?/libaticalcl.so
usr/lib\(32\|64\)\?/libaticaldd.so
usr/lib\(32\|64\)\?/libaticalrt.so
usr/lib\(32\|64\)\?/libamdocl\(32\|64\)\?.so
"
QA_DT_HASH="
opt/bin/amdcccle
opt/bin/aticonfig
opt/bin/atiodcli
opt/bin/atiode
opt/bin/clinfo
opt/bin/fglrxinfo
opt/sbin/atieventsd
opt/sbin/amdnotifyui
usr/lib\(32\|64\)\?/libaticalcl.so
usr/lib\(32\|64\)\?/libaticalrt.so
usr/lib\(32\|64\)\?/libatiuki.so.1.0
usr/lib\(32\|64\)\?/libatiadlxx.so
usr/lib\(32\|64\)\?/libfglrx_dm.so.1.0
usr/lib\(32\|64\)\?/libXvBAW.so.1.0
usr/lib\(32\|64\)\?/libAMDXvBA.so.1.0
usr/lib\(32\|64\)\?/xorg/modules/amdxmm.so
usr/lib\(32\|64\)\?/xorg/modules/glesx.so
usr/lib\(32\|64\)\?/xorg/modules/linux/libfglrxdrm.so
usr/lib\(32\|64\)\?/xorg/modules/drivers/fglrx_drv.so
usr/lib\(32\|64\)\?/libaticaldd.so
usr/lib\(32\|64\)\?/dri/fglrx_dri.so
usr/lib\(32\|64\)\?/opengl/ati/extensions/libglx.so
usr/lib\(32\|64\)\?/opengl/ati/extensions/fglrx-libglx.so
usr/lib\(32\|64\)\?/opengl/ati/lib/fglrx-libGL.so.1.2
usr/lib\(32\|64\)\?/opengl/ati/lib/libGL.so.1.2
usr/lib\(32\|64\)\?/OpenCL/vendors/amd/libamdocl\(32\|64\)\?.so
usr/lib\(32\|64\)\?/OpenCL/vendors/amd/libOpenCL.so.1
"
CONFIG_CHECK="~MTRR ~!DRM ACPI PCI_MSI !LOCKDEP !PAX_KERNEXEC_PLUGIN_METHOD_OR"
ERROR_MTRR="CONFIG_MTRR required for direct rendering."
ERROR_DRM="CONFIG_DRM must be disabled or compiled as a module and not loaded for direct
rendering to work."
ERROR_LOCKDEP="CONFIG_LOCKDEP (lock tracking) exports the symbol lock_acquire
as GPL-only. This prevents ${P} from compiling with an error like this:
FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'lock_acquire'"
ERROR_PAX_KERNEXEC_PLUGIN_METHOD_OR="This config option will cause
kernel to reject loading the fglrx module with
\"ERROR: could not insert 'fglrx': Exec format error.\"
You may want to try CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_BTS instead."
_check_kernel_config() {
if ! linux_chkconfig_present AGP && \
! linux_chkconfig_present PCIEPORTBUS; then
ewarn "You don't have AGP and/or PCIe support enabled in the kernel"
ewarn "Direct rendering will not work."
fi
kernel_is ge 2 6 37 && kernel_is le 2 6 38 && if ! linux_chkconfig_present BKL ; then
die "CONFIG_BKL must be enabled for kernels 2.6.37-2.6.38."
fi
if use amd64 && ! linux_chkconfig_present COMPAT; then
die "CONFIG_COMPAT must be enabled for amd64 kernels."
fi
}
pkg_pretend() {
# workaround until bug 365543 is solved
if ! has XT ${PAX_MARKINGS} && use pax_kernel; then
ewarn "You have disabled xattr pax markings for portage."
ewarn "This will likely cause programs using ati-drivers provided"
ewarn "libraries to be killed kernel."
fi
}
pkg_setup() {
if use modules; then
MODULE_NAMES="fglrx(video:${S}/${FOLDER_PREFIX}/lib/modules/fglrx/build_mod/2.6.x)"
BUILD_TARGETS="kmod_build"
linux-mod_pkg_setup
BUILD_PARAMS="GCC_VER_MAJ=$(gcc-major-version) KVER=${KV_FULL} KDIR=${KV_DIR}"
BUILD_PARAMS="${BUILD_PARAMS} CFLAGS_MODULE+=\"-DMODULE -DATI -DFGL\""
if grep -q arch_compat_alloc_user_space ${KV_DIR}/arch/x86/include/asm/compat.h ; then
BUILD_PARAMS="${BUILD_PARAMS} CFLAGS_MODULE+=-DCOMPAT_ALLOC_USER_SPACE=arch_compat_alloc_user_space"
else
BUILD_PARAMS="${BUILD_PARAMS} CFLAGS_MODULE+=-DCOMPAT_ALLOC_USER_SPACE=compat_alloc_user_space"
fi
fi
# Define module dir.
MODULE_DIR="${S}/${FOLDER_PREFIX}/lib/modules/fglrx/build_mod"
# get the xorg-server version and set BASE_DIR for that
BASE_DIR="${S}/xpic"
# amd64/x86
if use amd64 ; then
MY_BASE_DIR="${BASE_DIR}_64a"
PKG_LIBDIR=lib64
ARCH_DIR="${S}/arch/x86_64"
else
MY_BASE_DIR="${BASE_DIR}"
PKG_LIBDIR=lib
ARCH_DIR="${S}/arch/x86"
fi
elog
elog "Please note that this driver only supports graphic cards based on"
elog "Evergreen chipset and newer."
elog "This includes the AMD Radeon HD 5400+ series at this moment."
elog
elog "If your card is older then use ${CATEGORY}/xf86-video-ati"
elog "For migration informations please refer to:"
elog "http://www.gentoo.org/proj/en/desktop/x/x11/ati-migration-guide.xml"
einfo
}
src_unpack() {
local DRIVERS_DISTFILE XVBA_SDK_DISTFILE
DRIVERS_DISTFILE=${DRIVERS_URI##*/}
XVBA_SDK_DISTFILE=${XVBA_SDK_URI##*/}
if [[ ${DRIVERS_DISTFILE} =~ .*\.tar\.gz ]]; then
unpack ${DRIVERS_DISTFILE}
else
#please note, RUN may be insanely assigned at top near SRC_URI
if [[ ${DRIVERS_DISTFILE} =~ .*\.zip ]]; then
unpack ${DRIVERS_DISTFILE}
[[ -z "$RUN" ]] && RUN="${S}/${DRIVERS_DISTFILE/%.zip/.run}"
else
RUN="${DISTDIR}/${DRIVERS_DISTFILE}"
fi
sh ${RUN} --extract "${S}" 2>&1 > /dev/null || die
fi
mkdir xvba_sdk
cd xvba_sdk
unpack ${XVBA_SDK_DISTFILE}
}
src_prepare() {
if use modules; then
if use debug; then
sed -i '/^#define DRM_DEBUG_CODE/s/0/1/' \
"${MODULE_DIR}/firegl_public.c" \
|| die "Failed to enable debug output."
fi
fi
# These are the userspace utilities that we also have source for.
# We rebuild these later.
rm \
"${ARCH_DIR}"/usr/X11R6/bin/fgl_glxgears \
|| die "bin rm failed"
# in this version amdcccle isn't static, thus we depend on qt4
use qt4 || rm "${ARCH_DIR}"/usr/X11R6/bin/amdcccle
# ACPI fixups
sed -i \
-e "s:/var/lib/xdm/authdir/authfiles/:/var/run/xauth/:" \
-e "s:/var/lib/gdm/:/var/gdm/:" \
"${S}/${FOLDER_PREFIX}etc/ati/authatieventsd.sh" \
|| die "ACPI fixups failed."
# Since "who" is in coreutils, we're using that one instead of "finger".
sed -i -e 's:finger:who:' \
"${S}/${FOLDER_PREFIX}usr/share/doc/fglrx/examples/etc/acpi/ati-powermode.sh" \
|| die "Replacing 'finger' with 'who' failed."
# Adjust paths in the script from /usr/X11R6/bin/ to /opt/bin/ and
# add function to detect default state.
epatch "${FILESDIR}"/ati-powermode-opt-path-3.patch
# see http://ati.cchtml.com/show_bug.cgi?id=495
#epatch "${FILESDIR}"/ati-drivers-old_rsp.patch
# first hunk applied upstream second (x32 related) was not
epatch "${FILESDIR}"/ati-drivers-x32_something_something.patch
# compile fix for AGP-less kernel, bug #435322
epatch "${FILESDIR}"/ati-drivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch
# Compile fix for kernel typesafe uid types #469160
epatch "${FILESDIR}/typesafe-kuid.diff"
epatch "${FILESDIR}/ati-drivers-13.6-linux-3.10-proc.diff"
# Compile fix, https://bugs.gentoo.org/show_bug.cgi?id=454870
use pax_kernel && epatch "${FILESDIR}/const-notifier-block.patch"
cd "${MODULE_DIR}"
# bugged fglrx build system, this file should be copied by hand
cp ${ARCH_DIR}/lib/modules/fglrx/build_mod/libfglrx_ip.a 2.6.x
convert_to_m 2.6.x/Makefile || die "convert_to_m failed"
# When built with ati's make.sh it defines a bunch of macros if
# certain .config values are set, falling back to less reliable
# detection methods if linux/autoconf.h is not available. We
# simply use the linux/autoconf.h settings directly, bypassing the
# detection script.
sed -i -e 's/__SMP__/CONFIG_SMP/' *.c *h || die "SMP sed failed"
sed -i -e 's/ifdef MODVERSIONS/ifdef CONFIG_MODVERSIONS/' *.c *.h \
|| die "MODVERSIONS sed failed"
cd "${S}"
mkdir extra || die "mkdir extra failed"
cd extra
unpack ./../${FOLDER_PREFIX}usr/src/ati/fglrx_sample_source.tgz
# Get rid of watermark. Oldest known reference:
# http://phoronix.com/forums/showthread.php?19875-Unsupported-Hardware-watermark
if use disable-watermark; then
ebegin "Disabling watermark"
driver="${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/drivers/fglrx_drv.so
for x in $(objdump -d ${driver}|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
sed -i "s/${x/x5b/\x5b}/\x90\x90\x90\x90\x90/g" ${driver} || break 1
done
eend $? || die "Disabling watermark failed"
fi
}
src_compile() {
use modules && linux-mod_src_compile
ebegin "Building fgl_glxgears"
cd "${S}"/extra/fgl_glxgears
# These extra libs/utils either have an Imakefile that does not
# work very well without tweaking or a Makefile ignoring CFLAGS
# and the like. We bypass those.
# The -DUSE_GLU is needed to compile using nvidia headers
# according to a comment in ati-drivers-extra-8.33.6.ebuild.
"$(tc-getCC)" -o fgl_glxgears ${CFLAGS} ${LDFLAGS} -DUSE_GLU \
-I"${S}"/${FOLDER_PREFIX}usr/include fgl_glxgears.c \
-lGL -lGLU -lX11 -lm || die "fgl_glxgears build failed"
eend $?
}
src_install() {
use modules && linux-mod_src_install
# We can do two things here, and neither of them is very nice.
# For direct rendering libGL has to be able to load one or more
# dri modules (files ending in _dri.so, like fglrx_dri.so).
# Gentoo's mesa looks for these files in the location specified by
# LIBGL_DRIVERS_PATH or LIBGL_DRIVERS_DIR, then in the hardcoded
# location /usr/$(get_libdir)/dri. Ati's libGL does the same
# thing, but the hardcoded location is /usr/X11R6/lib/modules/dri
# on x86 and amd64 32bit, /usr/X11R6/lib64/modules/dri on amd64
# 64bit. So we can either put the .so files in that (unusual,
# compared to "normal" mesa libGL) location or set
# LIBGL_DRIVERS_PATH. We currently do the latter. See also bug
# 101539.
# The problem with this approach is that LIBGL_DRIVERS_PATH
# *overrides* the default hardcoded location, it does not extend
# it. So if ati-drivers is merged but a non-ati libGL is selected
# and its hardcoded path does not match our LIBGL_DRIVERS_PATH
# (because it changed in a newer mesa or because it was compiled
# for a different set of multilib abis than we are) stuff breaks.
# We create one file per ABI to work with "native" multilib, see
# below.
echo "COLON_SEPARATED=LIBGL_DRIVERS_PATH" > "${T}/03ati-colon-sep"
doenvd "${T}/03ati-colon-sep" || die
# All libraries that we have a 32 bit and 64 bit version of on
# amd64 are installed in src_install-libs. Everything else
# (including libraries only available in native 64bit on amd64)
# goes in here.
# There used to be some code here that tried to detect running
# under a "native multilib" portage ((precursor of)
# http://dev.gentoo.org/~kanaka/auto-multilib/). I removed that, it
# should just work (only doing some duplicate work). --marienz
if has_multilib_profile; then
local OABI=${ABI}
for ABI in $(get_install_abis); do
src_install-libs
done
ABI=${OABI}
unset OABI
else
src_install-libs
fi
# This is sorted by the order the files occur in the source tree.
# X modules.
exeinto /usr/$(get_libdir)/xorg/modules/drivers
doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/drivers/fglrx_drv.so
exeinto /usr/$(get_libdir)/xorg/modules/linux
doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/linux/libfglrxdrm.so
exeinto /usr/$(get_libdir)/xorg/modules
doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/{glesx.so,amdxmm.so}
# Arch-specific files.
# (s)bin.
into /opt
dosbin "${ARCH_DIR}"/usr/sbin/atieventsd
use qt4 && dosbin "${ARCH_DIR}"/usr/sbin/amdnotifyui
dobin "${ARCH_DIR}"/usr/bin/clinfo
# We cleaned out the compilable stuff in src_unpack
dobin "${ARCH_DIR}"/usr/X11R6/bin/*
# Common files.
# etc.
insinto /etc/ati
exeinto /etc/ati
# Everything except for the authatieventsd.sh script.
doins ${FOLDER_PREFIX}etc/ati/{logo*,control,atiogl.xml,signature,amdpcsdb.default}
doexe ${FOLDER_PREFIX}etc/ati/authatieventsd.sh
# include.
insinto /usr
doins -r ${FOLDER_PREFIX}usr/include
insinto /usr/include/X11/extensions
# Just the atigetsysteminfo.sh script.
into /usr
dosbin ${FOLDER_PREFIX}usr/sbin/*
# data files for the control panel.
if use qt4 ; then
insinto /usr/share
doins -r ${FOLDER_PREFIX}usr/share/ati
insinto /usr/share/pixmaps
doins ${FOLDER_PREFIX}usr/share/icons/ccc_large.xpm
make_desktop_entry amdcccle 'AMD Catalyst Control Center' \
ccc_large System
fi
# doc.
dohtml -r ${FOLDER_PREFIX}usr/share/doc/fglrx
doman ${FOLDER_PREFIX}usr/share/man/man8/atieventsd.8
pushd ${FOLDER_PREFIX}usr/share/doc/fglrx/examples/etc/acpi > /dev/null
exeinto /etc/acpi
doexe ati-powermode.sh
insinto /etc/acpi/events
doins events/*
popd > /dev/null
# Done with the "source" tree. Install tools we rebuilt:
dobin extra/fgl_glxgears/fgl_glxgears
newdoc extra/fgl_glxgears/README README.fgl_glxgears
# Gentoo-specific stuff:
newinitd "${FILESDIR}"/atieventsd.init atieventsd
echo 'ATIEVENTSDOPTS=""' > "${T}"/atieventsd.conf
newconfd "${T}"/atieventsd.conf atieventsd
# PowerXpress stuff
exeinto /usr/$(get_libdir)/fglrx
doexe "${FILESDIR}"/switchlibGL || die "doexe switchlibGL failed"
cp "${FILESDIR}"/switchlibGL "${T}"/switchlibglx
doexe "${T}"/switchlibglx || die "doexe switchlibglx failed"
}
src_install-libs() {
if [[ "${ABI}" == "amd64" ]]; then
local EX_BASE_DIR="${BASE_DIR}_64a"
local pkglibdir=lib64
local MY_ARCH_DIR="${S}/arch/x86_64"
local oclsuffix=64
else
local EX_BASE_DIR="${BASE_DIR}"
local pkglibdir=lib
local MY_ARCH_DIR="${S}/arch/x86"
local oclsuffix=32
fi
einfo "ati tree '${pkglibdir}' -> '$(get_libdir)' on system"
local ATI_ROOT=/usr/$(get_libdir)/opengl/ati
# To make sure we do not miss a spot when these change.
local libmajor=1 libminor=2
local libver=${libmajor}.${libminor}
# The GLX libraries
# (yes, this really is "lib" even on amd64/multilib --marienz)
exeinto ${ATI_ROOT}/lib
newexe "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir}/fglrx/fglrx-libGL.so.${libver} \
libGL.so.${libver}
dosym libGL.so.${libver} ${ATI_ROOT}/lib/libGL.so.${libmajor}
dosym libGL.so.${libver} ${ATI_ROOT}/lib/libGL.so
exeinto ${ATI_ROOT}/extensions
doexe "${EX_BASE_DIR}"/usr/X11R6/${pkglibdir}/modules/extensions/fglrx/fglrx-libglx.so
mv "${D}"/${ATI_ROOT}/extensions/{fglrx-,}libglx.so
# other libs
exeinto /usr/$(get_libdir)
# Everything except for the libGL.so installed some row above
doexe $(find "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir} \
-maxdepth 1 -type f -name '*.so*' -not -name '*libGL.so*')
insinto /usr/$(get_libdir)
doins $(find "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir} \
-maxdepth 1 -type f -not -name '*.so*')
# DRI modules, installed into the path used by recent versions of mesa.
exeinto /usr/$(get_libdir)/dri
doexe "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir}/modules/dri/fglrx_dri.so
# AMD Cal and OpenCL libraries
exeinto /usr/$(get_libdir)/OpenCL/vendors/amd
doexe "${MY_ARCH_DIR}"/usr/${pkglibdir}/libamdocl*.so*
doexe "${MY_ARCH_DIR}"/usr/${pkglibdir}/libOpenCL*.so*
dosym libOpenCL.so.${libmajor} /usr/$(get_libdir)/OpenCL/vendors/amd/libOpenCL.so
exeinto /usr/$(get_libdir)
doexe "${MY_ARCH_DIR}"/usr/${pkglibdir}/libati*.so*
# OpenCL vendor files
insinto /etc/OpenCL/vendors/
cat > "${T}"/amdocl${oclsuffix}.icd <<-EOF
/usr/$(get_libdir)/OpenCL/vendors/amd/libamdocl${oclsuffix}.so
EOF
doins "${T}"/amdocl${oclsuffix}.icd
local envname="${T}"/04ati-dri-path
if [[ -n ${ABI} ]]; then
envname="${envname}-${ABI}"
fi
echo "LIBGL_DRIVERS_PATH=/usr/$(get_libdir)/dri" > "${envname}"
doenvd "${envname}"
# Silence the QA notice by creating missing soname symlinks
for so in $(find "${D}"/usr/$(get_libdir) -maxdepth 1 -name *.so.[0-9].[0-9])
do
local soname=${so##*/}
local soname_one=${soname%.[0-9]}
local soname_zero=${soname_one%.[0-9]}
dosym ${soname} /usr/$(get_libdir)/${soname_one}
dosym ${soname_one} /usr/$(get_libdir)/${soname_zero}
done
# See https://bugs.gentoo.org/show_bug.cgi?id=443466
dodir /etc/revdep-rebuild/
echo "SEARCH_DIRS_MASK=\"/opt/bin/clinfo\"" > "${ED}/etc/revdep-rebuild/62-ati-drivers"
#remove static libs if not wanted
use static-libs || rm -rf "${D}"/usr/$(get_libdir)/libfglrx_dm.a
#install xvba sdk headers
doheader xvba_sdk/include/amdxvba.h
if use pax_kernel; then
pax-mark m "${D}"/usr/lib*/opengl/ati/lib/libGL.so.1.2 || die "pax-mark failed"
fi
}
pkg_postinst() {
elog "To switch to AMD OpenGL, run \"eselect opengl set ati\""
elog "To change your xorg.conf you can use the bundled \"aticonfig\""
elog
elog "If you experience unexplained segmentation faults and kernel crashes"
elog "with this driver and multi-threaded applications such as wine,"
elog "set UseFastTLS in xorg.conf to either 0 or 1, but not 2."
elog
elog "Fully rebooting the system after an ${PN} update is recommended"
elog "Stopping Xorg, reloading fglrx kernel module and restart Xorg"
elog "might not work"
elog
elog "Some cards need acpid running to handle events"
elog "Please add it to boot runlevel with rc-update add acpid boot"
elog
use modules && linux-mod_pkg_postinst
"${ROOT}"/usr/bin/eselect opengl set --use-old ati
"${ROOT}"/usr/bin/eselect opencl set --use-old amd
if has_version "x11-drivers/xf86-video-intel[sna]"; then
ewarn "It is reported that xf86-video-intel built with USE=\"sna\" causes the X server"
ewarn "to crash on systems that use hybrid AMD/Intel graphics. If you experience"
ewarn "this crash, downgrade to xf86-video-intel-2.20.2 or earlier or"
ewarn "try disabling sna for xf86-video-intel."
ewarn "For details, see https://bugs.gentoo.org/show_bug.cgi?id=430000"
fi
if use pax_kernel; then
ewarn "Please run \"revdep-pax -s libGL.so.1 -me\" after installation and"
ewarn "after you have run \"eselect opengl set ati\". Executacle"
ewarn "revdep-pax is part of package sys-apps/elfix."
fi
}
pkg_preinst() {
use modules && linux-mod_pkg_preinst
}
pkg_prerm() {
"${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
}
pkg_postrm() {
use modules && linux-mod_pkg_postrm
"${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
}

View file

@ -0,0 +1,27 @@
From: Vasiliy Yeremeyev <vayerx@gmail.com>
Date: Sun, 4 Nov 2012 23:59:36 +0400
Subject: [PATCH] KCL_AGP_FindCapsRegisters stub for AGP-less systems
---
common/lib/modules/fglrx/build_mod/kcl_agp.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/common/lib/modules/fglrx/build_mod/kcl_agp.c b/common/lib/modules/fglrx/build_mod/kcl_agp.c
index b9c0655..cb1902b 100644
--- a/common/lib/modules/fglrx/build_mod/kcl_agp.c
+++ b/common/lib/modules/fglrx/build_mod/kcl_agp.c
@@ -479,6 +479,11 @@ int ATI_API_CALL KCL_AGP_Enable(unsigned long mode)
return -EINVAL;
}
+int ATI_API_CALL KCL_AGP_FindCapsRegisters(KCL_PCI_DevHandle dev)
+{
+ return -EINVAL;
+}
+
int ATI_API_CALL KCL_AGP_ReadCapsRegisters(KCL_PCI_DevHandle dev, unsigned int *caps)
{
return -EINVAL;
--
1.7.12

View file

@ -0,0 +1,356 @@
diff --git a/common/lib/modules/fglrx/build_mod/drmP.h b/common/lib/modules/fglrx/build_mod/drmP.h
index 81546b2..4e74526 100755
--- a/common/lib/modules/fglrx/build_mod/drmP.h
+++ b/common/lib/modules/fglrx/build_mod/drmP.h
@@ -901,10 +901,6 @@ int DRM(stub_register)(const char *name,
int DRM(stub_unregister)(int minor);
/* Proc support (drm_proc.h) */
-extern struct proc_dir_entry *DRM(proc_init)(drm_device_t *dev,
- int minor,
- struct proc_dir_entry *root,
- struct proc_dir_entry **dev_root);
extern int DRM(proc_cleanup)(int minor,
struct proc_dir_entry *root,
struct proc_dir_entry *dev_root);
diff --git a/common/lib/modules/fglrx/build_mod/drm_proc.h b/common/lib/modules/fglrx/build_mod/drm_proc.h
index 1e3ab4a..c52ad7e 100755
--- a/common/lib/modules/fglrx/build_mod/drm_proc.h
+++ b/common/lib/modules/fglrx/build_mod/drm_proc.h
@@ -75,61 +75,6 @@ struct drm_proc_list {
#define DRM_PROC_ENTRIES (sizeof(DRM(proc_list))/sizeof(DRM(proc_list)[0]))
/**
- * Initialize the DRI proc filesystem for a device.
- *
- * \param dev DRM device.
- * \param minor device minor number.
- * \param root DRI proc dir entry.
- * \param dev_root resulting DRI device proc dir entry.
- * \return root entry pointer on success, or NULL on failure.
- *
- * Create the DRI proc root entry "/proc/ati", the device proc root entry
- * "/proc/ati/%minor%/", and each entry in proc_list as
- * "/proc/ati/%minor%/%name%".
- */
-struct proc_dir_entry *DRM(proc_init)(drm_device_t *dev, int minor,
- struct proc_dir_entry *root,
- struct proc_dir_entry **dev_root)
-{
- struct proc_dir_entry *ent;
- int i, j;
- char name[64];
-
- if (!minor) root = create_proc_entry("dri", S_IFDIR, NULL);
- if (!root) {
- DRM_ERROR("Cannot create /proc/ati\n");
- return NULL;
- }
-
- sprintf(name, "%d", minor);
- *dev_root = create_proc_entry(name, S_IFDIR, root);
- if (!*dev_root) {
- DRM_ERROR("Cannot create /proc/ati/%s\n", name);
- return NULL;
- }
-
- for (i = 0; i < DRM_PROC_ENTRIES; i++) {
- ent = create_proc_entry(DRM(proc_list)[i].name,
- S_IFREG|S_IRUGO, *dev_root);
- if (!ent) {
- DRM_ERROR("Cannot create /proc/ati/%s/%s\n",
- name, DRM(proc_list)[i].name);
- for (j = 0; j < i; j++)
- remove_proc_entry(DRM(proc_list)[i].name,
- *dev_root);
- remove_proc_entry(name, root);
- if (!minor) remove_proc_entry("dri", NULL);
- return NULL;
- }
- ent->read_proc = DRM(proc_list)[i].f;
- ent->data = dev;
- }
-
- return root;
-}
-
-
-/**
* Cleanup the proc filesystem resources.
*
* \param minor device minor number.
diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
index d3ad3ce..890a0aa 100755
--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
+++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
@@ -583,6 +583,202 @@ kcl_proc_list_t KCL_PROC_FileList[] =
{ "NULL", NULL, NULL} // Terminate List!!!
};
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+typedef int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data);
+typedef int (write_proc_t)(struct file *file, const char __user *buffer, unsigned long count, void *data);
+#else
+#define PDE_DATA(inode) (PDE((inode))->data)
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+typedef struct {
+ read_proc_t *read_func;
+ write_proc_t *write_func;
+ void *data;
+} gentoo_proc_wrapper_t;
+
+#define GENTOO_PROC_WRAPPER_OVERFLOW_MAGIC 939750305
+
+static ssize_t gentoo_proc_wrapper_read (struct file *myfile, char __user *buffer, size_t count, loff_t *offset) {
+ int is_eof=0, retval;
+ char *start, *usebuffer=NULL;
+ gentoo_proc_wrapper_t* wrapper_data=(gentoo_proc_wrapper_t*)(myfile->private_data);
+ if (PAGE_SIZE<*offset) {
+ printk(KERN_ERR "Trying to read beyond 4k on proc\n");
+ return -EIO;
+ }
+ //printk(KERN_NOTICE " call with: dev %p, func %p\n", wrapper_data->data, wrapper_data->read_func);
+
+ usebuffer=kmalloc(2*PAGE_SIZE, GFP_KERNEL);
+ if (!usebuffer)
+ return -ENOMEM;
+ ((u32*)usebuffer)[1024]=GENTOO_PROC_WRAPPER_OVERFLOW_MAGIC;
+
+ retval=wrapper_data->read_func(usebuffer, &start, *offset, count, &is_eof, wrapper_data->data);
+
+ BUG_ON(GENTOO_PROC_WRAPPER_OVERFLOW_MAGIC != ((u32*)usebuffer)[1024]);
+
+ if (0 > retval)
+ {
+ printk(KERN_ERR "Proc read failed with %d", retval);
+ goto out;
+ }
+
+ if (copy_to_user(buffer, start, retval)) {
+ printk(KERN_NOTICE "copy to user failed in amd drivers proc code\n");
+ retval=-EFAULT;
+ goto out;
+ }
+ *offset+=retval;
+
+out:
+ if (usebuffer)
+ kfree(usebuffer);
+ return retval;
+}
+static ssize_t gentoo_proc_wrapper_write (struct file *myfile, const char __user *buffer, size_t count, loff_t *offset) {
+ gentoo_proc_wrapper_t* wrapper_data=(gentoo_proc_wrapper_t*)(myfile->private_data);
+ int retval=0;
+ void *usebuffer=NULL;
+
+ BUG_ON(*offset);
+ if (!wrapper_data->write_func)
+ return -EPERM;
+
+ usebuffer=kmalloc(count, GFP_KERNEL);
+ if (!usebuffer)
+ return -ENOMEM;
+ if (copy_from_user(usebuffer, buffer, count)) {
+ printk(KERN_NOTICE "copy from user failed in amd drivers proc code\n");
+ retval=-EFAULT;
+ goto out;
+ }
+
+ retval=wrapper_data->write_func(myfile, buffer, count, wrapper_data->data);
+ *offset+=retval;
+out:
+ if (usebuffer)
+ kfree(usebuffer);
+ return retval;
+}
+static int gentoo_proc_wrapper_open(struct inode *myinode, struct file *myfile) {
+ myfile->private_data=PDE_DATA(myinode);
+ return generic_file_open(myinode, myfile);
+}
+struct file_operations gentoo_proc_fops = {
+ .read=gentoo_proc_wrapper_read,
+ .write=gentoo_proc_wrapper_write,
+ .open=gentoo_proc_wrapper_open,
+};
+
+static void *gentoo_proc_wrapper_data(read_proc_t *reader, write_proc_t *writer, void *mydata) {
+ gentoo_proc_wrapper_t *retval=kmalloc(sizeof(gentoo_proc_wrapper_t), GFP_KERNEL);
+ if (!retval)
+ return retval;
+ retval->read_func=reader;
+ retval->write_func=writer;
+ retval->data=mydata;
+ return retval;
+}
+
+static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+ int minor,
+ struct proc_dir_entry *root,
+ struct proc_dir_entry **dev_root,
+ kcl_proc_list_t *proc_list ) // proc_list must be terminated!
+{
+ struct proc_dir_entry *ent;
+ char name[64];
+ kcl_proc_list_t *list = proc_list;
+ void *tempdata;
+ KCL_DEBUG1(FN_FIREGL_PROC, "minor %d, proc_list 0x%08lx\n", minor, (unsigned long)proc_list);
+ if (!minor)
+ {
+ root = proc_mkdir("ati", NULL);
+ }
+
+ if (!root)
+ {
+ KCL_DEBUG_ERROR("Cannot create /proc/ati\n");
+ return NULL;
+ }
+
+ if (minor == 0)
+ {
+ // Global major debice number entry
+ tempdata=gentoo_proc_wrapper_data((read_proc_t*)firegl_major_proc_read, NULL, NULL);
+ if (!tempdata)
+ return NULL;
+ ent = proc_create_data("major", S_IFREG|S_IRUGO, root, &gentoo_proc_fops, tempdata);
+ if (!ent)
+ {
+ remove_proc_entry("ati", NULL);
+ KCL_DEBUG_ERROR("Cannot create /proc/ati/major\n");
+ return NULL;
+ }
+ }
+
+ sprintf(name, "%d", minor);
+ *dev_root = proc_mkdir(name, root);
+ if (!*dev_root) {
+ remove_proc_entry("major", root);
+ remove_proc_entry("ati", NULL);
+ KCL_DEBUG_ERROR("Cannot create /proc/ati/%s\n", name);
+ return NULL;
+ }
+
+ while (list->f || list->fops)
+ {
+ struct file_operations *my_fops = &gentoo_proc_fops;
+ if (list->fops)
+ {
+ my_fops = (struct file_operations*)list->fops;
+ tempdata=(dev->pubdev.signature == FGL_DEVICE_SIGNATURE)? firegl_find_device(minor) : (dev);
+ }
+ else {
+ BUG_ON(!list->f);
+ tempdata=gentoo_proc_wrapper_data((read_proc_t*)list->f, NULL, (dev->pubdev.signature == FGL_DEVICE_SIGNATURE)? firegl_find_device(minor) : (dev) );
+ if (!tempdata)
+ return NULL;
+ }
+ //printk(KERN_NOTICE "name %s, dev %p, func %p, data %p\n", list->name, (dev->pubdev.signature == FGL_DEVICE_SIGNATURE)? firegl_find_device(minor) : (dev), list->f, tempdata);
+ ent = proc_create_data(list->name, S_IFREG|S_IRUGO, *dev_root, my_fops, tempdata);
+
+ if (!ent)
+ {
+ KCL_DEBUG_ERROR("Cannot create /proc/ati/%s/%s\n", name, list->name);
+ while (proc_list != list)
+ {
+ remove_proc_entry(proc_list->name, *dev_root);
+ proc_list++;
+ }
+ remove_proc_entry(name, root);
+ if (!minor)
+ {
+ remove_proc_entry("major", root);
+ remove_proc_entry("ati", NULL);
+ }
+ return NULL;
+ }
+
+ list++;
+ }
+
+ if (minor == 0)
+ {
+ // Global debug entry, only create it once
+ tempdata=gentoo_proc_wrapper_data((read_proc_t*)firegl_debug_proc_read_wrap, (write_proc_t*)firegl_debug_proc_write_wrap, dev);
+ if (!tempdata)
+ return NULL;
+ ent=proc_create_data("debug", S_IFREG|S_IRUGO, root, &gentoo_proc_fops, tempdata);
+ if (!ent)
+ return NULL;
+ }
+
+ return root;
+}
+#else
static struct proc_dir_entry *firegl_proc_init( device_t *dev,
int minor,
struct proc_dir_entry *root,
@@ -677,6 +873,7 @@ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
return root;
}
+#endif
static int firegl_proc_cleanup( int minor,
struct proc_dir_entry *root,
@@ -6135,59 +6332,4 @@ void ATI_API_CALL KCL_fpu_end(void)
kernel_fpu_end();
}
-/** Create new directory entry under "/proc/ati/...."
- * Where
- * root_dir - Root directory. If NULL then we should use "/proc/ati" root.
- * name - Pointer to the name of directory
- * access - Access attribute. We could use it to disable access to the directory for everybody accept owner.
- * By default owner is root.
- * Return NULL if failure. Pointer to proc_dir_entry otherwise
- */
-void * KCL_create_proc_dir(void *root_dir, const char *name, unsigned int access)
-{
- struct proc_dir_entry *dir = NULL;
-
- if (root_dir == NULL)
- dir = create_proc_entry(name, S_IFDIR | access, firegl_stub_root);
- else
- dir = create_proc_entry(name, S_IFDIR | access, (struct proc_dir_entry *)root_dir);
-
- return dir;
-}
-
-/* Remove proc directory entry
- * root - Pointer to directory proc entry or NULL if for "/proc/ati"
- * name - Name to delete
- */
-void KCL_remove_proc_dir_entry(void *root, const char *name)
-{
- if (root == NULL)
- remove_proc_entry(name, firegl_stub_root);
- else
- remove_proc_entry(name, (struct proc_dir_entry *)root);
-}
-
-
-/* Create proc_entry under "root_dir"
- * read_fn - Function which will be called on read request
- * write_fn - Function which will be called on write request
- * private_data - Pointer to private data which will be passed
- */
-void KCL_create_proc_entry(void *root_dir, const char *name, unsigned int access_mode, void *read_fn, void *write_fn, void *private_data)
-{
- struct proc_dir_entry *ent = NULL;
-
- if (root_dir == NULL || name == NULL)
- return;
-
- ent = create_proc_entry(name, access_mode, (struct proc_dir_entry *)root_dir);
-
- if (ent)
- {
- ent->read_proc = (read_proc_t *)read_fn;
- ent->write_proc = (write_proc_t *)write_fn;
- ent->data = private_data;
- }
-}
-
#endif /* __KERNEL__ */

View file

@ -0,0 +1,50 @@
--- a/common/lib/modules/fglrx/build_mod/firegl_public.c 2012-06-15 18:30:13.483762070 +0200
+++ b/common/lib/modules/fglrx/build_mod/firegl_public.c 2012-06-17 17:47:36.543041869 +0200
@@ -2106,6 +2106,12 @@
}
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+# define NO_DO_MMAP
+# define do_mmap(a,b,c,d,e,f) vm_mmap(a, b, c, d, e, f)
+# define do_munmap(a,b,c) vm_munmap(b, c)
+#endif
+
unsigned long ATI_API_CALL KCL_MEM_AllocLinearAddrInterval(
KCL_IO_FILE_Handle file,
unsigned long addr,
@@ -2117,10 +2123,13 @@
flags = MAP_SHARED;
prot = PROT_READ|PROT_WRITE;
-
+#ifdef NO_DO_MMAP
+ vaddr = (void *) vm_mmap(file, 0, len, prot, flags, pgoff);
+#else
down_write(&current->mm->mmap_sem);
vaddr = (void *) do_mmap(file, 0, len, prot, flags, pgoff);
up_write(&current->mm->mmap_sem);
+#endif
if (IS_ERR(vaddr))
return 0;
else
@@ -2131,7 +2140,9 @@
{
int retcode = 0;
+#ifndef NO_DO_MMAP
down_write(&current->mm->mmap_sem);
+#endif
#ifdef FGL_LINUX_RHEL_MUNMAP_API
retcode = do_munmap(current->mm,
addr,
@@ -2142,7 +2153,9 @@
addr,
len);
#endif
+#ifndef NO_DO_MMAP
up_write(&current->mm->mmap_sem);
+#endif
return retcode;
}

View file

@ -0,0 +1,15 @@
--- common/lib/modules/fglrx/build_mod/kcl_acpi.c 2012-07-04 21:43:47.000000000 +0200
+++ common/lib/modules/fglrx/build_mod/kcl_acpi.c.new 2012-12-23 11:25:38.000000000 +0100
@@ -775,11 +775,7 @@
unsigned int ATI_API_CALL KCL_ACPI_GetHandles(kcl_match_info_t *pInfo)
{
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
- #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19)
- pInfo->video_handle = pInfo->pcidev->dev.archdata.acpi_handle;
- #else
- pInfo->video_handle = pInfo->pcidev->dev.firmware_data;
- #endif
+ pInfo->video_handle = DEVICE_ACPI_HANDLE(&pInfo->pcidev->dev);
if ( pInfo->video_handle &&
(KCL_ACPI_videoDevice(pInfo->video_handle) != KCL_ACPI_OK) )
{

View file

@ -0,0 +1,24 @@
--- a/common/lib/modules/fglrx/build_mod/firegl_public.c 2012-05-26 18:33:25.044695179 +0200
+++ b/common/lib/modules/fglrx/build_mod/firegl_public.c 2012-05-26 18:28:39.692699095 +0200
@@ -4154,7 +4154,7 @@
{
unsigned int p;
KCL_DEBUG5(FN_FIREGL_KAS, "%d\n", level_init);
- for_each_cpu_mask(p, cpu_possible_map)
+ for_each_possible_cpu(p)
{
KCL_DEBUG1(FN_FIREGL_KAS,"Setting initial execution level for CPU # %d\n", p);
preempt_disable();
--- a/common/lib/modules/fglrx/build_mod/kcl_ioctl.c 2012-05-26 19:11:03.402987821 +0200
+++ b/common/lib/modules/fglrx/build_mod/kcl_ioctl.c 2012-05-26 19:13:00.273986422 +0200
@@ -217,6 +217,10 @@
* \param size [in] Number of bytes to allocate
* \return Pointer to allocated memory
*/
+#ifndef CONFIG_X86_X32
+DEFINE_PER_CPU(unsigned long, old_rsp);
+#endif
+
void* ATI_API_CALL KCL_IOCTL_AllocUserSpace32(long size)
{
void __user *ret = COMPAT_ALLOC_USER_SPACE(size);

View file

@ -0,0 +1,12 @@
--- common/lib/modules/fglrx/build_mod/firegl_public.c 2012-10-18 00:29:21.778369464 +0200
+++ common/lib/modules/fglrx/build_mod/firegl_public.c.new 2012-10-18 00:30:39.647416026 +0200
@@ -222,6 +222,10 @@
#define preempt_enable()
#endif
+#ifndef VM_RESERVED
+#define VM_RESERVED (VM_DONTEXPAND | VM_DONTDUMP)
+#endif
+
// ============================================================
/* globals */

View file

@ -0,0 +1,13 @@
--- a/common/lib/modules/fglrx/build_mod/kcl_ioctl.c 2012-05-26 19:11:03.402987821 +0200
+++ b/common/lib/modules/fglrx/build_mod/kcl_ioctl.c 2012-05-26 19:13:00.273986422 +0200
@@ -217,6 +217,10 @@
* \param size [in] Number of bytes to allocate
* \return Pointer to allocated memory
*/
+#ifndef CONFIG_X86_X32
+DEFINE_PER_CPU(unsigned long, old_rsp);
+#endif
+
void* ATI_API_CALL KCL_IOCTL_AllocUserSpace32(long size)
{
void __user *ret = COMPAT_ALLOC_USER_SPACE(size);

View file

@ -0,0 +1,40 @@
--- a/common/usr/share/doc/fglrx/examples/etc/acpi/ati-powermode.sh 2012-08-17 22:39:05.077984979 +0800
+++ b/common/usr/share/doc/fglrx/examples/etc/acpi/ati-powermode.sh 2012-08-17 22:41:15.919976149 +0800
@@ -4,6 +4,8 @@
# Control script for ACPI lid state and AC adapter state
#
+aticonfig='/opt/bin/aticonfig'
+
getXuser() {
user=`who| grep -m1 ":$displaynum " | awk '{print $1}'`
if [ x"$user" = x"" ]; then
@@ -47,7 +49,7 @@
done
#If PPLIB is enabled
-su $user -c '/usr/bin/aticonfig --pplib-cmd="get version"' | grep PPLIB
+su $user -c '$aticonfig --pplib-cmd="get version"' | grep PPLIB
if [ $? = 0 ]; then
echo "Has PPLIB"
has_pplib=1
@@ -61,15 +63,15 @@
if [ ${lid_closed} -eq 1 -o ${on_dc} -eq 1 ]; then
echo "Low power"
if [ ${has_pplib} -eq 1 ]; then
- su $user -c '/usr/bin/aticonfig --pplib-cmd="notify psrc dc"'
+ su $user -c '$aticonfig --pplib-cmd="notify psrc dc"'
else
- su $user -c "/usr/bin/aticonfig --set-powerstate=1 --effective=now"
+ su $user -c "$aticonfig --set-powerstate=1 --effective=now"
fi
else
echo "high power"
if [ ${has_pplib} -eq 1 ]; then
- su $user -c '/usr/bin/aticonfig --pplib-cmd="notify psrc ac"'
+ su $user -c '$aticonfig --pplib-cmd="notify psrc ac"'
else
- su $user -c "/usr/bin/aticonfig --set-powerstate=3 --effective=now"
+ su $user -c "$aticonfig --set-powerstate=3 --effective=now"
fi
fi

View file

@ -0,0 +1,20 @@
#!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/ati-drivers/files/atieventsd.init,v 1.3 2007/05/18 23:58:01 marienz Exp $
depend() {
need acpid
}
start() {
ebegin "Starting ${SVCNAME}"
start-stop-daemon --start --exec /opt/sbin/atieventsd -- ${ATIEVENTSDOPTS}
eend $?
}
stop() {
ebegin "Stopping ${SVCNAME}"
start-stop-daemon --stop --quiet --exec /opt/sbin/atieventsd
eend $?
}

View file

@ -0,0 +1,25 @@
diff -Nur common/lib/modules/fglrx/build_mod/kcl_acpi.c common-r1/lib/modules/fglrx/build_mod/kcl_acpi.c
--- common/lib/modules/fglrx/build_mod/kcl_acpi.c 2013-01-29 17:03:51.000000000 +0200
+++ common-r1/lib/modules/fglrx/build_mod/kcl_acpi.c 2013-02-15 20:33:10.611838616 +0200
@@ -15,6 +15,9 @@
****************************************************************************/
#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
+#include <linux/notifier.h>
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)
#include <generated/autoconf.h>
#else
@@ -145,7 +148,11 @@
return NOTIFY_OK;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
+static notifier_block_no_const firegl_acpi_lid_notifier = {
+#else
static struct notifier_block firegl_acpi_lid_notifier = {
+#endif
.notifier_call = firegl_acpi_lid_event,
};
#endif

View file

@ -0,0 +1,61 @@
#!/bin/bash
# switchlibGL
#
# Copyright (c) 2011 Advanced Micro Devices, Inc.
#
# Purpose:
# For switch between AMD and Intel graphic driver library.
#
# Usage:
# switchlibGL amd|intel|query
# amd: switches to the AMD version of libGL.
# intel: switches to the open-source version of libGL .
# query: checks, which version is currently active and prints either "amd"
# or "intel" or "unknown" on the standard output.
# must be root to execute this script
ARCH=`uname -m`
E_ERR=1
# Check if root
if [ "`whoami`" != "root" ]; then
echo "Must be root to run this script." 1>&2
exit $E_ERR
fi
# One parameter
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` amd|intel|query " 1>&2
echo "Please choose one parameter " 1>&2
exit $E_ERR
fi
current=$(eselect opengl show)
# Switch to right mode
case "$1" in
"amd" )
if [ $current != ati ] ; then
eselect opengl set ati || return 1
fi
;;
"intel" )
if [ $current != xorg-x11 ] ; then
eselect opengl set xorg-x11 || return 1
fi
;;
"query" )
case "$current" in
"ati" )
echo "amd"
;;
"xorg-x11" )
echo "intel"
;;
esac
;;
* ) echo "Usage: `basename $0` amd|intel|query" 1>&2; exit $E_ERR;;
# other than amd|intel|query parameter report an error
esac
# A zero return value from the script upon exit indicates success.
exit 0

View file

@ -0,0 +1,34 @@
diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
index d3ad3ce..9362b58 100755
--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
+++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
@@ -34,6 +34,11 @@
#include <linux/autoconf.h>
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+#include <linux/uidgid.h>
+#endif
+
+
#if !defined(CONFIG_X86)
#if !defined(CONFIG_X86_PC)
#if !defined(CONFIG_X86_XEN)
@@ -1543,9 +1548,17 @@ KCL_TYPE_Pid ATI_API_CALL KCL_GetTgid(void)
KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void)
{
#ifdef current_euid
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+ return __kuid_val(current_euid());
+# else
return current_euid();
+# endif
#else
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+ return __kuid_val(current->euid);
+# else
return current->euid;
+# endif
#endif
}