commit:     489e5fb07071045b3fc3d4314a1f0dfa25fa2a5f
Author:     layman <layman <AT> localhost>
AuthorDate: Sun Nov 29 22:55:10 2015 +0000
Commit:     Jan Psota <jasiupsota <AT> gmail <DOT> com>
CommitDate: Sun Nov 29 22:55:10 2015 +0000
URL:        
https://gitweb.gentoo.org/repo/user/bleeding-edge.git/commit/?id=489e5fb0

x11-drivers/ati-drivers-15.11 from byg 566846 - thanks to Rion!

 x11-drivers/ati-drivers/Manifest                   |   2 +
 x11-drivers/ati-drivers/ati-drivers-15.11.ebuild   | 636 +++++++++++++++++++++
 .../files/15.11-remove-gpl-symbols.patch           |  48 ++
 x11-drivers/ati-drivers/files/15.9-kcl_str.patch   |  14 +
 x11-drivers/ati-drivers/files/15.9-mtrr.patch      |  27 +
 x11-drivers/ati-drivers/files/15.9-preempt.patch   | 103 ++++
 .../files/15.9-remove-gpl-symbols.patch            |  74 +++
 .../ati-drivers/files/15.9-sep_printf.patch        |  11 +
 ...ivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch |  27 +
 .../ati-drivers-13.8-beta-include-seq_file.patch   |  13 +
 .../ati-drivers-x32_something_something.patch      |  13 +
 .../files/ati-powermode-opt-path-3.patch           |  40 ++
 x11-drivers/ati-drivers/files/atieventsd.init      |  20 +
 x11-drivers/ati-drivers/files/atieventsd.service   |   9 +
 .../ati-drivers/files/const-notifier-block.patch   |  25 +
 .../files/fgl_glxgears-do-not-include-glATI.patch  |  11 +
 x11-drivers/ati-drivers/files/switchlibGL          |  61 ++
 17 files changed, 1134 insertions(+)

diff --git a/x11-drivers/ati-drivers/Manifest b/x11-drivers/ati-drivers/Manifest
new file mode 100644
index 0000000..edc7694
--- /dev/null
+++ b/x11-drivers/ati-drivers/Manifest
@@ -0,0 +1,2 @@
+DIST radeon-crimson-15.11-15.30.1025.zip 185334292 SHA256 
5e3aeb28d2c25a4682a6ff8b9611c0c4a6b55c11e264515fa3963d58b8f10ba6 SHA512 
12f81bf8c4dc96ff60830da6f84a585be033105a9bedd83672f8a3bddf906c4ead44239b0bf7ebf1da5c5b6e8f5516f2f1cdee8947173fbe8e527300f97d547b
 WHIRLPOOL 
c58dc438e5addf0bdae8b159b5afd1af18e6e547c7d81f436b5927fb69fd8d79449f31159bcd8ca75a2e95603bd3920fba12c053cd1a7bd6574bf99d2a2e99a9
+DIST xvba-sdk-0.74-404001.tar.gz 583847 SHA256 
731a2c489f2fb5d7318c1976061b26c1057a696f46d09dcf55fbada97fed17eb SHA512 
aa1dd52b59eeeabd026d8b76e3b75eaf02587ef286438ba28884afeef5a5efaf50283b5ee4f5b81b12cf79cb4ec77c9a235a886b29fb7cdf850c9779f4b07b35
 WHIRLPOOL 
69917b746d353a884512e97b9d9a9b89e6f51add3119e69ddd119d51c0c3f2820b93a449fe42bd76d671dc505f92bf25b7f2c5868b33768fc68a19596e460951

