From 4e009205b7716097d516f9dd9b0bd18d510ed1e1 Mon Sep 17 00:00:00 2001 From: K900 Date: Wed, 19 Feb 2025 20:11:45 +0300 Subject: [PATCH 01/18] mesa: 24.3.4 -> 25.0.1 Avoid moving pipe_* to $opencl, because pipe-loader is linked everywhere now --- pkgs/development/libraries/mesa/common.nix | 4 +- .../libraries/mesa/cross_clc.patch | 90 ------------------- pkgs/development/libraries/mesa/darwin.nix | 12 --- pkgs/development/libraries/mesa/default.nix | 21 +++-- 4 files changed, 14 insertions(+), 113 deletions(-) delete mode 100644 pkgs/development/libraries/mesa/cross_clc.patch diff --git a/pkgs/development/libraries/mesa/common.nix b/pkgs/development/libraries/mesa/common.nix index 8439861cf36c..23e5104ffcf6 100644 --- a/pkgs/development/libraries/mesa/common.nix +++ b/pkgs/development/libraries/mesa/common.nix @@ -5,14 +5,14 @@ # nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa rec { pname = "mesa"; - version = "24.3.4"; + version = "25.0.1"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "mesa"; repo = "mesa"; rev = "mesa-${version}"; - hash = "sha256-1RUHbTgcCxdDrWjqB0EG4Ny/nwdjQHHpyPauiW/yogU="; + hash = "sha256-9D4d7EEdZysvXDRcmpbyt85Lo64sldNRomp6/HUVORo="; }; meta = { diff --git a/pkgs/development/libraries/mesa/cross_clc.patch b/pkgs/development/libraries/mesa/cross_clc.patch deleted file mode 100644 index cb29e57ec349..000000000000 --- a/pkgs/development/libraries/mesa/cross_clc.patch +++ /dev/null @@ -1,90 +0,0 @@ -commit f063e9f74b45f34e4ac570a90901253bf8e64efd -Author: Mary Guillemard -Date: 2024-12-02 09:11:35 +0100 - - meson: Add mesa-clc and install-mesa-clc options - - Due to the cross build issues in current meson, we adds new options to - allow mesa_clc and vtn_bindgen to be installed or searched on the - system. - - Signed-off-by: Mary Guillemard - Reviewed-by: Alyssa Rosenzweig - Reviewed-by: Boris Brezillon - Part-of: - -diff --git a/meson.build b/meson.build -index de9c9af53a1..e37325ec176 100644 ---- a/meson.build -+++ b/meson.build -@@ -808,7 +808,7 @@ if with_gallium_rusticl or with_nouveau_vk or with_tools.contains('etnaviv') - endif - - with_clover_spirv = with_gallium_clover and get_option('opencl-spirv') --with_clc = with_microsoft_clc or with_intel_clc or with_gallium_asahi or with_asahi_vk or with_gallium_rusticl or with_clover_spirv -+with_clc = get_option('mesa-clc') != 'auto' or with_microsoft_clc or with_intel_clc or with_gallium_asahi or with_asahi_vk or with_gallium_rusticl - - dep_clc = null_dep - if with_gallium_clover or with_clc -diff --git a/meson_options.txt b/meson_options.txt -index 79ee65e6094..8f22b36e5fb 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -744,3 +744,20 @@ option( - 'none', 'dri2' - ], - ) -+ -+option( -+ 'mesa-clc', -+ type : 'combo', -+ value : 'auto', -+ choices : [ -+ 'enabled', 'system', 'auto' -+ ], -+ description : 'Build the mesa-clc compiler or use a system version.' -+) -+ -+option( -+ 'install-mesa-clc', -+ type : 'boolean', -+ value : false, -+ description : 'Install the mesa-clc compiler (if needed for cross builds).' -+) -diff --git a/src/compiler/clc/meson.build b/src/compiler/clc/meson.build -index 74767d08de2..4875d71ca21 100644 ---- a/src/compiler/clc/meson.build -+++ b/src/compiler/clc/meson.build -@@ -117,15 +117,20 @@ idep_mesaclc = declare_dependency( - link_args : _idep_mesaclc_link_args, - ) - --prog_mesa_clc = executable( -- 'mesa_clc', -- ['mesa_clc.c'], -- include_directories : [inc_include, inc_src], -- c_args : [pre_args, no_override_init_args], -- link_args : [ld_args_build_id], -- dependencies : [idep_mesaclc, dep_llvm, dep_spirv_tools, idep_getopt], -- # If we can run host binaries directly, just build mesa_clc for the host. -- # Most commonly this happens when doing a cross compile from an x86_64 build -- # machine to an x86 host -- native : not meson.can_run_host_binaries(), --) -+if get_option('mesa-clc') == 'system' -+ prog_mesa_clc = find_program('mesa_clc', native : true) -+else -+ prog_mesa_clc = executable( -+ 'mesa_clc', -+ ['mesa_clc.c'], -+ include_directories : [inc_include, inc_src], -+ c_args : [pre_args, no_override_init_args], -+ link_args : [ld_args_build_id], -+ dependencies : [idep_mesaclc, dep_llvm, dep_spirv_tools, idep_getopt], -+ # If we can run host binaries directly, just build mesa_clc for the host. -+ # Most commonly this happens when doing a cross compile from an x86_64 build -+ # machine to an x86 host -+ native : not meson.can_run_host_binaries(), -+ install : get_option('install-mesa-clc'), -+ ) -+endif diff --git a/pkgs/development/libraries/mesa/darwin.nix b/pkgs/development/libraries/mesa/darwin.nix index 55392071010a..1a458523632e 100644 --- a/pkgs/development/libraries/mesa/darwin.nix +++ b/pkgs/development/libraries/mesa/darwin.nix @@ -27,18 +27,6 @@ stdenv.mkDerivation { meta ; - # Darwin build fixes. FIXME: remove in 25.1. - patches = [ - (fetchpatch { - url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/e89eba0796b3469f1d2cdbb600309f6231a8169d.patch"; - hash = "sha256-0EP0JsYy+UTQ+eGd3sMfoLf1R+2e8n1flmQAHq3rCR4="; - }) - (fetchpatch { - url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/568a4ca899762fe96fc9b34d2288d07e6656af87.patch"; - hash = "sha256-uLxa5vA3/cYAIJT9h7eBQ1EBu4MnMg9R5uGAHzTb5Fc="; - }) - ]; - outputs = [ "out" "dev" diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 633770b6862c..c1e950c2e516 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -138,9 +138,6 @@ in stdenv.mkDerivation { patches = [ ./opencl.patch - # cherry-picked from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32719 - # safe to remove for versions > 24.3.2 - ./cross_clc.patch ]; postPatch = '' @@ -206,14 +203,13 @@ in stdenv.mkDerivation { (lib.mesonOption "freedreno-kmds" "msm,kgsl,virtio,wsl") # Enable Intel RT stuff when available - (lib.mesonBool "install-intel-clc" true) - (lib.mesonBool "install-mesa-clc" true) (lib.mesonEnable "intel-rt" stdenv.hostPlatform.isx86_64) + + # Required for OpenCL (lib.mesonOption "clang-libdir" "${lib.getLib llvmPackages.clang-unwrapped}/lib") # Clover, old OpenCL frontend (lib.mesonOption "gallium-opencl" "icd") - (lib.mesonBool "opencl-spirv" true) # Rusticl, new OpenCL frontend (lib.mesonBool "gallium-rusticl" true) @@ -221,12 +217,18 @@ in stdenv.mkDerivation { # meson auto_features enables this, but we do not want it (lib.mesonEnable "android-libbacktrace" false) (lib.mesonEnable "microsoft-clc" false) # Only relevant on Windows (OpenCL 1.2 API on top of D3D12) + + # Build and install extra tools for cross + (lib.mesonBool "install-mesa-clc" true) + (lib.mesonBool "install-precomp-compiler" true) + + # Disable valgrind on targets where it's not available (lib.mesonEnable "valgrind" withValgrind) ] ++ lib.optionals enablePatentEncumberedCodecs [ (lib.mesonOption "video-codecs" "all") ] ++ lib.optionals needNativeCLC [ - (lib.mesonOption "intel-clc" "system") (lib.mesonOption "mesa-clc" "system") + (lib.mesonOption "precomp-compiler" "system") ]; strictDeps = true; @@ -308,6 +310,7 @@ in stdenv.mkDerivation { postInstall = '' # Move driver-related bits to $drivers + moveToOutput "lib/gallium-pipe" $drivers moveToOutput "lib/gbm" $drivers moveToOutput "lib/lib*_mesa*" $drivers moveToOutput "lib/libgallium*" $drivers @@ -339,7 +342,7 @@ in stdenv.mkDerivation { moveToOutput bin/intel_clc $driversdev moveToOutput bin/mesa_clc $driversdev - moveToOutput lib/gallium-pipe $opencl + moveToOutput bin/vtn_bindgen $driversdev moveToOutput "lib/lib*OpenCL*" $opencl moveToOutput "lib/libOSMesa*" $osmesa moveToOutput bin/spirv2dxil $spirv2dxil @@ -392,7 +395,7 @@ in stdenv.mkDerivation { env.NIX_CFLAGS_COMPILE = toString ([ "-UPIPE_SEARCH_DIR" - "-DPIPE_SEARCH_DIR=\"${placeholder "opencl"}/lib/gallium-pipe\"" + "-DPIPE_SEARCH_DIR=\"${placeholder "drivers"}/lib/gallium-pipe\"" ]); passthru = { From 5ae0d557c0396c5576564584d68e789793cec973 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 21:20:18 +0300 Subject: [PATCH 02/18] arrayfire: mark broken It is. --- pkgs/development/libraries/arrayfire/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/arrayfire/default.nix b/pkgs/development/libraries/arrayfire/default.nix index c33e6f4cbfe2..d0259c6016b2 100644 --- a/pkgs/development/libraries/arrayfire/default.nix +++ b/pkgs/development/libraries/arrayfire/default.nix @@ -245,5 +245,6 @@ stdenv.mkDerivation rec { chessai twesterhout ]; + broken = true; }; } From 1db9e2a4f55c2cdba53cea455d66868661952edf Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:28:32 +0300 Subject: [PATCH 03/18] hey-mail: mesa -> libgbm --- pkgs/by-name/he/hey-mail/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/he/hey-mail/package.nix b/pkgs/by-name/he/hey-mail/package.nix index 52b0add9188e..b4e3f10b2995 100644 --- a/pkgs/by-name/he/hey-mail/package.nix +++ b/pkgs/by-name/he/hey-mail/package.nix @@ -21,7 +21,7 @@ wrapGAppsHook3, writeScript, atk, - mesa, + libgbm, cups, systemd, alsa-lib, @@ -53,7 +53,7 @@ let libxkbcommon libGL atk - mesa + libgbm cups systemd alsa-lib From d3631853bd708955edfe71dca94171efb5749711 Mon Sep 17 00:00:00 2001 From: K900 Date: Thu, 6 Mar 2025 09:09:39 +0300 Subject: [PATCH 04/18] orca-slicer: get rid of osmesa dependency, clean up other mesa-related things It's not actually necessary. --- pkgs/by-name/or/orca-slicer/package.nix | 12 ++---------- pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch | 13 +++++++++++++ 2 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch diff --git a/pkgs/by-name/or/orca-slicer/package.nix b/pkgs/by-name/or/orca-slicer/package.nix index 96b996e4f38c..89e03d1d6997 100644 --- a/pkgs/by-name/or/orca-slicer/package.nix +++ b/pkgs/by-name/or/orca-slicer/package.nix @@ -27,7 +27,6 @@ hicolor-icon-theme, ilmbase, libpng, - mesa, mpfr, nlopt, opencascade-occt_7_6, @@ -107,9 +106,6 @@ stdenv.mkDerivation rec { hicolor-icon-theme ilmbase libpng - mesa - mesa.osmesa - mesa.drivers mpfr nlopt opencascade-occt_7_6 @@ -129,6 +125,8 @@ stdenv.mkDerivation rec { ./patches/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch # Link opencv_core and opencv_imgproc instead of opencv_world ./patches/dont-link-opencv-world-orca.patch + # Don't link osmesa + ./patches/no-osmesa.patch # The changeset from https://github.com/SoftFever/OrcaSlicer/pull/7650, can be removed when that PR gets merged # Allows disabling the update nag screen (fetchpatch { @@ -169,8 +167,6 @@ stdenv.mkDerivation rec { NIX_LDFLAGS = toString [ (lib.optionalString withSystemd "-ludev") - "-L${mesa.osmesa}/lib" - "-L${mesa.drivers}/lib" "-L${boost186}/lib" "-lboost_log" "-lboost_log_setup" @@ -194,7 +190,6 @@ stdenv.mkDerivation rec { "-DBOOST_LOG_NO_LIB=OFF" "-DCMAKE_CXX_FLAGS=-DGL_SILENCE_DEPRECATION" "-DCMAKE_EXE_LINKER_FLAGS=-Wl,--no-as-needed" - "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,${mesa.drivers}/lib -Wl,-rpath,${mesa.osmesa}/lib" "-DORCA_VERSION_CHECK_DEFAULT=OFF" ]; @@ -202,12 +197,9 @@ stdenv.mkDerivation rec { gappsWrapperArgs+=( --prefix LD_LIBRARY_PATH : "$out/lib:${ lib.makeLibraryPath [ - mesa.drivers - mesa.osmesa glew ] }" - --prefix LIBGL_DRIVERS_PATH : "${mesa.drivers}/lib/dri" --set WEBKIT_DISABLE_COMPOSITING_MODE 1 ) ''; diff --git a/pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch b/pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch new file mode 100644 index 000000000000..09298b3e55b6 --- /dev/null +++ b/pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch @@ -0,0 +1,13 @@ +diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt +index e695acd48..174e233e6 100644 +--- a/src/slic3r/CMakeLists.txt ++++ b/src/slic3r/CMakeLists.txt +@@ -587,7 +587,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") + FIND_LIBRARY(WAYLAND_EGL_LIBRARIES NAMES wayland-egl) + FIND_LIBRARY(WAYLAND_CLIENT_LIBRARIES NAMES wayland-client) + find_package(CURL REQUIRED) +- target_link_libraries(libslic3r_gui ${DBUS_LIBRARIES} OSMesa) ++ target_link_libraries(libslic3r_gui ${DBUS_LIBRARIES}) + target_link_libraries(libslic3r_gui + OpenGL::EGL + ${WAYLAND_SERVER_LIBRARIES} From d8b8fcb32363c0af74dacb7dbdd9b52a9a20e4b2 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 22:51:49 +0300 Subject: [PATCH 05/18] primus: remove spurious Mesa reference That file doesn't even exist. I'm pretty sure the whole thing is irreparably broken. Oh well. --- pkgs/tools/X11/primus/lib.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix index 7e6572f66a9a..1beecf73015e 100644 --- a/pkgs/tools/X11/primus/lib.nix +++ b/pkgs/tools/X11/primus/lib.nix @@ -5,7 +5,6 @@ fetchpatch, libX11, libGL, - mesa, nvidia_x11 ? null, libglvnd, }: @@ -48,7 +47,6 @@ stdenv.mkDerivation { "LIBDIR=$(out)/lib" "PRIMUS_libGLa=${aPackage}/lib/libGL.so" "PRIMUS_libGLd=${libGL}/lib/libGL.so" - "PRIMUS_LOAD_GLOBAL=${mesa}/lib/libglapi.so" ]; installPhase = '' From 888487a7463b3e9c4470fa795ae9a371a89595ec Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 21:23:52 +0300 Subject: [PATCH 06/18] python312Packages.horizon-eda: build without osmesa --- pkgs/development/python-modules/horizon-eda/default.nix | 3 --- pkgs/top-level/python-packages.nix | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/horizon-eda/default.nix b/pkgs/development/python-modules/horizon-eda/default.nix index f1b64a71ae32..e444dc2705ca 100644 --- a/pkgs/development/python-modules/horizon-eda/default.nix +++ b/pkgs/development/python-modules/horizon-eda/default.nix @@ -1,7 +1,6 @@ { buildPythonPackage, horizon-eda, - mesa, pycairo, python, pythonOlder, @@ -24,8 +23,6 @@ buildPythonPackage { disabled = pythonOlder "3.9"; buildInputs = base.buildInputs ++ [ - mesa - mesa.osmesa python ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d781f386f10b..6a9fc437c31b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6099,7 +6099,7 @@ self: super: with self; { hopcroftkarp = callPackage ../development/python-modules/hopcroftkarp { }; horizon-eda = callPackage ../development/python-modules/horizon-eda { - inherit (pkgs) horizon-eda mesa; + inherit (pkgs) horizon-eda; }; howdoi = callPackage ../development/python-modules/howdoi { }; From cdbf9dc01fd0c9cd0efb536bf160f08dedb8e8de Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:30:58 +0300 Subject: [PATCH 07/18] qqmusic: remove unused Mesa input --- pkgs/by-name/qq/qqmusic/package.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/by-name/qq/qqmusic/package.nix b/pkgs/by-name/qq/qqmusic/package.nix index 4faa34fd83a4..4e35c80b4a9a 100644 --- a/pkgs/by-name/qq/qqmusic/package.nix +++ b/pkgs/by-name/qq/qqmusic/package.nix @@ -21,7 +21,6 @@ libdbusmenu, libglvnd, libpulseaudio, - mesa, nspr, nss, pango, @@ -62,7 +61,6 @@ stdenv.mkDerivation (finalAttrs: { libdbusmenu libglvnd libpulseaudio - mesa nspr nss pango From b3d0fa247fdab20bf64a7d98a439e088f2d38068 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:52:14 +0300 Subject: [PATCH 08/18] wine: build without osmesa It's going away soon. --- pkgs/applications/emulators/wine/base.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/emulators/wine/base.nix b/pkgs/applications/emulators/wine/base.nix index c47a04e9e42c..aaa53bb38c57 100644 --- a/pkgs/applications/emulators/wine/base.nix +++ b/pkgs/applications/emulators/wine/base.nix @@ -98,7 +98,7 @@ lib.optionalAttrs (buildScript != null) { builder = buildScript; } ++ lib.optionals gtkSupport [ pkgs.gtk3 pkgs.glib ] ++ lib.optionals openclSupport [ pkgs.opencl-headers pkgs.ocl-icd ] ++ lib.optionals tlsSupport [ pkgs.openssl pkgs.gnutls ] - ++ lib.optionals (openglSupport && !stdenv.hostPlatform.isDarwin) [ pkgs.libGLU pkgs.libGL pkgs.mesa.osmesa pkgs.libdrm ] + ++ lib.optionals (openglSupport && !stdenv.hostPlatform.isDarwin) [ pkgs.libGLU pkgs.libGL pkgs.libdrm ] ++ lib.optionals stdenv.hostPlatform.isDarwin darwinFrameworks ++ lib.optionals (x11Support) (with pkgs.xorg; [ libX11 libXcomposite libXcursor libXext libXfixes libXi libXrandr libXrender libXxf86vm From 0c746c8c0aa03c15c8cf91306f7b3f3ef1cd544c Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:49:21 +0300 Subject: [PATCH 09/18] mesa-gl-headers: init at 25.0.1 --- pkgs/development/libraries/mesa/headers.nix | 39 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 40 insertions(+) create mode 100644 pkgs/development/libraries/mesa/headers.nix diff --git a/pkgs/development/libraries/mesa/headers.nix b/pkgs/development/libraries/mesa/headers.nix new file mode 100644 index 000000000000..314e1ac5efad --- /dev/null +++ b/pkgs/development/libraries/mesa/headers.nix @@ -0,0 +1,39 @@ +{ + lib, + stdenv, + fetchFromGitLab, +}: + +let + common = import ./common.nix { inherit lib fetchFromGitLab; }; + headers = [ + "include/EGL/eglext_angle.h" + "include/EGL/eglmesaext.h" + ]; +in +stdenv.mkDerivation rec { + pname = "mesa-gl-headers"; + + # These are a bigger rebuild and don't change often, so keep them separate. + version = "25.0.1"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "mesa"; + repo = "mesa"; + rev = "mesa-${version}"; + hash = "sha256-9D4d7EEdZysvXDRcmpbyt85Lo64sldNRomp6/HUVORo="; + }; + + dontBuild = true; + + installPhase = '' + for header in ${toString headers}; do + install -Dm444 $header $out/$header + done + ''; + + passthru = { inherit headers; }; + + inherit (common) meta; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3feea755f81b..ae79b42a313c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9905,6 +9905,7 @@ with pkgs; mesa_i686 = pkgsi686Linux.mesa; # make it build on Hydra libgbm = callPackage ../development/libraries/mesa/gbm.nix {}; + mesa-gl-headers = callPackage ../development/libraries/mesa/headers.nix {}; ## End libGL/libGLU/Mesa stuff From ed656d02fa588119a66e2e8a9fe9f06c03be368f Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 21:05:23 +0300 Subject: [PATCH 10/18] cogl: use mesa-gl-headers --- pkgs/development/libraries/cogl/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/cogl/default.nix b/pkgs/development/libraries/cogl/default.nix index 469a33c8d713..58164f4454a5 100644 --- a/pkgs/development/libraries/cogl/default.nix +++ b/pkgs/development/libraries/cogl/default.nix @@ -14,7 +14,8 @@ gobject-introspection, wayland, gnome, - mesa, + libgbm, + mesa-gl-headers, automake, autoconf, gstreamerSupport ? false, @@ -86,7 +87,8 @@ stdenv.mkDerivation rec { ] ++ lib.optionals stdenv.hostPlatform.isLinux [ wayland - mesa # actually uses eglmesaext + libgbm + mesa-gl-headers libGL xorg.libXrandr xorg.libXfixes From e3d253138dbbec8d6981ce17672ac8a35e292970 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 21:15:05 +0300 Subject: [PATCH 11/18] enlightenment.efl: use mesa-gl-headers --- pkgs/desktops/enlightenment/efl/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/enlightenment/efl/default.nix b/pkgs/desktops/enlightenment/efl/default.nix index 6e7b77e2089d..fc5853479f46 100644 --- a/pkgs/desktops/enlightenment/efl/default.nix +++ b/pkgs/desktops/enlightenment/efl/default.nix @@ -27,6 +27,7 @@ jbig2dec, libGL, libdrm, + libgbm, libinput, libjpeg, libpng, @@ -40,7 +41,7 @@ libxkbcommon, lua, lz4, - mesa, + mesa-gl-headers, mint-x-icons, openjpeg, openssl, @@ -91,7 +92,7 @@ stdenv.mkDerivation rec { libsndfile libtiff lz4 - mesa # actually uses eglmesaext + mesa-gl-headers openssl systemd udev @@ -118,6 +119,7 @@ stdenv.mkDerivation rec { hicolor-icon-theme # for the icon theme jbig2dec libdrm + libgbm libinput libjpeg libraw From 9a16c2b268a664efd07e3d1f378f6265afaa95bf Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 21:26:36 +0300 Subject: [PATCH 12/18] kodi: use mesa-gl-headers --- pkgs/applications/video/kodi/unwrapped.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix index 9cfcfc6072f4..3974536067c1 100644 --- a/pkgs/applications/video/kodi/unwrapped.nix +++ b/pkgs/applications/video/kodi/unwrapped.nix @@ -18,7 +18,7 @@ , libcrossguid, libmicrohttpd , bluez, doxygen, giflib, glib, harfbuzz, lcms2, libidn2, libpthreadstubs, libtasn1 , libplist, p11-kit, zlib, flatbuffers, fstrcmp, rapidjson -, lirc, mesa +, lirc, mesa-gl-headers , x11Support ? true, libX11, xorgproto, libXt, libXmu, libXext, libXinerama, libXrandr, libXtst, libXfixes, xdpyinfo, libXdmcp , dbusSupport ? true, dbus , joystickSupport ? true, cwiid @@ -122,7 +122,7 @@ in stdenv.mkDerivation (finalAttrs: { bluez giflib glib harfbuzz lcms2 libpthreadstubs ffmpeg flatbuffers fstrcmp rapidjson lirc - mesa # uses eglext_angle.h, which is not provided by glvnd + mesa-gl-headers ] ++ lib.optionals x11Support [ libX11 xorgproto libXt libXmu libXext.dev libXdmcp From 3badb3f2570c6b44774b0dd225fa70851cfc7de2 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:49:55 +0300 Subject: [PATCH 13/18] magpie: use mesa-gl-headers --- pkgs/by-name/ma/magpie/package.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ma/magpie/package.nix b/pkgs/by-name/ma/magpie/package.nix index 65ff728acba0..35036b14319c 100644 --- a/pkgs/by-name/ma/magpie/package.nix +++ b/pkgs/by-name/ma/magpie/package.nix @@ -25,6 +25,7 @@ libXtst, libinput, libdrm, + libgbm, gsettings-desktop-schemas, glib, gtk3, @@ -32,7 +33,7 @@ pipewire, libgudev, libwacom, - mesa, + mesa-gl-headers, meson, nix-update-script, validatePkgConfig, @@ -86,7 +87,7 @@ stdenv.mkDerivation (finalAttrs: { libXtst libcap_ng graphene - mesa # actually uses eglmesaext + mesa-gl-headers ]; nativeBuildInputs = [ @@ -114,6 +115,7 @@ stdenv.mkDerivation (finalAttrs: { gtk3 libcanberra libdrm + libgbm libgudev libinput libstartup_notification From 70247ee7bca0c47d7b0c1dfa4f6c43d6c5c0a6e9 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:51:29 +0300 Subject: [PATCH 14/18] muffin: use mesa-gl-headers --- pkgs/by-name/mu/muffin/package.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/muffin/package.nix b/pkgs/by-name/mu/muffin/package.nix index ad233c8a85aa..e781647b9ad7 100644 --- a/pkgs/by-name/mu/muffin/package.nix +++ b/pkgs/by-name/mu/muffin/package.nix @@ -15,6 +15,7 @@ json-glib, libcanberra, libdrm, + libgbm, libgnomekbd, libgudev, libinput, @@ -24,7 +25,7 @@ libXdamage, libxkbcommon, libXtst, - mesa, + mesa-gl-headers, meson, ninja, pipewire, @@ -84,6 +85,7 @@ stdenv.mkDerivation rec { gtk3 libcanberra libdrm + libgbm libgnomekbd libgudev libinput @@ -104,7 +106,7 @@ stdenv.mkDerivation rec { json-glib libXtst graphene - mesa # actually uses eglmesaext + mesa-gl-headers ]; mesonFlags = [ From 9dc26d95a5f9694c52bd44c62e5d28e494dd18d7 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:51:39 +0300 Subject: [PATCH 15/18] mutter: use mesa-gl-headers --- pkgs/by-name/mu/mutter/package.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/mutter/package.nix b/pkgs/by-name/mu/mutter/package.nix index 8480c9095b94..4e08097370b5 100644 --- a/pkgs/by-name/mu/mutter/package.nix +++ b/pkgs/by-name/mu/mutter/package.nix @@ -36,6 +36,7 @@ libXau, libinput, libdrm, + libgbm, libei, libdisplay-info, gsettings-desktop-schemas, @@ -50,7 +51,7 @@ libwacom, libSM, xwayland, - mesa, + mesa-gl-headers, meson, gnome-settings-daemon, xorgserver, @@ -101,7 +102,7 @@ stdenv.mkDerivation (finalAttrs: { propagatedBuildInputs = [ # required for pkg-config to detect mutter-mtk graphene - mesa # actually uses eglmesaext + mesa-gl-headers ]; nativeBuildInputs = [ @@ -133,6 +134,7 @@ stdenv.mkDerivation (finalAttrs: { harfbuzz libcanberra libdrm + libgbm libei libdisplay-info libGL From a103c8363af282437fd514cfacf2cf55b6380e89 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 4 Mar 2025 20:51:46 +0300 Subject: [PATCH 16/18] mutter46: use mesa-gl-headers --- pkgs/by-name/mu/mutter46/package.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/mutter46/package.nix b/pkgs/by-name/mu/mutter46/package.nix index 67079c173ab8..b594ee5c8cf2 100644 --- a/pkgs/by-name/mu/mutter46/package.nix +++ b/pkgs/by-name/mu/mutter46/package.nix @@ -34,6 +34,7 @@ libXau, libinput, libdrm, + libgbm, libei, libdisplay-info, gsettings-desktop-schemas, @@ -48,7 +49,7 @@ libwacom, libSM, xwayland, - mesa, + mesa-gl-headers, meson, gnome-settings-daemon, xorgserver, @@ -97,7 +98,7 @@ stdenv.mkDerivation (finalAttrs: { propagatedBuildInputs = [ # required for pkg-config to detect mutter-mtk graphene - mesa # actually uses eglmesaext + mesa-gl-headers ]; nativeBuildInputs = [ @@ -128,6 +129,7 @@ stdenv.mkDerivation (finalAttrs: { harfbuzz libcanberra libdrm + libgbm libei libdisplay-info libgudev From afe2ba39e434c7a0cabda09d893d1e489ac2d6a6 Mon Sep 17 00:00:00 2001 From: K900 Date: Wed, 5 Mar 2025 11:39:26 +0300 Subject: [PATCH 17/18] mesa: output cleanup, part 1 - add sanity check for mesa-gl-headers - drop osmesa, gallium-nine, xatracker from default build - move teflon to $drivers - rename $driversdev to $cross_tools to reflect its real use --- pkgs/development/libraries/mesa/default.nix | 50 ++++++++++++--------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index c1e950c2e516..3fe641b4476c 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -91,6 +91,7 @@ "intel-nullhw" ] , mesa +, mesa-gl-headers , makeSetupHook }: @@ -151,15 +152,28 @@ in stdenv.mkDerivation { substituteInPlace src/amd/vulkan/meson.build --replace \ "get_option('datadir')" "'${placeholder "out"}/share'" + for header in ${toString mesa-gl-headers.headers}; do + if ! diff -q $header ${mesa-gl-headers}/$header; then + echo "File $header does not match between mesa and mesa-gl-headers, please update mesa-gl-headers first!" + exit 42 + fi + done + ${copyRustDeps} ''; outputs = [ - "out" "dev" "drivers" "driversdev" "opencl" "teflon" "osmesa" + "out" "dev" + "drivers" + # OpenCL drivers pull in ~1G of extra LLVM stuff, so don't install them + # if the user didn't explicitly ask for it + "opencl" # the Dozen drivers depend on libspirv2dxil, but link it statically, and # libspirv2dxil itself is pretty chonky, so relocate it to its own output in # case anything wants to use it at some point "spirv2dxil" + # tools for the host platform to be used when cross-compiling + "cross_tools" ]; # Keep build-ids so drivers can use them for caching, etc. @@ -193,8 +207,10 @@ in stdenv.mkDerivation { # Enable glvnd for dynamic libGL dispatch (lib.mesonEnable "glvnd" true) - (lib.mesonBool "gallium-nine" true) # Direct3D in Wine - (lib.mesonBool "osmesa" true) # used by wine + (lib.mesonBool "gallium-nine" false) # Direct3D9 in Wine, largely supplanted by DXVK + (lib.mesonBool "osmesa" false) # deprecated upstream + (lib.mesonEnable "gallium-xa" false) # old and mostly dead + (lib.mesonBool "teflon" true) # TensorFlow frontend # Enable all freedreno kernel mode drivers. (For example, virtio can be @@ -297,11 +313,11 @@ in stdenv.mkDerivation { wayland-scanner ] ++ lib.optionals needNativeCLC [ # `or null` to not break eval with `attribute missing` on darwin to linux cross - (buildPackages.mesa.driversdev or null) + (buildPackages.mesa.cross_tools or null) ]; disallowedRequisites = lib.optionals needNativeCLC [ - (buildPackages.mesa.driversdev or null) + (buildPackages.mesa.cross_tools or null) ]; propagatedBuildInputs = [ libdrm ]; @@ -317,7 +333,7 @@ in stdenv.mkDerivation { moveToOutput "lib/libglapi*" $drivers moveToOutput "lib/libpowervr_rogue*" $drivers moveToOutput "lib/libvulkan_*" $drivers - moveToOutput "lib/libxatracker*" $drivers + moveToOutput "lib/libteflon.so" $drivers # Update search path used by glvnd (it's pointing to $out but drivers are in $drivers) for js in $drivers/share/glvnd/egl_vendor.d/*.json; do @@ -340,14 +356,14 @@ in stdenv.mkDerivation { echo $opencl/lib/libMesaOpenCL.so > $opencl/etc/OpenCL/vendors/mesa.icd echo $opencl/lib/libRusticlOpenCL.so > $opencl/etc/OpenCL/vendors/rusticl.icd - moveToOutput bin/intel_clc $driversdev - moveToOutput bin/mesa_clc $driversdev - moveToOutput bin/vtn_bindgen $driversdev + moveToOutput bin/intel_clc $cross_tools + moveToOutput bin/mesa_clc $cross_tools + moveToOutput bin/vtn_bindgen $cross_tools + moveToOutput "lib/lib*OpenCL*" $opencl - moveToOutput "lib/libOSMesa*" $osmesa + moveToOutput bin/spirv2dxil $spirv2dxil moveToOutput "lib/libspirv_to_dxil*" $spirv2dxil - moveToOutput lib/libteflon.so $teflon ''; postFixup = '' @@ -359,15 +375,9 @@ in stdenv.mkDerivation { # remove pkgconfig files for GL/EGL; they are provided by libGL. rm -f $dev/lib/pkgconfig/{gl,egl}.pc - # Move development files for libraries in $drivers to $driversdev - mkdir -p $driversdev/include - mv $dev/include/xa_* $dev/include/d3d* -t $driversdev/include || true - mkdir -p $driversdev/lib/pkgconfig - for pc in lib/pkgconfig/{xatracker,d3d}.pc; do - if [ -f "$dev/$pc" ]; then - substituteInPlace "$dev/$pc" --replace $out $drivers - mv $dev/$pc $driversdev/$pc - fi + # remove headers moved to mesa-gl-headers + for header in ${toString mesa-gl-headers.headers}; do + rm -f $dev/$header done # update symlinks pointing to libgallium in $out From ca3482476eca711ff25017174ef3da082d82d289 Mon Sep 17 00:00:00 2001 From: K900 Date: Wed, 5 Mar 2025 11:54:40 +0300 Subject: [PATCH 18/18] xf86-video-vmware: drop the now useless mesa dependency --- pkgs/servers/x11/xorg/overrides.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 2dc81662f425..754055f229ba 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -604,7 +604,6 @@ self: super: }); xf86videovmware = super.xf86videovmware.overrideAttrs (attrs: { - buildInputs = attrs.buildInputs ++ [ mesa mesa.driversdev llvm ]; # for libxatracker env.NIX_CFLAGS_COMPILE = toString [ "-Wno-error=address" ]; # gcc12 meta = attrs.meta // { platforms = ["i686-linux" "x86_64-linux"];