diff mbox series

[v4,4/4] mesa: upgrade 25.2.5 -> 25.3.1

Message ID 20251213031200.2619204-4-dmitry.baryshkov@oss.qualcomm.com
State Accepted, archived
Commit 88e26a937549b253ab2b312450f1220b9b6f7d3c
Headers show
Series [v4,1/4] mesa: fix drivers sorting order | expand

Commit Message

Dmitry Baryshkov Dec. 13, 2025, 3:11 a.m. UTC
Upgrade Mesa to the latest release. Drop VDPAU tracker (dropped
upstream). Add support for ethosu and rocket Gallium drivers.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
 ...p-file-names-from-the-generated-file.patch | 45 +++++++++++++++++++
 ...on-t-encode-build-path-into-binaries.patch | 21 ---------
 ...p-file-names-from-the-generated-file.patch | 45 +++++++++++++++++++
 meta/recipes-graphics/mesa/mesa.inc           | 13 ++++--
 4 files changed, 99 insertions(+), 25 deletions(-)
 create mode 100644 meta/recipes-graphics/mesa/files/0001-ethosu-drop-file-names-from-the-generated-file.patch
 create mode 100644 meta/recipes-graphics/mesa/files/0002-rocket-drop-file-names-from-the-generated-file.patch

Comments

Alexander Kanavin Dec. 15, 2025, 9:46 a.m. UTC | #1
On Sat, 13 Dec 2025 at 04:12, Dmitry Baryshkov via
lists.openembedded.org
<dmitry.baryshkov=oss.qualcomm.com@lists.openembedded.org> wrote:
> diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
> index 136ed8623bcb..6948abe43952 100644
> --- a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
> +++ b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
> @@ -84,27 +84,6 @@ index 98e49b8fcf0e..145e72597eb9 100644
>
>   dep_libarchive = dependency('libarchive', allow_fallback: true, required: false)
>   dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false)
> -diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py
> ---- a/src/freedreno/registers/gen_header.py
> -+++ b/src/freedreno/registers/gen_header.py
> -@@ -885,13 +885,14 @@ The rules-ng-ng source files this header
> - """)
> -       maxlen = 0
> -       for filepath in p.xml_files:
> --              maxlen = max(maxlen, len(filepath))
> -+              maxlen = max(maxlen, len(os.path.basename(filepath)))
> -       for filepath in p.xml_files:
> --              pad = " " * (maxlen - len(filepath))
> -+              filename = os.path.basename(filepath)
> -+              pad = " " * (maxlen - len(filename))
> -               filesize = str(os.path.getsize(filepath))
> -               filesize = " " * (7 - len(filesize)) + filesize
> -               filetime = time.ctime(os.path.getmtime(filepath))
> --              print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
> -+              print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")")
> -       if p.copyright_year:
> -               current_year = str(datetime.date.today().year)
> -               print()

This sort of tweak needs a mention in the commit message. Has the
patched file been removed? Has the issue been addressed? Why is only
one part of the patch removed?

Alex
Quentin Schulz Dec. 15, 2025, 10:11 a.m. UTC | #2
Hi Dmitry, Alex,

Still wrong commit title, please fix for v5. It's updating from 25.2.8 
to 25.3.1.

On 12/15/25 10:46 AM, Alexander Kanavin via lists.openembedded.org wrote:
> On Sat, 13 Dec 2025 at 04:12, Dmitry Baryshkov via
> lists.openembedded.org
> <dmitry.baryshkov=oss.qualcomm.com@lists.openembedded.org> wrote:
>> diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
>> index 136ed8623bcb..6948abe43952 100644
>> --- a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
>> +++ b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
>> @@ -84,27 +84,6 @@ index 98e49b8fcf0e..145e72597eb9 100644
>>
>>    dep_libarchive = dependency('libarchive', allow_fallback: true, required: false)
>>    dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false)
>> -diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py
>> ---- a/src/freedreno/registers/gen_header.py
>> -+++ b/src/freedreno/registers/gen_header.py
>> -@@ -885,13 +885,14 @@ The rules-ng-ng source files this header
>> - """)
>> -       maxlen = 0
>> -       for filepath in p.xml_files:
>> --              maxlen = max(maxlen, len(filepath))
>> -+              maxlen = max(maxlen, len(os.path.basename(filepath)))
>> -       for filepath in p.xml_files:
>> --              pad = " " * (maxlen - len(filepath))
>> -+              filename = os.path.basename(filepath)
>> -+              pad = " " * (maxlen - len(filename))
>> -               filesize = str(os.path.getsize(filepath))
>> -               filesize = " " * (7 - len(filesize)) + filesize
>> -               filetime = time.ctime(os.path.getmtime(filepath))
>> --              print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
>> -+              print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")")
>> -       if p.copyright_year:
>> -               current_year = str(datetime.date.today().year)
>> -               print()
> 
> This sort of tweak needs a mention in the commit message. Has the
> patched file been removed? Has the issue been addressed? Why is only
> one part of the patch removed?
> 

