mirror of
https://github.com/pentoo/pentoo-overlay
synced 2026-01-28 02:55:34 +01:00
ati-drivers: temporarily fork due to incorrect die line
This commit is contained in:
parent
bcee4dd74f
commit
37426e68bd
15 changed files with 1944 additions and 0 deletions
23
x11-drivers/ati-drivers/Manifest
Normal file
23
x11-drivers/ati-drivers/Manifest
Normal 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
|
||||
622
x11-drivers/ati-drivers/ati-drivers-13.4.ebuild
Normal file
622
x11-drivers/ati-drivers/ati-drivers-13.4.ebuild
Normal 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
|
||||
}
|
||||
622
x11-drivers/ati-drivers/ati-drivers-13.6_beta.ebuild
Normal file
622
x11-drivers/ati-drivers/ati-drivers-13.6_beta.ebuild
Normal 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
|
||||
}
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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__ */
|
||||
50
x11-drivers/ati-drivers/files/ati-drivers-do_mmap.patch
Normal file
50
x11-drivers/ati-drivers/files/ati-drivers-do_mmap.patch
Normal 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(¤t->mm->mmap_sem);
|
||||
vaddr = (void *) do_mmap(file, 0, len, prot, flags, pgoff);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
+#endif
|
||||
if (IS_ERR(vaddr))
|
||||
return 0;
|
||||
else
|
||||
@@ -2131,7 +2140,9 @@
|
||||
{
|
||||
int retcode = 0;
|
||||
|
||||
+#ifndef NO_DO_MMAP
|
||||
down_write(¤t->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(¤t->mm->mmap_sem);
|
||||
+#endif
|
||||
return retcode;
|
||||
}
|
||||
|
||||
|
|
@ -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) )
|
||||
{
|
||||
24
x11-drivers/ati-drivers/files/ati-drivers-old_rsp.patch
Normal file
24
x11-drivers/ati-drivers/files/ati-drivers-old_rsp.patch
Normal 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);
|
||||
12
x11-drivers/ati-drivers/files/ati-drivers-vm-reserverd.patch
Normal file
12
x11-drivers/ati-drivers/files/ati-drivers-vm-reserverd.patch
Normal 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 */
|
||||
|
|
@ -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);
|
||||
40
x11-drivers/ati-drivers/files/ati-powermode-opt-path-3.patch
Normal file
40
x11-drivers/ati-drivers/files/ati-powermode-opt-path-3.patch
Normal 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
|
||||
20
x11-drivers/ati-drivers/files/atieventsd.init
Normal file
20
x11-drivers/ati-drivers/files/atieventsd.init
Normal 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 $?
|
||||
}
|
||||
25
x11-drivers/ati-drivers/files/const-notifier-block.patch
Normal file
25
x11-drivers/ati-drivers/files/const-notifier-block.patch
Normal 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
|
||||
61
x11-drivers/ati-drivers/files/switchlibGL
Normal file
61
x11-drivers/ati-drivers/files/switchlibGL
Normal 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
|
||||
34
x11-drivers/ati-drivers/files/typesafe-kuid.diff
Normal file
34
x11-drivers/ati-drivers/files/typesafe-kuid.diff
Normal 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
|
||||
}
|
||||
|
||||
Loading…
Reference in a new issue