diff mbox series

[4/4] mesa: upgrade 25.2.5 -> 25.3.0

Message ID 20251202004951.2358784-4-dmitry.baryshkov@oss.qualcomm.com
State New
Headers show
Series [1/4] mesa: fix drivers sorting order | expand

Commit Message

Dmitry Baryshkov Dec. 2, 2025, 12:49 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

Quentin Schulz Dec. 2, 2025, 10:35 a.m. UTC | #1
Hi Dmitry,

On 12/2/25 1:49 AM, Dmitry Baryshkov via lists.openembedded.org wrote:
> Upgrade Mesa to the latest release. Drop VDPAU tracker (dropped
> upstream). Add support for ethosu and rocket Gallium drivers.
> 

Thanks for doing that!

https://docs.mesa3d.org/relnotes/25.3.0.html for the release notes and 
checksum.

I'm wondering if we shouldn't add the buildpath QA check to upstream 
mesa's CI so that we don't have to patch things up for every release?

[...]

> diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
> index 420ba2032b67..106767476ccc 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] = "bb6243e7a6f525febfa1e6ab50827ca4d4bfdad73812377b0ca9b6c50998b03e"
> -PV = "25.2.5"
> +SRC_URI[sha256sum] = "0fd54fea7dbbddb154df05ac752b18621f26d97e27863db3be951417c6abe8ae"
> +PV = "25.3.0"
>   

Can we first bump to 25.2.7?

We won't update mesa in whinlatter to 25.3.x I assume, so it'd be easier 
if we had a commit we could backport for whinlatter right now before the 
release (or right after for the first dot release).

>   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[rockchip] = ""

I'm not sure about the naming here. Rockchip also has Lima-supported, 
Panfrost-supported, Panthor-supporter, Panvk-supported GPU in various 
SoCs. I would expect that when selecting rockchip it would enable 
support for "everything" one can find on SoCs from this vendor, which 
isn't necessarily a good thing (c.f. amd and intel bringing in too many 
drivers you may not be interested in).

I guess I would just name it rocket?

>   PACKAGECONFIG[svga] = ""
>   PACKAGECONFIG[tegra] = ""
>   PACKAGECONFIG[v3d] = ""
> @@ -129,7 +133,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)}"
> @@ -171,6 +175,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', ',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)}"
> @@ -181,6 +186,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', 'rockchip', ',rocket', '', d)}"

Only useful if you enable teflon support as well, so we need teflon in 
the PACKAGECONFIG check alongside rockchip (or rocket or whatever is the 
chosen name for this PACKAGECONFIG option).

Haven't had the time yet to dig into the diff between 25.2.7 and 25.3.0 
release, so I don't know if we've missed on something.

Cheers,
Quentin
Dmitry Baryshkov Dec. 4, 2025, 12:57 p.m. UTC | #2
On 02/12/2025 12:35, Quentin Schulz wrote:
> Hi Dmitry,
> 
> On 12/2/25 1:49 AM, Dmitry Baryshkov via lists.openembedded.org wrote:
>> Upgrade Mesa to the latest release. Drop VDPAU tracker (dropped
>> upstream). Add support for ethosu and rocket Gallium drivers.
>>
> 
> Thanks for doing that!
> 
> https://docs.mesa3d.org/relnotes/25.3.0.html for the release notes and 
> checksum.
> 
> I'm wondering if we shouldn't add the buildpath QA check to upstream 
> mesa's CI so that we don't have to patch things up for every release?
> 
> [...]
> 
>> diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes- 
>> graphics/mesa/mesa.inc
>> index 420ba2032b67..106767476ccc 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] = 
>> "bb6243e7a6f525febfa1e6ab50827ca4d4bfdad73812377b0ca9b6c50998b03e"
>> -PV = "25.2.5"
>> +SRC_URI[sha256sum] = 
>> "0fd54fea7dbbddb154df05ac752b18621f26d97e27863db3be951417c6abe8ae"
>> +PV = "25.3.0"
> 
> Can we first bump to 25.2.7?
> 
> We won't update mesa in whinlatter to 25.3.x I assume, so it'd be easier 
> if we had a commit we could backport for whinlatter right now before the 
> release (or right after for the first dot release).
> 
>>   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[rockchip] = ""
> 
> I'm not sure about the naming here. Rockchip also has Lima-supported, 
> Panfrost-supported, Panthor-supporter, Panvk-supported GPU in various 
> SoCs. I would expect that when selecting rockchip it would enable 
> support for "everything" one can find on SoCs from this vendor, which 
> isn't necessarily a good thing (c.f. amd and intel bringing in too many 
> drivers you may not be interested in).

