about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2019-05-08 21:39:39 -0400
committerGitHub <noreply@github.com>2019-05-08 21:39:39 -0400
commit9d3d5e98bc415935265d48f59f538cdda52fc3bb (patch)
tree0b40f04c5e99d5f9d2b86f12b41dda96ac7105d0 /pkgs
parent0a64e79596639742e7535bd4bb9a0885e00ba2aa (diff)
parent296e8fef618c7597c3dfa84be2fcdb2771350b61 (diff)
downloadnixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.tar
nixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.tar.gz
nixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.tar.bz2
nixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.tar.lz
nixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.tar.xz
nixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.tar.zst
nixlib-9d3d5e98bc415935265d48f59f538cdda52fc3bb.zip
Merge pull request #45474 from CrystalGamma/mesa_3
mesa: restructure driver selection to be more architecture-neutral
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/mesa/default.nix34
1 files changed, 17 insertions, 17 deletions
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index c9ce97849e1a..b1520de4fd6c 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -26,26 +26,26 @@
 with stdenv.lib;
 
 if ! elem stdenv.hostPlatform.system platforms.mesaPlatforms then
-  throw "unsupported platform for Mesa"
+  throw "${stdenv.system}: unsupported platform for Mesa"
 else
 
 let
-  defaultGalliumDrivers =
-    optionals (elem "drm" eglPlatforms)
-    (if stdenv.isAarch32
-    then ["virgl" "nouveau" "freedreno" "vc4" "etnaviv" "imx"]
-    else if stdenv.isAarch64
-    then ["virgl" "nouveau" "vc4" ]
-    else ["virgl" "svga" "i915" "r300" "r600" "radeonsi" "nouveau"]);
-  defaultDriDrivers =
-    optionals (elem "drm" eglPlatforms)
-    (if (stdenv.isAarch32 || stdenv.isAarch64)
-    then ["nouveau"]
-    else ["i915" "i965" "nouveau" "radeon" "r200"]);
-  defaultVulkanDrivers =
-    optionals stdenv.isLinux (if (stdenv.isAarch32 || stdenv.isAarch64)
-    then []
-    else ["intel"] ++ lib.optional enableRadv "radeon");
+  # platforms that have PCIe slots and thus can use most non-integrated GPUs
+  pciePlatform = !stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isAarch64;
+  defaultGalliumDrivers = optionals (elem "drm" eglPlatforms) ([ "virgl" ]
+    ++ lib.optionals pciePlatform [ "r300" "r600" "radeonsi" ]
+    ++ lib.optionals (pciePlatform || stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "nouveau" ]
+    ++ lib.optionals stdenv.hostPlatform.isx86 [ "i915" "svga" ]
+    ++ lib.optionals (stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "vc4" ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "freedreno" "etnaviv" "imx" ]
+  );
+  defaultDriDrivers = optionals (elem "drm" eglPlatforms) ([ ]
+    ++ lib.optionals pciePlatform [ "radeon" "r200" ]
+    ++ lib.optionals (pciePlatform || stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "nouveau" ]
+    ++ lib.optionals stdenv.hostPlatform.isx86 [ "i915" "i965" ]);
+  defaultVulkanDrivers = optionals stdenv.hostPlatform.isLinux ([ ]
+    ++ lib.optional stdenv.hostPlatform.isx86 "intel"
+    ++ lib.optional enableRadv "radeon");
 in
 
 let gallium_ = galliumDrivers; dri_ = driDrivers; vulkan_ = vulkanDrivers; in