diff --git a/nixos/doc/manual/configuration/gpu-accel.xml b/nixos/doc/manual/configuration/gpu-accel.xml index 251e5c26ba44..95ee13f4796e 100644 --- a/nixos/doc/manual/configuration/gpu-accel.xml +++ b/nixos/doc/manual/configuration/gpu-accel.xml @@ -183,7 +183,12 @@ GPU1: be forced as follows: = [ - amdvlk + pkgs.amdvlk +]; + +# To enable Vulkan support for 32-bit applications, also add: + = [ + pkgs.driversi686Linux.amdvlk ]; # For amdvlk diff --git a/pkgs/development/libraries/amdvlk/default.nix b/pkgs/development/libraries/amdvlk/default.nix index 73983dba0508..1f75892b9ac8 100644 --- a/pkgs/development/libraries/amdvlk/default.nix +++ b/pkgs/development/libraries/amdvlk/default.nix @@ -15,16 +15,19 @@ , xorg , zlib }: +let -stdenv.mkDerivation rec { + suffix = if stdenv.system == "x86_64-linux" then "64" else "32"; + +in stdenv.mkDerivation rec { pname = "amdvlk"; - version = "2020.Q3.4"; + version = "2020.Q3.5"; src = fetchRepoProject { name = "${pname}-src"; manifest = "https://github.com/GPUOpen-Drivers/AMDVLK.git"; rev = "refs/tags/v-${version}"; - sha256 = "13yy1v43wyw2dbanl39sk1798344smmycgvl3gla61ipqls0qfgd"; + sha256 = "08fj3cg3axnwadlpfim23g5nyjl69044fqxdr57af6y79441njay"; }; buildInputs = [ @@ -62,14 +65,24 @@ stdenv.mkDerivation rec { cmakeDir = "../drivers/xgl"; + # LTO is disabled in gcc for i686 as of #66528 + cmakeFlags = stdenv.lib.optionals stdenv.is32bit ["-DXGL_ENABLE_LTO=OFF"]; + + postPatch = stdenv.lib.optionalString stdenv.is32bit '' + substituteInPlace drivers/pal/cmake/PalCompilerOptions.cmake \ + --replace "pal_setup_gcc_ipo()" "" + ''; + installPhase = '' - install -Dm755 -t $out/lib icd/amdvlk64.so - install -Dm644 -t $out/share/vulkan/icd.d ../drivers/AMDVLK/json/Redhat/amd_icd64.json + install -Dm755 -t $out/lib icd/amdvlk${suffix}.so + install -Dm644 -t $out/share/vulkan/icd.d ../drivers/AMDVLK/json/Redhat/amd_icd${suffix}.json - substituteInPlace $out/share/vulkan/icd.d/amd_icd64.json --replace \ + substituteInPlace $out/share/vulkan/icd.d/amd_icd${suffix}.json --replace \ "/usr/lib64" "$out/lib" + substituteInPlace $out/share/vulkan/icd.d/amd_icd${suffix}.json --replace \ + "/usr/lib" "$out/lib" - patchelf --set-rpath "$rpath" $out/lib/amdvlk64.so + patchelf --set-rpath "$rpath" $out/lib/amdvlk${suffix}.so ''; # Keep the rpath, otherwise vulkaninfo and vkcube segfault @@ -80,7 +93,7 @@ stdenv.mkDerivation rec { homepage = "https://github.com/GPUOpen-Drivers/AMDVLK"; changelog = "https://github.com/GPUOpen-Drivers/AMDVLK/releases/tag/v-${version}"; license = licenses.mit; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = with maintainers; [ danieldk Flakebi ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4c9179f5c5d9..1b91dfd45534 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12159,6 +12159,7 @@ in # Multi-arch "drivers" which we want to build for i686. driversi686Linux = recurseIntoAttrs { inherit (pkgsi686Linux) + amdvlk mesa vaapiIntel libvdpau-va-gl