FYI, done as part of 91ff96b51327 ("freedreno/registers: Remove 
license/etc from generated headers") part of 25.3.0.

Looks good to me otherwise, have yet to test Rocket from a Yocto build.

Cheers,
Quentin
Quentin Schulz Dec. 15, 2025, 5:31 p.m. UTC | #3
Hi Dmitry,

Took the time to test the NPU part (rocket) on some RK3588 device. It 
seems to work fine following the example from 
https://docs.mesa3d.org/teflon.html#do-some-inference-with-mobilenetv1 
though... I didn't need libteflon package (which brings the libteflon.so 
library) to make all of this work if I omit '-e 
/usr/lib/libteflon.so'... Weird. I'll send a patch to meta-rockchip to 
handle all this once linux-yocto 6.18 has been merged to oe-core (Rocket 
driver is only available in 6.18+).

Tested-by: Quentin Schulz <quentin.schulz@cherry.de> # RK3588 GPU 
(kmscube) + NPU (mesa's classification.py)

However, something I missed in earlier review:

Shouldn't we remove everything vdpau?

mesa-vdpau-drivers package for example, as well as 
FILES:${PN}-vdpau-drivers and the path in FILES:${PN}-dev?

Cheers,
Quentin
diff mbox series

Patch

diff --git a/meta/recipes-graphics/mesa/files/0001-ethosu-drop-file-names-from-the-generated-file.patch b/meta/recipes-graphics/mesa/files/0001-ethosu-drop-file-names-from-the-generated-file.patch
new file mode 100644
index 000000000000..aab17384d2bc
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-ethosu-drop-file-names-from-the-generated-file.patch
@@ -0,0 +1,45 @@ 
+From 4c3fad710c5bc702e28ae2bcc3c73b0547c4954d Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Date: Wed, 19 Nov 2025 14:19:36 +0200
+Subject: [PATCH 1/2] ethosu: drop file names from the generated file
+
+Having file names and dates in the generated file affects
+reproducibility. Build systems (like OE) error out on the gen_header.py
+output, because it can contain full paths. Drop file list from the
+generated file.
+
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/commit/cdb6468c53ef486f237f3d3276013febbbabba14]
+---
+ src/gallium/drivers/ethosu/gen_header.py | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/src/gallium/drivers/ethosu/gen_header.py b/src/gallium/drivers/ethosu/gen_header.py
+index b54516a812c7..44471893594b 100644
+--- a/src/gallium/drivers/ethosu/gen_header.py
++++ b/src/gallium/drivers/ethosu/gen_header.py
+@@ -29,21 +29,9 @@ def dump_c(args, guard, func):
+ This file was generated by the rules-ng-ng gen_header.py tool in this git repository:
+ http://gitlab.freedesktop.org/mesa/mesa/
+ git clone https://gitlab.freedesktop.org/mesa/mesa.git
+-
+-The rules-ng-ng source files this header was generated from are:
+ """)
+-	maxlen = 0
+-	for filepath in p.xml_files:
+-		maxlen = max(maxlen, len(filepath))
+-	for filepath in p.xml_files:
+-		pad = " " * (maxlen - len(filepath))
+-		filesize = str(os.path.getsize(filepath))
+-		filesize = " " * (7 - len(filesize)) + filesize
+-		filetime = time.ctime(os.path.getmtime(filepath))
+-		print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
+ 	if p.copyright_year:
+ 		current_year = str(datetime.date.today().year)
+-		print()
+ 		print("Copyright (C) %s-%s by the following authors:" % (p.copyright_year, current_year))
+ 		for author in p.authors:
+ 			print("- " + author)
+-- 
+2.51.0
+
diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
index 136ed8623bcb..6948abe43952 100644
--- a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
+++ b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
@@ -84,27 +84,6 @@  index 98e49b8fcf0e..145e72597eb9 100644
  
  dep_libarchive = dependency('libarchive', allow_fallback: true, required: false)
  dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false)
-diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py
---- a/src/freedreno/registers/gen_header.py
-+++ b/src/freedreno/registers/gen_header.py
-@@ -885,13 +885,14 @@ The rules-ng-ng source files this header
- """)
- 	maxlen = 0
- 	for filepath in p.xml_files:
--		maxlen = max(maxlen, len(filepath))
-+		maxlen = max(maxlen, len(os.path.basename(filepath)))
- 	for filepath in p.xml_files:
--		pad = " " * (maxlen - len(filepath))
-+		filename = os.path.basename(filepath)
-+		pad = " " * (maxlen - len(filename))
- 		filesize = str(os.path.getsize(filepath))
- 		filesize = " " * (7 - len(filesize)) + filesize
- 		filetime = time.ctime(os.path.getmtime(filepath))
--		print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
-+		print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")")
- 	if p.copyright_year:
- 		current_year = str(datetime.date.today().year)
- 		print()
 ---
 2.39.2
 
