diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2019-05-02 17:37:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-02 17:37:20 -0400 |
commit | 296e8fef618c7597c3dfa84be2fcdb2771350b61 (patch) | |
tree | 36c75341bd3f64da0d722da4fb30ec3a8d0fad87 /pkgs/development/libraries/mesa | |
parent | 4688f4078fa655fa3e56a8a4b2591fb195a7eceb (diff) | |
parent | 3567b1390fde8681a0f0b4581f2babbe863ede9a (diff) | |
download | nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.tar nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.tar.gz nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.tar.bz2 nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.tar.lz nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.tar.xz nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.tar.zst nixlib-296e8fef618c7597c3dfa84be2fcdb2771350b61.zip |
Merge branch 'staging' into mesa_3
Diffstat (limited to 'pkgs/development/libraries/mesa')
3 files changed, 70 insertions, 74 deletions
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 6787a4dddbbb..b1520de4fd6c 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -2,12 +2,14 @@ , pkgconfig, intltool, autoreconfHook , file, expat, libdrm, xorg, wayland, wayland-protocols, openssl , llvmPackages, libffi, libomxil-bellagio, libva-minimal -, libelf, libvdpau, valgrind-light, python2 +, libelf, libvdpau, valgrind-light, python2, python2Packages , libglvnd , enableRadv ? true , galliumDrivers ? null , driDrivers ? null , vulkanDrivers ? null +, eglPlatforms ? [ "x11" ] ++ lib.optionals stdenv.isLinux [ "wayland" "drm" ] +, OpenGL, Xplugin }: /** Packaging design: @@ -23,28 +25,27 @@ with stdenv.lib; -if ! lists.elem stdenv.system platforms.mesaPlatforms then +if ! elem stdenv.hostPlatform.system platforms.mesaPlatforms then throw "${stdenv.system}: unsupported platform for Mesa" else let - inherit (stdenv) hostPlatform; # platforms that have PCIe slots and thus can use most non-integrated GPUs - pciePlatform = !hostPlatform.isAarch32 && !hostPlatform.isAarch64; - defaultGalliumDrivers = [ "virgl" ] + pciePlatform = !stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isAarch64; + defaultGalliumDrivers = optionals (elem "drm" eglPlatforms) ([ "virgl" ] ++ lib.optionals pciePlatform [ "r300" "r600" "radeonsi" ] - ++ lib.optionals (pciePlatform || hostPlatform.isAarch32 || hostPlatform.isAarch64) [ "nouveau" ] - ++ lib.optionals hostPlatform.isx86 [ "i915" "svga" ] - ++ lib.optionals (hostPlatform.isAarch32 || hostPlatform.isAarch64) [ "vc4" ] - ++ lib.optionals hostPlatform.isAarch64 [ "freedreno" "etnaviv" "imx" ] - ; - defaultDriDrivers = [ ] + ++ 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 || hostPlatform.isAarch32 || hostPlatform.isAarch64) [ "nouveau" ] - ++ lib.optionals hostPlatform.isx86 [ "i915" "i965" ]; - defaultVulkanDrivers = - lib.optional hostPlatform.isx86 "intel" - ++ lib.optional enableRadv "radeon"; + ++ 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 @@ -54,11 +55,11 @@ let (if gallium_ == null then defaultGalliumDrivers else gallium_) - ++ ["swrast" "virgl"]; + ++ lib.optional stdenv.isLinux "swrast"; driDrivers = (if dri_ == null - then defaultDriDrivers - else dri_) ++ ["swrast"]; + then optionals (elem "drm" eglPlatforms) defaultDriDrivers + else dri_) ++ lib.optional stdenv.isLinux "swrast"; vulkanDrivers = if vulkan_ == null then defaultVulkanDrivers @@ -66,7 +67,7 @@ let in let - version = "18.1.5"; + version = "18.3.4"; branch = head (splitString "." version); in @@ -80,7 +81,7 @@ let self = stdenv.mkDerivation { "ftp://ftp.freedesktop.org/pub/mesa/older-versions/${branch}.x/${version}/mesa-${version}.tar.xz" "https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz" ]; - sha256 = "69dbe6f1a6660386f5beb85d4fcf003ee23023ed7b9a603de84e9a37e8d98dea"; + sha256 = "01xv03ah4l5lcfx015n3fg1620dh4nbbv6gmhh6zhdsx6sj4sc9j"; }; prePatch = "patchShebangs ."; @@ -94,7 +95,8 @@ let self = stdenv.mkDerivation { ./disk_cache-include-dri-driver-path-in-cache-key.patch ]; - outputs = [ "out" "dev" "drivers" "osmesa" ]; + outputs = [ "out" "dev" "drivers" ] + ++ lib.optional (elem "swrast" galliumDrivers) "osmesa"; # TODO: Figure out how to enable opencl without having a runtime dependency on clang configureFlags = [ @@ -102,18 +104,11 @@ let self = stdenv.mkDerivation { "--localstatedir=/var" "--with-dri-driverdir=$(drivers)/lib/dri" "--with-dri-searchpath=${libglvnd.driverLink}/lib/dri" - "--with-platforms=x11,wayland,drm" - ] - ++ (optional (galliumDrivers != []) - ("--with-gallium-drivers=" + - builtins.concatStringsSep "," galliumDrivers)) - ++ (optional (driDrivers != []) - ("--with-dri-drivers=" + - builtins.concatStringsSep "," driDrivers)) - ++ (optional (vulkanDrivers != []) - ("--with-vulkan-drivers=" + - builtins.concatStringsSep "," vulkanDrivers)) - ++ [ + "--with-platforms=${concatStringsSep "," eglPlatforms}" + "--with-gallium-drivers=${concatStringsSep "," galliumDrivers}" + "--with-dri-drivers=${concatStringsSep "," driDrivers}" + "--with-vulkan-drivers=${concatStringsSep "," vulkanDrivers}" + "--enable-texture-float" (enableFeature stdenv.isLinux "dri3") (enableFeature stdenv.isLinux "nine") # Direct3D in Wine "--enable-libglvnd" @@ -124,34 +119,38 @@ let self = stdenv.mkDerivation { "--enable-glx" # https://bugs.freedesktop.org/show_bug.cgi?id=35268 (enableFeature (!stdenv.hostPlatform.isMusl) "glx-tls") - "--enable-gallium-osmesa" # used by wine + # used by wine + (enableFeature (elem "swrast" galliumDrivers) "gallium-osmesa") "--enable-llvm" - "--enable-egl" - "--enable-xa" # used in vmware driver - "--enable-gbm" + (enableFeature stdenv.isLinux "egl") + (enableFeature stdenv.isLinux "xa") # used in vmware driver + (enableFeature stdenv.isLinux "gbm") "--enable-xvmc" "--enable-vdpau" "--enable-shared-glapi" "--enable-llvm-shared-libs" - "--enable-omx-bellagio" - "--enable-va" + (enableFeature stdenv.isLinux "omx-bellagio") + (enableFeature stdenv.isLinux "va") "--disable-opencl" ]; - nativeBuildInputs = [ autoreconfHook intltool pkgconfig file ]; + nativeBuildInputs = [ + autoreconfHook intltool pkgconfig file + python2 python2Packages.Mako + ]; - propagatedBuildInputs = with xorg; - [ libXdamage libXxf86vm ] - ++ optional stdenv.isLinux libdrm; + propagatedBuildInputs = with xorg; [ + libXdamage libXxf86vm + ] ++ optional stdenv.isLinux libdrm + ++ optionals stdenv.isDarwin [ OpenGL Xplugin ]; buildInputs = with xorg; [ - expat llvmPackages.llvm libglvnd - glproto dri2proto dri3proto presentproto - libX11 libXext libxcb libXt libXfixes libxshmfence - libffi wayland wayland-protocols libvdpau libelf libXvMC - libomxil-bellagio libva-minimal libpthreadstubs openssl/*or another sha1 provider*/ - valgrind-light python2 python2.pkgs.Mako - ]; + expat llvmPackages.llvm libglvnd xorgproto + libX11 libXext libxcb libXt libXfixes libxshmfence libXrandr + libffi libvdpau libelf libXvMC + libpthreadstubs openssl /*or another sha1 provider*/ + ] ++ lib.optionals (elem "wayland" eglPlatforms) [ wayland wayland-protocols ] + ++ lib.optionals stdenv.isLinux [ valgrind-light libomxil-bellagio libva-minimal ]; enableParallelBuilding = true; doCheck = false; @@ -164,6 +163,9 @@ let self = stdenv.mkDerivation { # TODO: probably not all .la files are completely fixed, but it shouldn't matter; postInstall = '' + # Some installs don't have any drivers so this directory is never created. + mkdir -p $drivers + '' + optionalString (galliumDrivers != []) '' # move gallium-related stuff to $drivers, so $out doesn't depend on LLVM mv -t "$drivers/lib/" \ $out/lib/libXvMC* \ @@ -217,7 +219,7 @@ let self = stdenv.mkDerivation { # TODO: # check $out doesn't depend on llvm: builder failures are ignored # for some reason grep -qv '${llvmPackages.llvm}' -R "$out"; - postFixup = '' + postFixup = optionalString (galliumDrivers != []) '' # add RPATH so the drivers can find the moved libgallium and libdricore9 # moved here to avoid problems with stripping patchelfed files for lib in $drivers/lib/*.so* $drivers/lib/*/*.so*; do @@ -237,7 +239,9 @@ let self = stdenv.mkDerivation { # Use stub libraries from libglvnd and headers from Mesa. buildCommand = '' - ln -s ${libglvnd.out} $out + mkdir -p $out/nix-support + ln -s ${libglvnd.out}/lib $out/lib + mkdir -p $dev/{,lib/pkgconfig,nix-support} echo "$out" > $dev/nix-support/propagated-build-inputs ln -s ${self.dev}/include $dev/include @@ -259,6 +263,8 @@ let self = stdenv.mkDerivation { genPkgConfig egl EGL genPkgConfig glesv1_cm GLESv1_CM genPkgConfig glesv2 GLESv2 + '' + lib.optionalString stdenv.isDarwin '' + echo ${OpenGL} > $out/nix-support/propagated-build-inputs ''; }; }; @@ -267,7 +273,7 @@ let self = stdenv.mkDerivation { description = "An open source implementation of OpenGL"; homepage = https://www.mesa3d.org/; license = licenses.mit; # X11 variant, in most files - platforms = platforms.linux; + platforms = platforms.linux ++ platforms.darwin; maintainers = with maintainers; [ vcunat ]; }; }; diff --git a/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch b/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch index 47391567fb9b..37813db89347 100644 --- a/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch +++ b/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch @@ -1,4 +1,4 @@ -From 9c9df280b318c26aece9873cf77b32e4f95634c1 Mon Sep 17 00:00:00 2001 +From 2a1e32b4105fe95413a615a44d40938920ea1a19 Mon Sep 17 00:00:00 2001 From: David McFarland <corngood@gmail.com> Date: Mon, 6 Aug 2018 15:52:11 -0300 Subject: [PATCH] disk_cache: include dri driver path in cache key @@ -11,10 +11,10 @@ timestamps in /nix/store are zero. 2 files changed, 6 insertions(+) diff --git a/src/util/Makefile.am b/src/util/Makefile.am -index 07bf052175..aea09f60b3 100644 +index bafb57439a..a22e2e41eb 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am -@@ -30,6 +30,9 @@ noinst_LTLIBRARIES = \ +@@ -35,6 +35,9 @@ noinst_LTLIBRARIES = \ libmesautil.la \ libxmlconfig.la @@ -25,28 +25,28 @@ index 07bf052175..aea09f60b3 100644 $(PTHREAD_CFLAGS) \ -I$(top_srcdir)/include diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c -index 4a762eff20..8086c0be75 100644 +index 368ec41792..071220b2ba 100644 --- a/src/util/disk_cache.c +++ b/src/util/disk_cache.c -@@ -388,8 +388,10 @@ disk_cache_create(const char *gpu_name, const char *timestamp, +@@ -388,8 +388,10 @@ disk_cache_create(const char *gpu_name, const char *driver_id, /* Create driver id keys */ - size_t ts_size = strlen(timestamp) + 1; + size_t id_size = strlen(driver_id) + 1; + size_t key_size = strlen(DISK_CACHE_KEY) + 1; size_t gpu_name_size = strlen(gpu_name) + 1; - cache->driver_keys_blob_size += ts_size; + cache->driver_keys_blob_size += id_size; + cache->driver_keys_blob_size += key_size; cache->driver_keys_blob_size += gpu_name_size; /* We sometimes store entire structs that contains a pointers in the cache, -@@ -410,6 +412,7 @@ disk_cache_create(const char *gpu_name, const char *timestamp, +@@ -410,6 +412,7 @@ disk_cache_create(const char *gpu_name, const char *driver_id, uint8_t *drv_key_blob = cache->driver_keys_blob; DRV_KEY_CPY(drv_key_blob, &cache_version, cv_size) - DRV_KEY_CPY(drv_key_blob, timestamp, ts_size) + DRV_KEY_CPY(drv_key_blob, driver_id, id_size) + DRV_KEY_CPY(drv_key_blob, DISK_CACHE_KEY, key_size) DRV_KEY_CPY(drv_key_blob, gpu_name, gpu_name_size) DRV_KEY_CPY(drv_key_blob, &ptr_size, ptr_size_size) DRV_KEY_CPY(drv_key_blob, &driver_flags, driver_flags_size) -- -2.18.0 +2.19.1 diff --git a/pkgs/development/libraries/mesa/missing-includes.patch b/pkgs/development/libraries/mesa/missing-includes.patch index feb6ffe428c0..18e7d5437b15 100644 --- a/pkgs/development/libraries/mesa/missing-includes.patch +++ b/pkgs/development/libraries/mesa/missing-includes.patch @@ -32,16 +32,6 @@ #include <unistd.h> #include <fcntl.h> #else ---- ./src/mesa/drivers/dri/i965/brw_bufmgr.h -+++ ./src/mesa/drivers/dri/i965/brw_bufmgr.h -@@ -37,6 +37,7 @@ - #include <stdbool.h> - #include <stdint.h> - #include <stdio.h> -+#include <time.h> - #include "util/u_atomic.h" - #include "util/list.h" - --- ./src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h +++ ./src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h @@ -28,6 +28,8 @@ |