diff options
Diffstat (limited to 'media-libs/amdvlk/amdvlk-2020.3.5.ebuild')
-rw-r--r-- | media-libs/amdvlk/amdvlk-2020.3.5.ebuild | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/media-libs/amdvlk/amdvlk-2020.3.5.ebuild b/media-libs/amdvlk/amdvlk-2020.3.5.ebuild new file mode 100644 index 000000000..2e9cd6f81 --- /dev/null +++ b/media-libs/amdvlk/amdvlk-2020.3.5.ebuild @@ -0,0 +1,125 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +MULTILIB_COMPAT=( abi_x86_{32,64} ) + +inherit multilib-minimal check-reqs + +#inherit cmake-multilib and cmake-utils build doesn't support https://github.com/GPUOpen-Drivers/AMDVLK/issues/151 +DESCRIPTION="AMD Open Source Driver for Vulkan" +HOMEPAGE="https://github.com/GPUOpen-Drivers/AMDVLK" +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="debug wayland" +REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )" +###DEPENDS +BUNDLED_LLVM_DEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}]" +DEPEND="wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + ${BUNDLED_LLVM_DEPEND} + >=dev-util/vulkan-headers-1.2.143" +BDEPEND="${BUNDLED_LLVM_DEPEND} + dev-util/cmake" +RDEPEND=" ${DEPEND} + x11-libs/libdrm[${MULTILIB_USEDEP}] + x11-libs/libXrandr[${MULTILIB_USEDEP}] + x11-libs/libxcb[${MULTILIB_USEDEP}] + x11-libs/libxshmfence[${MULTILIB_USEDEP}] + >=media-libs/vulkan-loader-1.2.141[${MULTILIB_USEDEP}]" + +CHECKREQS_MEMORY="4G" +CHECKREQS_DISK_BUILD="2G" +S="${WORKDIR}" +CMAKE_USE_DIR="${S}/xgl" + +###SOURCE CODE VARIABLES +FETCH_URI="https://github.com/GPUOpen-Drivers" +CORRECT_AMDVLK_PV="v-$(ver_rs 1 '.Q')" #Works only for amdvlk source code: transforming version 2019.2.2 to v-2019.Q2.2. Any other commits should be updated manually +##For those who wants update ebuild: check https://github.com/GPUOpen-Drivers/AMDVLK/blob/master/default.xml +##and place commits in the desired variables +## EXAMPLE: XGL_COMMIT="80e5a4b11ad2058097e77746772ddc9ab2118e07" +## SRC_URI="... ${FETCH_URI}/$PART/archive/$COMMIT.zip -> $PART-$COMMIT.zip ..." +XGL_COMMIT="6e4aaa87a128f91cc62d337642949ee8cfcaeec8" +PAL_COMMIT="a52f7c12f9ce5aca5c0c7f799f72b1b3362121bc" +LLPC_COMMIT="a3ac9d29e78d11a6cdc1bc1dd0be082e35dbfc0d" +SPVGEN_COMMIT="2557aaa0e96695c51de0d66903e24194a1af054e" +LLVM_PROJECT_COMMIT="baf9929eed02f75d0a429fc72ba76b9286ba1996" +METROHASH_COMMIT="712f76fee75d69b23a1ea8f6465752c3ccaaf9a2" +CWPACK_COMMIT="7387247eb9889ddcabbc1053b9c2052e253b088e" +## SRC_URI +SRC_URI=" ${FETCH_URI}/AMDVLK/archive/${CORRECT_AMDVLK_PV}.tar.gz -> AMDVLK-${CORRECT_AMDVLK_PV}.tar.gz +${FETCH_URI}/xgl/archive/${XGL_COMMIT}.tar.gz -> xgl-${XGL_COMMIT}.tar.gz +${FETCH_URI}/pal/archive/${PAL_COMMIT}.tar.gz -> pal-${PAL_COMMIT}.tar.gz +${FETCH_URI}/llpc/archive/${LLPC_COMMIT}.tar.gz -> llpc-${LLPC_COMMIT}.tar.gz +${FETCH_URI}/spvgen/archive/${SPVGEN_COMMIT}.tar.gz -> spvgen-${SPVGEN_COMMIT}.tar.gz +${FETCH_URI}/llvm-project/archive/${LLVM_PROJECT_COMMIT}.tar.gz -> llvm-project-${LLVM_PROJECT_COMMIT}.tar.gz +${FETCH_URI}/MetroHash/archive/${METROHASH_COMMIT}.tar.gz -> MetroHash-${METROHASH_COMMIT}.tar.gz +${FETCH_URI}/CWPack/archive/${CWPACK_COMMIT}.tar.gz -> CWPack-${CWPACK_COMMIT}.tar.gz" + +###EBUILD FUNCTIONS +src_prepare() { + ##moving src to proper directories + mkdir -p "${S}" + mkdir -p "${S}/third_party" + mv AMDVLK-${CORRECT_AMDVLK_PV}/ "${S}/AMDVLK" + mv xgl-${XGL_COMMIT}/ "${S}/xgl" + mv pal-${PAL_COMMIT}/ "${S}/pal" + mv llpc-${LLPC_COMMIT}/ "${S}/llpc" + mv spvgen-${SPVGEN_COMMIT}/ "${S}/spvgen" + mv llvm-project-${LLVM_PROJECT_COMMIT}/ "${S}/llvm-project" + mv MetroHash-${METROHASH_COMMIT}/ "${S}/third_party/metrohash" + mv CWPack-${CWPACK_COMMIT}/ "${S}/third_party/cwpack" + ##Installing rule + cat << EOF > "${T}/10-amdvlk-dri3.conf" || die +Section "Device" +Identifier "AMDgpu" +Option "DRI" "3" +EndSection +EOF + cd "${S}/xgl" + default +} + +multilib_src_configure() { + local mycmakeargs=( + -DBUILD_WAYLAND_SUPPORT=$(usex wayland ) + -DCMAKE_BUILD_TYPE="$(usex debug "Debug" "Release")" + -B"${BUILD_DIR}" ) + cd "${S}"/xgl + cmake -H. "${mycmakeargs[@]}" +} + +multilib_src_install() { + if use abi_x86_64 && multilib_is_native_abi; then + mkdir -p "${D}/usr/lib64/" + mv "${BUILD_DIR}/icd/amdvlk64.so" "${D}/usr/lib64/" + insinto /usr/share/vulkan/icd.d + doins "${S}/AMDVLK/json/Redhat/amd_icd64.json" + else + mkdir -p "${D}/usr/lib/" + mv "${BUILD_DIR}/icd/amdvlk32.so" "${D}/usr/lib/" + insinto /usr/share/vulkan/icd.d + doins "${S}/AMDVLK/json/Redhat/amd_icd32.json" + fi +} + +multilib_src_install_all() { + insinto /usr/share/X11/xorg.conf.d/ + doins "${T}/10-amdvlk-dri3.conf" + einfo "AMDVLK requires DRI3 mode so config file is istalled in /usr/share/X11/xorg.conf.d/10-amdvlk-dri3.conf" + einfo "It's safe to double xorg configuration files if you have already had ones" +} + +pkg_postinst() { + elog "More information about the configuration can be found here:" + elog " https://github.com/GPUOpen-Drivers/AMDVLK" + ewarn "Make sure the following line is NOT included in the any Xorg configuration section:" + ewarn "Driver \"modesetting\"" + ewarn "Else AMDVLK breaks things" + ewarn "With some games AMDVLK is still not stable. Use it at you own risk" + elog "You may want to disable default vulkan mesa provider in package.use \"media-libs/mesa -vulkan\"" + elog "or perform export in /etc/env.d/ variable VK_ICD_FILENAMES=vulkanprovidername:vulkanprovidername2 " + elog "exampe| VK_ICD_FILENAMES=\"/usr/share/vulkan/icd.d/amd_icd64.json:/usr/share/vulkan/icd.d/amd_icd64.json\"" +} |