diff --git a/meta/recipes-graphics/mesa/files/0002-rocket-drop-file-names-from-the-generated-file.patch b/meta/recipes-graphics/mesa/files/0002-rocket-drop-file-names-from-the-generated-file.patch
new file mode 100644
index 000000000000..3e9edc411f51
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0002-rocket-drop-file-names-from-the-generated-file.patch
@@ -0,0 +1,45 @@ 
+From d5462c852d30fc41a223730848550db4f9675517 Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Date: Wed, 19 Nov 2025 14:19:36 +0200
+Subject: [PATCH 2/2] rocket: drop file names from the generated file
+
+Having file names and dates in the generated file affects
+reproducibility. Build systems (like OE) error out on the gen_header.py
+output, because it can contain full paths. Drop file list from the
+generated file.
+
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/commit/7a3bfd1f7913819db315e6db8b42520a2d862690]
+---
+ src/gallium/drivers/rocket/gen_header.py | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/src/gallium/drivers/rocket/gen_header.py b/src/gallium/drivers/rocket/gen_header.py
+index f3c6615dcb42..5457ef71d595 100644
+--- a/src/gallium/drivers/rocket/gen_header.py
++++ b/src/gallium/drivers/rocket/gen_header.py
+@@ -29,21 +29,9 @@ def dump_c(args, guard, func):
+ This file was generated by the rules-ng-ng gen_header.py tool in this git repository:
+ http://gitlab.freedesktop.org/mesa/mesa/
+ git clone https://gitlab.freedesktop.org/mesa/mesa.git
+-
+-The rules-ng-ng source files this header was generated from are:
+ """)
+-	maxlen = 0
+-	for filepath in p.xml_files:
+-		maxlen = max(maxlen, len(filepath))
+-	for filepath in p.xml_files:
+-		pad = " " * (maxlen - len(filepath))
+-		filesize = str(os.path.getsize(filepath))
+-		filesize = " " * (7 - len(filesize)) + filesize
+-		filetime = time.ctime(os.path.getmtime(filepath))
+-		print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
+ 	if p.copyright_year:
+ 		current_year = str(datetime.date.today().year)
+-		print()
+ 		print("Copyright (C) %s-%s by the following authors:" % (p.copyright_year, current_year))
+ 		for author in p.authors:
+ 			print("- " + author)
+-- 
+2.51.0
+
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 6edbcb7da5ce..c222bb87647b 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -18,10 +18,12 @@  SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
            file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
            file://0001-freedreno-don-t-encode-build-path-into-binaries.patch \
            file://0001-gfxstream-don-t-dump-genvk.py-args-to-generated-file.patch \
+           file://0001-ethosu-drop-file-names-from-the-generated-file.patch \
+           file://0002-rocket-drop-file-names-from-the-generated-file.patch \
 "
 
-SRC_URI[sha256sum] = "097842f3e49d996868b38688db87b006f7d4541e93ce86d2f341d8b3e7be7c93"
-PV = "25.2.8"
+SRC_URI[sha256sum] = "059d0d985622f49588f01aa29152804f4da8ffe6add046e00a52923379c2d8da"
+PV = "25.3.1"
 
 UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
 
@@ -104,12 +106,14 @@  PACKAGECONFIG[amd] = ""
 PACKAGECONFIG[asahi] = ""
 PACKAGECONFIG[broadcom] = ""
 PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native"
+PACKAGECONFIG[ethosu] = ""
 PACKAGECONFIG[freedreno] = ""
 PACKAGECONFIG[imagination] = "-Dimagination-srv=true,-Dimagination-srv=false"
 PACKAGECONFIG[intel] = ""
 PACKAGECONFIG[lima] = ""
 PACKAGECONFIG[nouveau] = ""
 PACKAGECONFIG[panfrost] = ""
+PACKAGECONFIG[rocket] = ""
 PACKAGECONFIG[svga] = ""
 PACKAGECONFIG[tegra] = ""
 PACKAGECONFIG[v3d] = ""
@@ -134,7 +138,7 @@  VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc gallium-l
 VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}"
 VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
 VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'virtio', ',gfxstream', '', d)}"
-VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}"
+VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination', '', d)}"
 VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc gallium-llvm', ',intel', '', d)}"
 VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel', ',intel_hasvk', '', d)}"
 VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'panfrost libclc', ',panfrost', '', d)}"
@@ -172,6 +176,7 @@  GALLIUMDRIVERS = ""
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc gallium-llvm', ',asahi', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel', ',crocus', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
+GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'ethosu teflon', ',ethosu', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel', ',i915', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc gallium-llvm', ',iris', '', d)}"
@@ -182,6 +187,7 @@  GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'panfrost libclc', ',pa
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd gallium-llvm', ',r300', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',r600', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd gallium-llvm', ',radeonsi', '', d)}"
+GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'rocket teflon', ',rocket', '', d)}"
 GALLIUMDRIVERS .= "${GALLIUMDRIVERS_SOFTPIPE}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'svga gallium-llvm', ',svga', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'tegra', ',tegra', '', d)}"
@@ -202,7 +208,6 @@  MESA_NATIVE:class-native = ""
 
 PACKAGECONFIG[libclc] = "-Dmesa-clc=${MESA_CLC} -Dinstall-mesa-clc=${INSTALL_MESA_CLC} -Dmesa-clc-bundle-headers=enabled,,libclc spirv-tools spirv-llvm-translator ${MESA_NATIVE}"
 PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial"
-PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau"
 
 PACKAGECONFIG[perfetto] = "-Dperfetto=true,-Dperfetto=false,libperfetto"