Yeah, I was trying to find a balance between having a per-driver 
PACKAGECONFIG entries (which would be a nightmare for GL vs VK drivers) 
and just declaring a "vendor", which enables all drivers, even if one 
doesn't need it.

For Intel / AMD / NVIDIA it historically went somewhat okay, having just 
a single vendor config entry.


For ARM-based systems... you know. We have 'lima' for the oldest 
generation (gallium only), 'panfrost', which also enables panvk, now we 
are getting 'ethosu'. I was tempted to merge all of them into a single 
'arm' entry.

> 
> I guess I would just name it rocket?

Why not. Ross, any opinion from your side?

> 
>>   PACKAGECONFIG[svga] = ""
>>   PACKAGECONFIG[tegra] = ""
>>   PACKAGECONFIG[v3d] = ""
>> @@ -129,7 +133,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)}"
>> @@ -171,6 +175,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', 

Note for myself: move this one line up.

>> ',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)}"
>> @@ -181,6 +186,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', 'rockchip', 
>> ',rocket', '', d)}"
> 
> Only useful if you enable teflon support as well, so we need teflon in 
> the PACKAGECONFIG check alongside rockchip (or rocket or whatever is the 
> chosen name for this PACKAGECONFIG option).

Nice idea. And for ethosu too.

> 
> Haven't had the time yet to dig into the diff between 25.2.7 and 25.3.0 
> release, so I don't know if we've missed on something.
> 
> Cheers,
> Quentin
Quentin Schulz Dec. 4, 2025, 1:39 p.m. UTC | #3
Hi Dmitry,

On 12/4/25 1:57 PM, Dmitry Baryshkov wrote:
> On 02/12/2025 12:35, Quentin Schulz wrote:
>> Hi Dmitry,
>>
>> On 12/2/25 1:49 AM, Dmitry Baryshkov via lists.openembedded.org wrote:
>>> Upgrade Mesa to the latest release. Drop VDPAU tracker (dropped
>>> upstream). Add support for ethosu and rocket Gallium drivers.
>>>
>>
>> Thanks for doing that!
>>
>> https://eur02.safelinks.protection.outlook.com/? 
>> url=https%3A%2F%2Fdocs.mesa3d.org%2Frelnotes%2F25.3.0.html&data=05%7C02%7Cquentin.schulz%40cherry.de%7Cef95f0cf2aab4bf8340e08de3334a83f%7C5e0e1b5221b54e7b83bb514ec460677e%7C0%7C0%7C639004498472249154%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=CZj4op1xrwDAMi1uspOBLiY61%2BrWXhNTEDVSmrWk2HI%3D&reserved=0 for the release notes and checksum.
>>
>> I'm wondering if we shouldn't add the buildpath QA check to upstream 
>> mesa's CI so that we don't have to patch things up for every release?
>>
>> [...]
>>
>>> diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes- 
>>> graphics/mesa/mesa.inc
>>> index 420ba2032b67..106767476ccc 100644
>>> --- a/meta/recipes-graphics/mesa/mesa.inc
>>> +++ b/meta/recipes-graphics/mesa/mesa.inc
>>> @@ -18,10 +18,12 @@ SRC_URI = "https:// 
>>> eur02.safelinks.protection.outlook.com/? 
>>> url=https%3A%2F%2Farchive.mesa3d.org%2Fmesa- 
>>> &data=05%7C02%7Cquentin.schulz%40cherry.de%7Cef95f0cf2aab4bf8340e08de3334a83f%7C5e0e1b5221b54e7b83bb514ec460677e%7C0%7C0%7C639004498472262840%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=UQEWyxA4x0kstzptuUFUZwbmd1c0ca76SxYl7IUjZN0%3D&reserved=0 ${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] = 
>>> "bb6243e7a6f525febfa1e6ab50827ca4d4bfdad73812377b0ca9b6c50998b03e"
>>> -PV = "25.2.5"
>>> +SRC_URI[sha256sum] = 
>>> "0fd54fea7dbbddb154df05ac752b18621f26d97e27863db3be951417c6abe8ae"
>>> +PV = "25.3.0"
>>
>> Can we first bump to 25.2.7?
>>
>> We won't update mesa in whinlatter to 25.3.x I assume, so it'd be 
>> easier if we had a commit we could backport for whinlatter right now 
>> before the release (or right after for the first dot release).
>>
>>>   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[rockchip] = ""
>>
>> I'm not sure about the naming here. Rockchip also has Lima-supported, 
>> Panfrost-supported, Panthor-supporter, Panvk-supported GPU in various 
>> SoCs. I would expect that when selecting rockchip it would enable 
>> support for "everything" one can find on SoCs from this vendor, which 
>> isn't necessarily a good thing (c.f. amd and intel bringing in too 
>> many drivers you may not be interested in).
> 
> Yeah, I was trying to find a balance between having a per-driver 
> PACKAGECONFIG entries (which would be a nightmare for GL vs VK drivers) 
> and just declaring a "vendor", which enables all drivers, even if one 
> doesn't need it.
> 