diff --git a/x11-drivers/ati-drivers/ati-drivers-15.11.ebuild 
b/x11-drivers/ati-drivers/ati-drivers-15.11.ebuild
new file mode 100644
index 0000000..17406f7
--- /dev/null
+++ b/x11-drivers/ati-drivers/ati-drivers-15.11.ebuild
@@ -0,0 +1,636 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+MULTILIB_COMPAT=( abi_x86_{32,64} )
+inherit eutils multilib-build linux-info linux-mod systemd toolchain-funcs 
versionator pax-utils
+
+DESCRIPTION="Ati precompiled drivers for Radeon Evergreen (HD5000 Series) and 
newer chipsets"
+HOMEPAGE="http://www.amd.com";
+BUILD_VER=15.30.1025
+RUN="${WORKDIR}/fglrx-${BUILD_VER}/amd-driver-installer-${BUILD_VER}-x86.x86_64.run"
+SLOT="1"
+# Uses javascript for download YESSSS
+#DRIVERS_URI="http://www2.ati.com/drivers/linux/amd-catalyst-13.12-linux-x86.x86_64.zip";
+#DRV_VER="amd-catalyst-${PV}-linux-installer-15.201.1151-x86.x86_64.zip"
+DRV_VER="radeon-crimson-${PV}-${BUILD_VER}.zip"
+DRIVERS_URI="mirror://gentoo/${DRV_VER}"
+SDK_VER="xvba-sdk-0.74-404001.tar.gz"
+XVBA_SDK_URI="http://developer.amd.com/wordpress/media/2012/10/${SDK_VER}";
+SRC_URI="${DRIVERS_URI} ${XVBA_SDK_URI}"
+FOLDER_PREFIX="common/"
+IUSE="debug +modules qt4 static-libs pax_kernel gdm-hack"
+
+LICENSE="AMD GPL-2 QPL-1.0"
+KEYWORDS="-* ~amd64 ~x86"
+
+RESTRICT="bindist test fetch"
+
+RDEPEND="
+       <=x11-base/xorg-server-1.17.49[-minimal]
+       >=app-eselect/eselect-opengl-1.0.7
+       app-eselect/eselect-opencl
+       sys-power/acpid
+       x11-apps/xauth
+       !x11-libs/xvba-video
+       virtual/glu[${MULTILIB_USEDEP}]
+       x11-libs/libX11[${MULTILIB_USEDEP}]
+       x11-libs/libXext[${MULTILIB_USEDEP}]
+       x11-libs/libXinerama[${MULTILIB_USEDEP}]
+       x11-libs/libXrandr[${MULTILIB_USEDEP}]
+       x11-libs/libXrender[${MULTILIB_USEDEP}]
+       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]
+       )
+       gdm-hack? (
+               x11-base/xorg-server:=
+       )
+"
+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
+       usr/lib\(32\|64\)\?/OpenCL/vendors/amd/libOpenCL.so.1
+       usr/lib\(32\|64\)\?/OpenCL/vendors/amd/libamdocl\(32\|64\).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
+       usr/lib\(32\|64\)\?/libamdhsasc\(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
+"
+
+pkg_nofetch() {
+       einfo "The driver packages"
+       einfo ${A}
+       einfo "need to be downloaded manually from"
+       einfo "http://support.amd.com/en-us/download/desktop?os=Linux+x86";
+       einfo "and ${XVBA_SDK_URI}"
+}
+
+pkg_pretend() {
+       local CONFIG_CHECK="~MTRR ~!DRM ACPI PCI_MSI \
+               !LOCKDEP !PAX_KERNEXEC_PLUGIN_METHOD_OR"
+       use amd64 && CONFIG_CHECK+=" COMPAT"
+
+       local ERROR_MTRR="CONFIG_MTRR required for direct rendering."
+       local ERROR_DRM="CONFIG_DRM must be disabled or compiled as a
+               module and not loaded for direct rendering to work."
+       local 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'"
+       local 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."
+       local ERROR_BKL="CONFIG_BKL must be enabled for kernels 2.6.37-2.6.38."
+
+       # workaround until bug 365543 is solved
+       if use modules; then
+               linux-info_pkg_setup
+               require_configured_kernel
+               kernel_is ge 2 6 37 && kernel_is le 2 6 38 && CONFIG_CHECK+=" 
BKL"
+               check_extra_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
+       fi
+
+       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_PATH="${S}/${FOLDER_PREFIX}/lib/modules/fglrx/build_mod/2.6.x"
+               MODULE_NAMES="fglrx(video:${MODULE_PATH})"
+               BUILD_TARGETS="kmod_build"
+               linux-mod_pkg_setup
+               BUILD_PARAMS="GCC_VER_MAJ=$(gcc-major-version) KVER=${KV_FULL} 
KDIR=${KV_OUT_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 
"https://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}
+               mkdir -p common
+               mv etc lib usr common || die "Assumed to find etc lib and usr 
for common"
+       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}
+
+       mkdir -p "${WORKDIR}/extra" || die "mkdir extra failed"
+       cd "${WORKDIR}/extra"
+       tar -xf "../${FOLDER_PREFIX}usr/src/ati/fglrx_sample_source.tgz"
+}
+
+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
+
+       epatch "${FILESDIR}/ati-drivers-13.8-beta-include-seq_file.patch"
+
+       # Fix #483400
+       epatch "${FILESDIR}/fgl_glxgears-do-not-include-glATI.patch"
+
+       # Compile fix, https://bugs.gentoo.org/show_bug.cgi?id=454870
+       use pax_kernel && epatch "${FILESDIR}/const-notifier-block.patch"
+
+       # Compile fix, #526602
+       # epatch "${FILESDIR}/use-kernel_fpu_begin.patch"
+
+       # Fix #542320
+       epatch "${FILESDIR}/15.9-preempt.patch"
+
+       # Compile fixes, #548118
+       epatch "${FILESDIR}/15.11-remove-gpl-symbols.patch"
+       epatch "${FILESDIR}/15.9-kcl_str.patch"
+       epatch "${FILESDIR}/15.9-sep_printf.patch"
+       epatch "${FILESDIR}/15.9-mtrr.patch"
+
+       epatch_user
+
+       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"
+}
+
+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.
+       multilib_foreach_abi src_install-libs
+
+       # 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}
+
+       #516816
+       if use gdm-hack; then
+               sed -i 's#/proc/%i/fd/0#/etc/ati/xvrn#g' \
+                       
"${D}/usr/$(get_libdir)/xorg/modules/drivers/fglrx_drv.so" || \
+                       die "Applying gdm-hack failed"
+       fi
+
+       # 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,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
+       systemd_dounit "${FILESDIR}/atieventsd.service"
+
+       # 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"
+
+       #516816
+       use gdm-hack && Xorg -version > "${D}/etc/ati/xvrn" 2>&1
+}
+
+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
+
+       if multilib_is_native_abi; then
+               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
+
+               #516816
+               if use gdm-hack; then
+                       sed -i 's#/proc/%i/fd/0#/etc/ati/xvrn#g' \
+                               "${D}/${ATI_ROOT}/extensions/libglx.so" \
+                               || die "Applying gdm-hack failed"
+               fi
+       fi
+
+       # 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
+
+       # VA-API internal wrapper
+       dosym /usr/$(get_libdir)/libXvBAW.so.1.0 
/usr/$(get_libdir)/va/drivers/fglrx_drv_video.so
+
+       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
+
+       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\""
+               ewarn "causes the X server to crash on systems that use hybrid"
+               ewarn "AMD/Intel graphics. If you experience this crash, 
downgrade"
+               ewarn "to xf86-video-intel-2.20.2 or earlier or try disabling 
sna"
+               ewarn "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
+}

