media-libs/amdvlk: amdvlk updated to 2022.3.4 with refactoring

Significant changes in dependencies and in build system, it uses cmake-multilib to
build

Now the package depends on DirectXShaderCompiler and glslang

Changed installation directory to /usr/lib/llvm/amdvlk

Using dynamic linking instead of static build

Bug: https://bugs.gentoo.org/665590
Signed-off-by: Denis Reva <denis7774@gmail.com>
This commit is contained in:
Denis Reva
2022-10-04 17:59:12 +05:00
parent e31cef37c3
commit d768dde28d
3 changed files with 38 additions and 42 deletions

View File

@@ -9,7 +9,6 @@ DIST AMDVLK-v-2021.Q4.2-spvgen-0aa19873514a8272dfdc5cb8861859a52f5de503.tar.gz 2
DIST AMDVLK-v-2021.Q4.2-xgl-da1a583a51c69c115f9144b68ec2bdf5b6519056.tar.gz 960709 BLAKE2B 825e7d349da18e8a0beb42c4125bb208bd2e62780d97d5131e76e9ddc08dc6d60b2d78455aa245bb4172bb7ee7d64084307e48df2c18598cee638911fce8074c SHA512 a626459503b50a511ac04f4973036468336e9d55baecda5a84165f7209d867291ef35a9292734f38a53d13aaf70cd46fc8e3068fc3748d80278fcf3c5f8a54bb
DIST AMDVLK-v-2021.Q4.2.tar.gz 30012 BLAKE2B 27d11126d54df299ce702adb7c66bd0aa8a905074dac0e2cd8560f2fa9c39deafd16885c15ae9df4f70f4008a446d8e90e1dcc50514afa7ab0a874d12b2e5334 SHA512 15fb89bb78039c36435fb9534588f08e0e0e6e6099d5e803e9bacafef8b5e81eedc19e0fcc7cd7ca7dad919397cab8b87b30b22950ae32945a5465da542d6d99
DIST AMDVLK-v-2022.Q3.1.tar.gz 30017 BLAKE2B 4abbdb709d6d61331185f7cef3e78228a9a7ad633ddf96e4ca18870fb9f7b04c1dd393864d6f85e349c56d20bffded81d95556f6625d7a8be7dc2ef6ed78de10 SHA512 e8a1662e14861fbb90ca4bad3dcff15932ce0e43b27e2fc0bfefd5f7eff359e1c46acedb6e168583646237e030da6948ef8640fe6b4ff1693f9a7ba16f1081a4
DIST AMDVLK-v-2022.Q3.4.tar.gz 29752 BLAKE2B a20c33d06034337a1786f0701a5798416e33e008c1b3f49f069f12352647635a62053d40eafe847e8bc0b2917cc59d10fdd843b7283a229725249616c4b15bfc SHA512 cbc161d1ab88cd43fd98b7c73244f53d838935cd7255a97b5fd5b01f02c9c014f763324363f379cc1fd1cf17151955186f01b1209a880aea9e463ef5e7be3916
DIST CWPack-4f8cf0584442a91d829d269158567d7ed926f026.tar.gz 39633 BLAKE2B d5b2a88f0d563eef5beb42a8304cf6cdd825e75242c22acc360c5bb9cbd1d02a4f891b6b2f3a4803e1e6b48a4d176aad40f8bdeca92847f2fbf53674dedeaff3 SHA512 06d56baaba1f1224a5266f4a63c1abf70edba7cc16cc4e62f2f5b1ec94fc2c1cfc4c6f11a9c6ef42c23b29be8d07921caad5e919357c0bd82cf714783eee0bcc
DIST CWPack-7387247eb9889ddcabbc1053b9c2052e253b088e.tar.gz 24538 BLAKE2B 76c4da32ea06df355f7e8f77a14c185b2ccab2ce2762988f04a04d65b674e089d4fc27206e744f89b4bd84c9d7226d324414a31941303290e7f574e9d64756cf SHA512 38378ef325e42a7356511c2fc06b6c896581968079e85c4b924a1768d895feecaf1eb8fd65afb59bed0f66e0547104d67c2deb9f82a86f4b9fa65b36e57cd47d
DIST MetroHash-18893fb28601bb9af1154cd1a671a121fff6d8d3.tar.gz 11729 BLAKE2B b0e3de885e50c317141d62c885b421c7fd2e1ac783733704342bbed3109bff36a9209ab276f534a2231531483539221bbb1014bd39528a91124161bafc5646eb SHA512 8f12f95e80d594c8bd87a852c67a2d6777ce89d1a13e1a87ee17bbb876a0702c14ffe7a7fd65a244620f2043ad5d22ae8eb863d69f1dc5494d985733bbfb7bf9

View File

