diff options
17 files changed, 1134 insertions, 0 deletions
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 <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 + 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 |