diff --git a/x11-drivers/ati-drivers/files/15.11-remove-gpl-symbols.patch 
b/x11-drivers/ati-drivers/files/15.11-remove-gpl-symbols.patch
new file mode 100644
index 0000000..5cea796
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/15.11-remove-gpl-symbols.patch
@@ -0,0 +1,48 @@
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-18 
23:57:02.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-18 
23:57:11.000000000 -0400
+@@ -136,7 +136,6 @@
+ #include <asm/mman.h>
+ #include <asm/uaccess.h>
+ #include <asm/processor.h>
+-#include <asm/tlbflush.h> // for flush_tlb_page
+ #include <asm/cpufeature.h>
+ #ifdef CONFIG_MTRR
+ #include <asm/mtrr.h>
+@@ -251,6 +250,26 @@
+ #define WRITE_CR4(x)    write_cr4(x)
+ #endif
+ 
++#define __flush_tlb_one(addr) asm volatile("invlpg (%0)" ::"r" (addr) : 
"memory")
++#define __flush_tlb() native_write_cr3(native_read_cr3())
++
++static inline void __flush_tlb_all(void)
++{
++        if (cpu_has_pge)
++        {
++                unsigned long flags, cr4;
++                raw_local_irq_save(flags);
++                cr4 = native_read_cr4();
++                native_write_cr4(cr4 & ~X86_CR4_PGE);
++                native_write_cr4(cr4);
++                raw_local_irq_restore(flags);
++        }
++        else
++        {
++                __flush_tlb();
++        }
++}
++
+ // ============================================================
+ /* globals */
+ 
+--- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c    2015-09-19 
00:43:35.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c    2015-09-19 
00:43:48.000000000 -0400
+@@ -868,7 +868,7 @@ void ATI_API_CALL KCL_ACPI_No_Hotplug(vo
+ #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
+     if(pdev)
+     {
+-#if (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < 
KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && 
UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8))
++#if 0 && (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < 
KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && 
UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8))
+        pci_ignore_hotplug(pdev);
+ #else
+        pdev->ignore_hotplug = 1;