@@ -4,30 +4,33 @@
EAPI=8
MULTILIB_COMPAT=( abi_x86_{32,64} )
PYTHON_COMPAT=( python3_{8..11} )
inherit cmake-multilib check-reqs
inherit check-reqs python-any-r1 cmake-multilib
DESCRIPTION="AMD Open Source Driver for Vulkan"
HOMEPAGE="https://github.com/GPUOpen-Drivers/AMDVLK"
LICENSE="MIT"
SLOT="0"
KEYWORDS=""
KEYWORDS="~amd64 ~x86"
IUSE="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.3.224"
BDEPEND="${BUNDLED_LLVM_DEPEND}
dev-util/cmake"
${PYTHON_DEPS}
dev-util/cmake
virtual/linux-sources"
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.3.224[${MULTILIB_USEDEP}]
dev-util/glslang
dev-util/glslang[${MULTILIB_USEDEP}]
dev-util/DirectXShaderCompiler"
CHECKREQS_MEMORY="16G"
@@ -37,8 +40,7 @@ CMAKE_USE_DIR="${S}/xgl"
###SOURCE CODE PER_VERSION 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
##For those who wants update ebuild: check https://github.com/GPUOpen-Drivers/AMDVLK/blob/${VERSION}/default.xml , e.g. https://github.com/GPUOpen-Drivers/AMDVLK/blob/v-2022.Q3.5/default.xml
##and place commits in the desired variables
## EXAMPLE: XGL_COMMIT="80e5a4b11ad2058097e77746772ddc9ab2118e07"
## SRC_URI="... ${FETCH_URI}/$PART/archive/$COMMIT.zip -> $PART-$COMMIT.zip ..."
@@ -49,9 +51,8 @@ GPURT_COMMIT="c1df7354336aba18d54c0e32a95b58eac0d44c07"
LLVM_PROJECT_COMMIT="f5023e507645c8178128891b96bf463f9a1a81a0"
METROHASH_COMMIT="18893fb28601bb9af1154cd1a671a121fff6d8d3"
CWPACK_COMMIT="4f8cf0584442a91d829d269158567d7ed926f026"
# end
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 -> amdvlk-xgl-${XGL_COMMIT}.tar.gz
# end of variables
SRC_URI="${FETCH_URI}/xgl/archive/${XGL_COMMIT}.tar.gz -> amdvlk-xgl-${XGL_COMMIT}.tar.gz
${FETCH_URI}/pal/archive/${PAL_COMMIT}.tar.gz -> amdvlk-pal-${PAL_COMMIT}.tar.gz
${FETCH_URI}/llpc/archive/${LLPC_COMMIT}.tar.gz -> amdvlk-llpc-${LLPC_COMMIT}.tar.gz
${FETCH_URI}/gpurt/archive/${GPURT_COMMIT}.tar.gz -> amdvlk-gpurt-${GPURT_COMMIT}.tar.gz
@@ -63,7 +64,6 @@ src_prepare() {
einfo "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"
@@ -76,42 +76,35 @@ src_prepare() {
multilib_src_configure() {
local mycmakeargs=(
-DBUILD_WAYLAND_SUPPORT=$(usex wayland)
)
-DBUILD_WAYLAND_SUPPORT=$(usex wayland)
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/amdvlk"
-DLLVM_VERSION_SUFFIX="-$(get_libdir)-amdvlk"
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
-Wno-dev
)
cmake_src_configure
}
# multilib_src_install() {
# if use abi_x86_64 && multilib_is_native_abi; then
# mkdir -p "${D}/usr/lib64/"
# cp "${BUILD_DIR}/icd/amdvlk64.so" "${D}/usr/lib64/"
# insinto /usr/share/vulkan/icd.d
# doins "${S}/build-abi_x86_64.amd64/icd/amd_icd64.json"
# insinto /usr/share/vulkan/implicit_layer.d
# doins "${S}/build-abi_x86_64.amd64/icd/amd_icd64.json"
# else
# mkdir -p "${D}/usr/lib/"
# cp "${BUILD_DIR}/icd/amdvlk32.so" "${D}/usr/lib/"
# insinto /usr/share/vulkan/icd.d
# doins "${S}/build-abi_x86_32.x86/icd/amd_icd32.json"
# insinto /usr/share/vulkan/implicit_layer.d
# doins "${S}/build-abi_x86_32.x86/icd/amd_icd32.json"
# fi
# }
multilib_src_install(){
cmake_src_install
rm -r "${D}"/var/ || die "can't remove incorrect temporary files of amdvlk"
einfo "Correcting permissions of amdvlk $(get_libdir) libraries"
fperms -R 775 /usr/lib/llvm/amdvlk/$(get_libdir)
}
multilib_src_install_all() {
cat > "99${PN}" <<-EOF
LDPATH="${EPREFIX}/usr/lib/llvm/amdvlk/lib:${EPREFIX}/usr/lib/llvm/amdvlk/lib64"
EOF
doenvd "99${PN}"
}
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 "and make sure you use DRI3 mode for Xorg (not revelant for wayland)"
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\""
elog "For DXVK: use DXVK_FILTER_DEVICE_NAME= variable"
elog ""
elog "You can also use AMD_VULKAN_ICD to switch to the required driver."
elog "More information about the configuration can be found here:"
elog "https://github.com/GPUOpen-Drivers/AMDVLK"
elog "You can use AMD_VULKAN_ICD variable to switch to the required driver."
elog "AMD_VULKAN_ICD=RADV application - for using radv."
elog "AMD_VULKAN_ICD=AMDVLK application - for using amdvlk."
}

View File

@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM 'http://www.gentoo.org/dtd/metadata.dtd'>
<pkgmetadata>
<!-- maintainer-needed -->
<maintainer type="person">
<email>denis7774@gmail.com</email>
<name>Denis Reva</name>
<description>rarogcmex</description>
</maintainer>
<longdescription lang="en">
The AMD Open Source Driver for Vulkan® is an open-source Vulkan driver for AMD Radeon™ graphics adapters on Linux®. It is built on top of AMDs Platform Abstraction Library (PAL), a shared component that is designed to encapsulate certain hardware and OS-specific programming details for many of AMDs 3D and compute drivers. Leveraging PAL can help provide a consistent experience across platforms, including support for recently released GPUs and compatibility with AMD developer tools.
Shaders that compose a particular VkPipeline object are compiled as a single entity using the LLVM-Based Pipeline Compiler (LLPC) library. LLPC builds on LLVMs existing shader compilation infrastructure for AMD GPUs to generate code objects compatible with PALs pipeline ABI.