All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/14] mesa: lighten up target's libclc dependencies and fix panfrost support
@ 2025-08-22 12:53 Quentin Schulz
  2025-08-22 12:53 ` [PATCH v6 01/14] mesa-gl: make mesa-gl really openGL-only Quentin Schulz
                   ` (15 more replies)
  0 siblings, 16 replies; 28+ messages in thread
From: Quentin Schulz @ 2025-08-22 12:53 UTC (permalink / raw)
  To: openembedded-core
  Cc: Dmitry Baryshkov, Markus Volk, Trevor Woerner, Ross Burton,
	Otavio Salvador, Quentin Schulz, Khem Raj

@Otavio, can I add the new mesa-tools-native recipe under your
maintainership in meta/conf/distro/include/maintainers.inc, it is after
all still mesa?

Panfrost support has been broken for a while already because it now
requires libclc which isn't enforced by default. This fixes this
oversight.

While re-adding support for panfrost, the build time for libclc were a
bit too much to my taste and I tried to figure out if we could lighten
up the dependencies for the target recipe and it seems to be the case.

libclc brings very expensive dependencies such as llvm and clang.
Building clang and llvm for each target architecture is very expensive,
but mesa allows to depend on prebuilt host binaries (mesa-clc and
precomp-compiler). Those are built by mesa as well, but can be compiled
in mesa-native instead of mesa, making the dependency expensive but only
once regardless of the number of target architectures to build for.
Ideally the mesa-clc and precomp-compiler would only be compiled in
mesa-native if target mesa requires libclc support, however this is not
possible as a target recipe cannot impact or depend on a native recipe's
configuration. We thus have two choices, always build libclc in
mesa-native with its heavy dependencies and impact every build or force
the user to modify the mesa-native recipe in a custom layer (as a native
recipe cannot use target's OVERRIDES). The latter is unacceptable so the
former seems to be the only option. Another big downside is that
mesa-native currently builds drivers (amd, nouveau, svga) which we may
have absolutely no interest in building, increasing the build time and
possibly dependencies list).

A third choice is to spin-off the native mesa recipe with libclc support
into a new recipe without drivers and only what's necessary to build
mesa-clc and precomp-compiler binaries.
This allows to keep a "clean" mesa-native recipe for whoever needs those
drivers built-in (e.g. for testing, for qemu-native, or whatever else)
and only bring the libclc dependency when required by the target recipe.

Because libclc is now only built for the host, opencl support now needs
to explicitly bring libclc and others to build as libclc won't bring it
in the build environment anymore.

Note that this was essentially only build tested (run tested on RK3588
with panfrost though).

Note that building gallium-llvm support on big.LITTLE architecture with
TOOLCHAIN = "gcc" (the default) currently doesn't work as llvm doesn't
support big.LITTLE architecture in -mcpu/-march which is passed to the
CFLAGS/CXXFLAGS/LDFLAGS via the TUNE_CCARGS. I haven't investigated
further than that but that prevents us from building opencl support for
Rockchip most popular and powerful SoCs right now. One option could be
to force this recipe to be built with clang toolchain only whenever
gallium-llvm is specified in PACKAGECONFIG (not tested). Though that may
be not straightforward seeing the comment in libclc recipe related to
forcing the toolchain to clang.
I'm also not sure mesa has a way to specify different args to LLVM-only
drivers but that could be another option.

