Subject: Re: [PATCH mesa-updates 0/8] Various updates for mesa to 24.2.2

From: John Kehayias <[email-masked]>
Date: Mon, 09 Sep 2024 03:43:27 +0000

Just a note that on IRC it was pointed out that we lost the i915 driver in mesa. I adjusted the configure flags to restore some changes that were lost, simplifying the configure-flags a little. That patch is attached and is live on mesa-updates (along with some other changes, but not related directly to this series).

On Fri, Sep 06, 2024 at 03:00 PM, John Kehayias wrote:

> Hello Guix,
>
> This is a series of patches to update mesa to the latest, 24.2.2, some
> dependencies, and fix a vulkan issue <https://issues.guix.gnu.org/71109>.
> Along the way I updated llvm-for-mesa and mesa inputs, which unifies the
> changes made to build on aarch64-linux, for instance.  Hopefully this doesn't
> introduce regressions.  To that end, I've pushed this series now to the
> mesa-updates branch to see how building on Cuirass goes.  (A previous version
> was there already, but I have updated/rebased and now finally sending this.)
>
> Some notes:
>
> 1. The closure size of mesa has increased, something like from 374 MiB to 542
> MiB, mostly due to itself (not sure why) and then also from llvm.  This is
> from going from v15 to v18 and as you'll see in a patch I had to enable
> building all targets.  Possibly this can be alleviated by building a smaller
> clang for mesa?
>
> 2. Previous discussion was about getting NVK (which requires rust) built in
> the last mesa update.  I'm not sure the current status but will check with
> those that were working on it before <https://issues.guix.gnu.org/69637>.  I
> believe it is no longer experimental, so we should try to include it.
>
> Hopefully the patch changes and brief comments explain all, but please do
> provide any feedback, changes, fixes, etc.  The branch has just been rebased
> on master but we can rebase as needed or if there are some critical errors on
> these patches I missed.
>
> Thanks!
> John
>
> PS: I guess python-team will get this series as I added two comments (no code
> changes) to python packages now needed for mesa.  One already has a huge
> number of dependents anyway, but good to note I suppose.
>
> John Kehayias (6):
>   gnu: libdrm: Update to 2.4.123.
>   gnu: wayland-protocols: Update to 1.37.
>   gnu: Remove wayland-protocols-next.
>   gnu: llvm-for-mesa: Update to llvm-18.
>   gnu: llvm-for-mesa: Build all targets.
>   gnu: mesa: Update to 24.2.2.
>
> nathan (2):
>   gnu: vulkan-headers: Hard-code libvulkan.so file name.
>   gnu: volk: Hard-code path of vulkan-loader for dynamic loading
>
>  gnu/packages/freedesktop.scm | 17 ++-----------
>  gnu/packages/gl.scm          | 49 ++++++++++++++----------------------
>  gnu/packages/kde-plasma.scm  |  2 +-
>  gnu/packages/llvm.scm        | 29 ++++++++++-----------
>  gnu/packages/python-xyz.scm  |  2 ++
>  gnu/packages/vulkan.scm      | 41 ++++++++++++++++++++++++++----
>  gnu/packages/xdisorg.scm     |  4 +--
>  7 files changed, 75 insertions(+), 69 deletions(-)
>
>
> base-commit: d4fbd1ab341de85c1e5c77e0f7adc5aae056be15
From 6845eb88b801692f1889171487736fa6ea6264aa Mon Sep 17 00:00:00 2001
Message-ID: <6845e[email-masked]>
From: John Kehayias <[email-masked]>
Date: Sun, 8 Sep 2024 20:13:33 -0400
Subject: [PATCH 1/2] gnu: mesa: Update configure flags.