diff --git a/x11-drivers/ati-drivers/files/15.9-kcl_str.patch 
b/x11-drivers/ati-drivers/files/15.9-kcl_str.patch
new file mode 100644
index 0000000..20c3bc8
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/15.9-kcl_str.patch
@@ -0,0 +1,14 @@
+--- a/common/lib/modules/fglrx/build_mod/kcl_str.c     2015-09-13 
13:47:30.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/kcl_str.c     2015-09-13 
13:49:42.000000000 -0400
+@@ -169,7 +169,11 @@ int ATI_API_CALL KCL_STR_Strnicmp(const
+                                   const char* s2,
+                                   KCL_TYPE_SizeSigned count)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0)
+     return strnicmp(s1, s2, count);
++#else
++    return strncasecmp(s1, s2, count);
++#endif
+ }
+ 
+ /** \brief Locate character in string

diff --git a/x11-drivers/ati-drivers/files/15.9-mtrr.patch 
b/x11-drivers/ati-drivers/files/15.9-mtrr.patch
new file mode 100644
index 0000000..bdf70b4
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/15.9-mtrr.patch
@@ -0,0 +1,27 @@
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-19 
23:43:22.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-19 
23:52:07.000000000 -0400
+@@ -3442,7 +3442,11 @@ int ATI_API_CALL KCL_MEM_MTRR_Support(vo
+ int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long 
size)
+ {
+ #ifdef CONFIG_MTRR
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
++    return arch_phys_wc_add(base, size);
++#else
+     return mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1);
++#endif
+ #else /* !CONFIG_MTRR */
+     return -EPERM;
+ #endif /* !CONFIG_MTRR */
+@@ -3451,7 +3455,12 @@ int ATI_API_CALL KCL_MEM_MTRR_AddRegionW
+ int ATI_API_CALL KCL_MEM_MTRR_DeleteRegion(int reg, unsigned long base, 
unsigned long size)
+ {
+ #ifdef CONFIG_MTRR
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
++    arch_phys_wc_del(reg);
++    return reg;
++#else
+     return mtrr_del(reg, base, size);
++#endif
+ #else /* !CONFIG_MTRR */
+     return -EPERM;
+ #endif /* !CONFIG_MTRR */

diff --git a/x11-drivers/ati-drivers/files/15.9-preempt.patch 
b/x11-drivers/ati-drivers/files/15.9-preempt.patch
new file mode 100644
index 0000000..c659883
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/15.9-preempt.patch
@@ -0,0 +1,103 @@
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-08-30 
17:36:02.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-08-30 
17:39:36.000000000 -0400
+@@ -21,6 +21,8 @@
+ !!! since it requires changes to linux/init/main.c.
+ #endif /* !MODULE */
+ 
++#include <linux/preempt.h>
++
+ // ============================================================
+ #include <linux/version.h>
+ 
+@@ -4997,7 +4999,9 @@ static unsigned int kas_spin_unlock(kas_
+ unsigned long ATI_API_CALL KAS_GetExecutionLevel(void)
+ {
+     unsigned long ret;
++    preempt_disable();
+     ret = kas_GetExecutionLevel();
++    preempt_enable();
+     return ret;
+ }
+ 
+@@ -5022,8 +5026,10 @@ unsigned int ATI_API_CALL KAS_Ih_Execute
+     KCL_DEBUG5(FN_FIREGL_KAS,"0x%08X, 0x%08X\n", ih_routine, ih_context);
+ 
+     //Prevent simultaneous entry on some SMP systems.
++    preempt_disable();
+     if (test_and_set_bit(0, (void 
*)&(kasContext.in_interrupts[smp_processor_id()])))
+     {
++      preempt_enable();
+         KCL_DEBUG1(FN_FIREGL_KAS, "The processor is handling the 
interrupt\n");
+         return IRQ_NONE;
+     }
+@@ -5036,9 +5042,9 @@ unsigned int ATI_API_CALL KAS_Ih_Execute
+ 
+     kasSetExecutionLevel(orig_level);
+     spin_unlock(&kasContext.lock_ih); 
+-
+     clear_bit(0, (void *)&(kasContext.in_interrupts[smp_processor_id()]));
+     KCL_DEBUG5(FN_FIREGL_KAS,"%d\n", ret);
++    preempt_enable();
+ 
+     return ret;
+ }
+@@ -5256,6 +5262,7 @@ unsigned int ATI_API_CALL KAS_Spinlock_A
+ 
+     KCL_DEBUG5(FN_FIREGL_KAS,"0x%08X\n", hSpinLock);
+ 
++    preempt_disable();
+     spin_lock_info.routine_type = spinlock_obj->routine_type;
+     spin_lock_info.plock = &(spinlock_obj->lock);
+ 
+@@ -5263,6 +5270,7 @@ unsigned int ATI_API_CALL KAS_Spinlock_A
+ 
+     spinlock_obj->acquire_type = spin_lock_info.acquire_type;
+     spinlock_obj->flags = spin_lock_info.flags;
++    preempt_enable();
+ 
+     KCL_DEBUG5(FN_FIREGL_KAS,"%d\n", ret);
+     return ret;
+@@ -6034,6 +6042,8 @@ unsigned int ATI_API_CALL KAS_Interlocke
+ 
+     KCL_DEBUG5(FN_FIREGL_KAS,"0x%08X, 0x%08X, 0x%08X\n", hListHead, 
hListEntry, phPrevEntry);
+ 
++    preempt_disable();
++
+     /* Protect the operation with spinlock */
+     spin_lock_info.routine_type = listhead_obj->routine_type;
+     spin_lock_info.plock = &(listhead_obj->lock);
+@@ -6041,6 +6051,7 @@ unsigned int ATI_API_CALL KAS_Interlocke
+     if (!kas_spin_lock(&spin_lock_info))
+     {
+         KCL_DEBUG_ERROR("Unable to grab list spinlock\n");
++      preempt_enable();
+         return 0; /* No spinlock - no operation */
+     }
+ 
+@@ -6065,6 +6076,7 @@ unsigned int ATI_API_CALL KAS_Interlocke
+     spin_unlock_info.flags = spin_lock_info.flags;
+ 
+     ret = kas_spin_unlock(&spin_unlock_info);
++    preempt_enable();
+     KCL_DEBUG5(FN_FIREGL_KAS,"%d", ret);
+     return ret;
+ }
+@@ -6153,8 +6165,10 @@ unsigned int ATI_API_CALL KAS_Interlocke
+     spin_lock_info.routine_type = listhead_obj->routine_type;
+     spin_lock_info.plock = &(listhead_obj->lock);
+ 
++    preempt_disable();
+     if (!kas_spin_lock(&spin_lock_info))
+     {
++        preempt_enable();
+         KCL_DEBUG_ERROR("Unable to grab list spinlock");
+         return 0; /* No spinlock - no operation */
+     }
+@@ -6178,6 +6192,7 @@ unsigned int ATI_API_CALL KAS_Interlocke
+     spin_unlock_info.flags = spin_lock_info.flags;
+ 
+     ret = kas_spin_unlock(&spin_unlock_info);
++    preempt_enable();
+     KCL_DEBUG5(FN_FIREGL_KAS,"%d", ret);
+     return ret;
+ }