I don't like the PACKAGECONFIG choice mechanism for mesa we have today, 
it's both too complex and doesn't allow enough flexibility. I don't need 
to be building stuff I won't be using anyway. I see Yocto as a way to 
build my embedded system where I control almost all of it, not as a 
distro where you want everything you can imagine work. I would like to 
revamp the whole PACKAGECONFIG thing for the mesa recipe but I don't 
have anything in mind right now and I'll probably have shinier things to 
chase :/

I'm also unsure how much it is true it's specific to a given vendor. 
Rockchip has used/sold the same/similar IP for its ISP as used on some 
recent IMX SoCs, maybe they'll have the same idea for their NPU and then 
I'll have to select rockchip when I want to build Amlogic's NPU for example.

> For Intel / AMD / NVIDIA it historically went somewhat okay, having just 
> a single vendor config entry.
> 

Maybe because those systems are typically less constrained in terms of 
RAM (initramfs) or storage space? But we did have some people complain 
about it, c.f. 
https://lore.kernel.org/poky/2n8W.1754202497905279149.soMo@lists.yoctoproject.org/

> 
> For ARM-based systems... you know. We have 'lima' for the oldest 
> generation (gallium only), 'panfrost', which also enables panvk, now we 
> are getting 'ethosu'. I was tempted to merge all of them into a single 
> 'arm' entry.
> 

I would rather not. I for sure don't need Ethos NPU driver for my 
Rockchip-based devices :) (considering Rockchip "made" their "own" NPU 
IP, I assume they're going to keep it and not switch to Ethos for the 
next-gen SoC).

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..cc7262bc7e00
--- /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: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38528]
+---
+ 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..a76f967a0040
--- /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: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38528]
+---
+ 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 420ba2032b67..106767476ccc 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] = "bb6243e7a6f525febfa1e6ab50827ca4d4bfdad73812377b0ca9b6c50998b03e"
-PV = "25.2.5"
+SRC_URI[sha256sum] = "0fd54fea7dbbddb154df05ac752b18621f26d97e27863db3be951417c6abe8ae"
+PV = "25.3.0"
 
 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[rockchip] = ""
 PACKAGECONFIG[svga] = ""
 PACKAGECONFIG[tegra] = ""
 PACKAGECONFIG[v3d] = ""
@@ -129,7 +133,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)}"
@@ -171,6 +175,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', ',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)}"
@@ -181,6 +186,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', 'rockchip', ',rocket', '', d)}"
 GALLIUMDRIVERS .= "${GALLIUMDRIVERS_SOFTPIPE}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'svga gallium-llvm', ',svga', '', d)}"
 GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'tegra', ',tegra', '', d)}"
@@ -201,7 +207,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"