Previously, in 1ed0283fcc12b4b48f5b61be026a7b832d9781dc, mesa's configuration
options were altered to use "auto" as needed, while it looks like this was
inadvertently changed in 9b2a3e023f7090d19c98e7582220340df3962555.  This meant
i915 dropped from x86/x86_64.  This commit restores the "auto" behavior where
it matched our previous driver list (or restored missing drivers).  See mesa's
meson.build for all options.

* gnu/packages/gl.scm (mesa)[arguments]: For gallium-drivers, use
"softpipe,llvmpipe" instead of the deprecated "swrast" option.  Use "auto"
in gallium-drivers and vulkan-drivers where it provides the same driver
list (or restores ones dropped from x86/x86_64).  Comment on differences from
"auto" where we don't use it.

Change-Id: I920701f71d19578f4913fda7372273955f0a9847
---
 gnu/packages/gl.scm | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index ab18a3e5a7..c417f11571 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -360,16 +360,18 @@ (define-public mesa
       #~(list
          #$@(cond
              ((target-aarch64?)
+              ;; This includes more drivers than "auto": asahi, r300, r600
               '("-Dgallium-drivers=asahi,etnaviv,freedreno,kmsro,lima,\
-nouveau,panfrost,r300,r600,svga,swrast,tegra,v3d,vc4,virgl,zink"))
+nouveau,panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
              ((target-arm32?)
+              ;; This includes more drivers than "auto": r300, r600
               '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,\
-panfrost,r300,r600,svga,swrast,tegra,v3d,vc4,virgl,zink"))
+panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
              ((or (target-ppc64le?) (target-ppc32?) (target-riscv64?))
-              '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,svga,swrast,virgl,zink"))
+              ;; This include more drivers than "auto": svga
+              '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,svga,softpipe,llvmpipe,virgl,zink"))
              (else
-              '("-Dgallium-drivers=crocus,iris,nouveau,r300,r600,radeonsi,\
-svga,swrast,virgl,zink")))
+              '("-Dgallium-drivers=auto")))
          ;; Enable various optional features.  TODO: opencl requires libclc,
          ;; omx requires libomxil-bellagio
          "-Dplatforms=x11,wayland"
@@ -384,16 +386,15 @@ (define-public mesa
          "-Dgbm=enabled"
          "-Dshared-glapi=enabled"
 
-         ;; Explicitly enable Vulkan on some architectures.
          #$@(cond
              ((or (target-x86-32?) (target-x86-64?))
+              ;; This doesn't include nouveau (which is in "auto") as it needs
+              ;; rust.
+              ;; TODO: Enable nouveau/NVK.
               '("-Dvulkan-drivers=intel,intel_hasvk,amd,swrast"))
-             ((or (target-ppc64le?) (target-ppc32?))
-              '("-Dvulkan-drivers=amd,swrast"))
              ((target-aarch64?)
+              ;; This differs from "auto" which only includes swrast and intel
               '("-Dvulkan-drivers=freedreno,amd,broadcom,swrast"))
-             ((target-riscv64?)
-              '("-Dvulkan-drivers=amd,swrast"))
              (else
               '("-Dvulkan-drivers=auto")))

base-commit: d4fbd1ab341de85c1e5c77e0f7adc5aae056be15
prerequisite-patch-id: 85f8b14ffb3ff7b86cafbb92e4696be068f4e359
prerequisite-patch-id: 2590cf63b0ab9f283a69b32e365f2ea5dc2da535
prerequisite-patch-id: 2492ce516359cac8bfa032cc76b61a4c92fbeef2
prerequisite-patch-id: d8e75123e17a6f55ca7a7cd5dd837d25ec22c0fa
prerequisite-patch-id: 167752f067cd365b2bd36911cd9c084a5872a5ee
prerequisite-patch-id: 64f83d89967f82eb723f45a5ef60504337f967f1
prerequisite-patch-id: c26265bd60deed274db4274b2934c1ea89b6cc8f
prerequisite-patch-id: bc2a5912f9eba66f1a234fecdc1914a444be9041
-- 
2.45.2