Runtime tested on RK3588 and PX30 with kmscube.
Partially runtime tested on PX30 with opencl-cts (and rusticl; it fails
after some time but could be kernel related as it starts failing after
[  968.625506] panfrost ff400000.gpu: gpu sched timeout, js=1, config=0x7b00, status=0x8, head=0xa68d200, tail=0xa68d200, sched_job=0000000019e6f20d

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
Changes in v6:
- added patches to fix OpenCL, Panfrost and Asahi host paths poisoning,
- removed intel from mesa-tools-native's PACKAGECONFIG as no intel
  driver requires a precomp-compiler anymore,
- added patch for migrating to bb.utils.filter instead of
  bb.utils.contains as recommended by Khem,
- reworded PACKAGECONFIG moving patch's commit log to be hopefully
  clearer as to why mesa-gl.bb is left untouched,
- added patch to allow disabling xmlconfig support,
- fixed mesa-native + mesa-tools-native installing same files (driconf
  files) by disabling xmlconfig in mesa-tools-native,
- rebased on top of master,
- added patch to bump mesa recipes to 25.2.1,
- Link to v5: https://lore.kernel.org/r/20250819-mesa-libclc-panfrost-v5-0-b8b89e6af908@cherry.de

Changes in v5:
- removed RFC prefix as it's gone through multiple reviews already, I
  guess it should be fine by now,
- reworded patch 3 to hopefully make it clearer why mesa-gl doesn't get
  any of the changes mesa.bb gets,
- Link to v4: https://lore.kernel.org/r/20250801-mesa-libclc-panfrost-v4-0-101c6dcf564f@cherry.de

Changes in v4:
- revamped patch removing egl/gles from mesa-gl by making the native and
  nativesdk PACKAGECONFIG use = instead of ??= (see patch 1),
- added "No intended change in behavior" wherever it is expected,
- Link to v3: https://lore.kernel.org/r/20250729-mesa-libclc-panfrost-v3-0-42559ddc93ef@cherry.de

Changes in v3:
- added patch to move S into mesa.inc,
- added patch to remove egl/gles from mesa-gl,
- added patch to make mesa-gl a target-only recipe,
- updated comment for PACKAGECONFIG[opencl] dependency on other
  PACKAGECONFIG,
- added clarification in commit log of commit adding asahi to TOOLS,
- Link to v2: https://lore.kernel.org/r/20250721-mesa-libclc-panfrost-v2-0-f713d0858949@cherry.de

Changes in v2:
- spin-off mesa-clc/precomp-compiler host binary building into a
  mesa-tools-native recipe to lighten the dependency even more (no
  native mesa drivers to build),
- make libclc's target mesa depend on mesa-tools-native instead of
  mesa-native,
- Link to v1: https://lore.kernel.org/r/20250624-mesa-libclc-panfrost-v1-0-9ed8ca980e21@cherry.de

---
Quentin Schulz (13):
      mesa-gl: make mesa-gl really openGL-only
      mesa-gl: use bb.utils.filter to improve readability
      mesa: move PACKAGECONFIG defaults to recipes
      mesa: move PROVIDES out of include file
      mesa: move BBCLASSEXTEND out of the include file
      mesa-gl: make recipe target only
      mesa: add asahi to TOOLS when selected in PACKAGECONFIG
      mesa: allow to disable xmlconfig support
      mesa: avoid host paths poisoning
      mesa: avoid host path poisoning when enabling OpenCL
      mesa: use simpler mesa-tools-native recipe as dependency for libclc
      mesa: fix panfrost driver build
      mesa: upgrade 25.2.0 -> 25.2.1

Ross Burton (1):
      mesa: assign S in include file

 ...01-meson-fix-libcl-assert-reproducibility.patch | 43 ++++++++++++++++++
 meta/recipes-graphics/mesa/mesa-gl.bb              |  8 ++--
 meta/recipes-graphics/mesa/mesa-tools-native.bb    | 19 ++++++++
 meta/recipes-graphics/mesa/mesa.bb                 | 26 +++++++++++
 meta/recipes-graphics/mesa/mesa.inc                | 53 ++++++----------------
 5 files changed, 105 insertions(+), 44 deletions(-)
---
base-commit: e7423ae09e62a1f5f72391e61cad2381f917c113
change-id: 20250624-mesa-libclc-panfrost-108d62e1899b

Best regards,
-- 
Quentin Schulz <quentin.schulz@cherry.de>



^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2025-09-22 11:24 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-22 12:53 [PATCH v6 00/14] mesa: lighten up target's libclc dependencies and fix panfrost support Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 01/14] mesa-gl: make mesa-gl really openGL-only Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 02/14] mesa-gl: use bb.utils.filter to improve readability Quentin Schulz
2025-08-22 13:05   ` Patchtest results for " patchtest
2025-08-22 12:53 ` [PATCH v6 03/14] mesa: move PACKAGECONFIG defaults to recipes Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 04/14] mesa: move PROVIDES out of include file Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 05/14] mesa: move BBCLASSEXTEND out of the " Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 06/14] mesa: assign S in " Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 07/14] mesa-gl: make recipe target only Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 08/14] mesa: add asahi to TOOLS when selected in PACKAGECONFIG Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 09/14] mesa: allow to disable xmlconfig support Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 10/14] mesa: avoid host paths poisoning Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 11/14] mesa: avoid host path poisoning when enabling OpenCL Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 12/14] mesa: use simpler mesa-tools-native recipe as dependency for libclc Quentin Schulz
2025-08-22 16:36   ` Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 13/14] mesa: fix panfrost driver build Quentin Schulz
2025-08-22 12:53 ` [PATCH v6 14/14] mesa: upgrade 25.2.0 -> 25.2.1 Quentin Schulz
2025-08-22 18:43 ` [PATCH v6 00/14] mesa: lighten up target's libclc dependencies and fix panfrost support Dmitry Baryshkov
2025-08-23 18:01 ` [OE-core] " Mathieu Dubois-Briand
2025-08-24  6:30   ` Mathieu Dubois-Briand
2025-09-01 14:51   ` Quentin Schulz
2025-09-01 15:16     ` Quentin Schulz
2025-09-04  6:09       ` Mathieu Dubois-Briand
2025-09-04  8:33         ` Quentin Schulz
2025-09-21  1:49     ` Dmitry Baryshkov
2025-09-21 14:02       ` Peter Kjellerstedt
2025-09-22  9:37       ` Quentin Schulz
2025-09-22 11:24         ` Dmitry Baryshkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.