diff --git a/x11-drivers/ati-drivers/files/15.9-remove-gpl-symbols.patch 
b/x11-drivers/ati-drivers/files/15.9-remove-gpl-symbols.patch
new file mode 100644
index 0000000..51fc6c2
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/15.9-remove-gpl-symbols.patch
@@ -0,0 +1,74 @@
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-18 
23:57:02.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-18 
23:57:11.000000000 -0400
+@@ -136,7 +136,6 @@
+ #include <asm/mman.h>
+ #include <asm/uaccess.h>
+ #include <asm/processor.h>
+-#include <asm/tlbflush.h> // for flush_tlb_page
+ #include <asm/cpufeature.h>
+ #ifdef CONFIG_MTRR
+ #include <asm/mtrr.h>
+@@ -251,6 +250,26 @@
+ #define WRITE_CR4(x)    write_cr4(x)
+ #endif
+ 
++#define __flush_tlb_one(addr) asm volatile("invlpg (%0)" ::"r" (addr) : 
"memory")
++#define __flush_tlb() native_write_cr3(native_read_cr3())
++
++static inline void __flush_tlb_all(void)
++{
++        if (cpu_has_pge)
++        {
++                unsigned long flags, cr4;
++                raw_local_irq_save(flags);
++                cr4 = native_read_cr4();
++                native_write_cr4(cr4 & ~X86_CR4_PGE);
++                native_write_cr4(cr4);
++                raw_local_irq_restore(flags);
++        }
++        else
++        {
++                __flush_tlb();
++        }
++}
++
+ // ============================================================
+ /* globals */
+ 
+@@ -6479,7 +6498,12 @@ static int KCL_fpu_save_init(struct task
+ void ATI_API_CALL KCL_fpu_begin(void)
+ {
+ #if defined(CONFIG_X86_64) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++    preempt_disable();
++    __kernel_fpu_begin();
++#else
+     kernel_fpu_begin();
++#endif
+ #else
+ #ifdef TS_USEDFPU
+     struct thread_info *cur_thread = current_thread_info();
+@@ -6525,7 +6549,12 @@ void ATI_API_CALL KCL_fpu_begin(void)
+  */
+ void ATI_API_CALL KCL_fpu_end(void)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++    __kernel_fpu_end();
++    preempt_enable();
++#else
+     kernel_fpu_end();
++#endif
+ }
+ 
+ /** Create new directory entry under "/proc/...."
+--- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c    2015-09-19 
00:43:35.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c    2015-09-19 
00:43:48.000000000 -0400
+@@ -868,7 +868,7 @@ void ATI_API_CALL KCL_ACPI_No_Hotplug(vo
+ #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
+     if(pdev)
+     {
+-#if (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < 
KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && 
UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8))
++#if 0 && (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < 
KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && 
UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8))
+        pci_ignore_hotplug(pdev);
+ #else
+        pdev->ignore_hotplug = 1;

diff --git a/x11-drivers/ati-drivers/files/15.9-sep_printf.patch 
b/x11-drivers/ati-drivers/files/15.9-sep_printf.patch
new file mode 100644
index 0000000..3e4e8d6
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/15.9-sep_printf.patch
@@ -0,0 +1,11 @@
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-14 
15:14:36.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c       2015-09-14 
16:18:58.000000000 -0400
+@@ -649,6 +649,8 @@ static int firegl_major_proc_read(struct
+     *eof = 1;
+ 
+     len = snprintf(buf, request, "%d\n", major);
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
++    seq_printf(m, "%d\n", major);
+ #else
+     len = seq_printf(m, "%d\n", major);
+ #endif

diff --git 
a/x11-drivers/ati-drivers/files/ati-drivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch
 
b/x11-drivers/ati-drivers/files/ati-drivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch
new file mode 100644
index 0000000..0ea461b
--- /dev/null
+++ 
b/x11-drivers/ati-drivers/files/ati-drivers-12.9-KCL_AGP_FindCapsRegisters-stub.patch
@@ -0,0 +1,27 @@
+From: Vasiliy Yeremeyev <[email protected]>
+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
+

diff --git 
a/x11-drivers/ati-drivers/files/ati-drivers-13.8-beta-include-seq_file.patch 
b/x11-drivers/ati-drivers/files/ati-drivers-13.8-beta-include-seq_file.patch
new file mode 100644
index 0000000..fb1ba17
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/ati-drivers-13.8-beta-include-seq_file.patch
@@ -0,0 +1,13 @@
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c 
b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index 22561c5..fdfe65e 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -520,6 +520,8 @@ static int func##_wrap(char *buf, char **start, kcl_off_t 
offset,       \
+ }
+ 
+ #else
++#include <linux/seq_file.h>
++
+ #define READ_PROC_WRAP(func)                                            \
+ static int func##_wrap(struct seq_file *m, void* data)                  \
+ {                                                                       \

diff --git 
a/x11-drivers/ati-drivers/files/ati-drivers-x32_something_something.patch 
b/x11-drivers/ati-drivers/files/ati-drivers-x32_something_something.patch
new file mode 100644
index 0000000..d37c119
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/ati-drivers-x32_something_something.patch
@@ -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);

diff --git a/x11-drivers/ati-drivers/files/ati-powermode-opt-path-3.patch 
b/x11-drivers/ati-drivers/files/ati-powermode-opt-path-3.patch
new file mode 100644
index 0000000..278c191
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/ati-powermode-opt-path-3.patch
@@ -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

diff --git a/x11-drivers/ati-drivers/files/atieventsd.init 
b/x11-drivers/ati-drivers/files/atieventsd.init
new file mode 100644
index 0000000..aa7d028
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/atieventsd.init
@@ -0,0 +1,20 @@
+#!/sbin/runscript
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+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 $?
+}
\ No newline at end of file

diff --git a/x11-drivers/ati-drivers/files/atieventsd.service 
b/x11-drivers/ati-drivers/files/atieventsd.service
new file mode 100644
index 0000000..72df6c4
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/atieventsd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Catalyst event Daemon
+Requires=acpid.socket
+
+[Service]
+ExecStart=/opt/sbin/atieventsd --nodaemon
+
+[Install]
+WantedBy=multi-user.target

diff --git a/x11-drivers/ati-drivers/files/const-notifier-block.patch 
b/x11-drivers/ati-drivers/files/const-notifier-block.patch
new file mode 100644
index 0000000..ba1fdb2
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/const-notifier-block.patch
@@ -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

diff --git 
a/x11-drivers/ati-drivers/files/fgl_glxgears-do-not-include-glATI.patch 
b/x11-drivers/ati-drivers/files/fgl_glxgears-do-not-include-glATI.patch
new file mode 100644
index 0000000..d46e027
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/fgl_glxgears-do-not-include-glATI.patch
@@ -0,0 +1,11 @@
+diff -Nur extra/fgl_glxgears/fgl_glxgears.c 
extra-r1/fgl_glxgears/fgl_glxgears.c
+--- extra/fgl_glxgears/fgl_glxgears.c  2012-08-29 09:59:03.000000000 +0300
++++ extra-r1/fgl_glxgears/fgl_glxgears.c       2013-09-07 09:26:11.034723135 
+0300
+@@ -78,7 +78,6 @@
+ #endif // _WIN32
+ 
+ #define INT_PTR ptrdiff_t
+-#include <GL/glATI.h>
+ 
+ #ifdef _WIN32
+ #include <GL/wglATI.h>

diff --git a/x11-drivers/ati-drivers/files/switchlibGL 
b/x11-drivers/ati-drivers/files/switchlibGL
new file mode 100644
index 0000000..a6aa4fc
--- /dev/null
+++ b/x11-drivers/ati-drivers/files/switchlibGL
@@ -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

Reply via email to