> -----Original Message-----
> From: [email protected] <openembedded-
> [email protected]> On Behalf Of Alexander Kanavin via
> lists.openembedded.org
> Sent: Thursday, March 16, 2023 10:41
> To: [email protected]
> Cc: Kanavin, Alexander (EXT) (Linutronix GmbH) <[email protected]>
> Subject: [OE-core] [PATCH 3/6] mesa: enable a rich set of drivers for native
> builds
> 
> Without this, the only available driver would be swrast
> (without llvmpipe) which is far too slow to be practical,
> and so qemu wouldn't be able to perform accelerated graphics.
> 
> The one major dependency pulled in by this change is llvm-native
> which takes just under three minutes on my machine. If this is
> undesitable, opengl can be removed from DISTRO_FEATURES_NATIVE.

I was just hit by this commit when migrating our gui layers from kirkstone to 
scarthgap.
We include clang-native in our sdk and this creates conflict:
ERROR: product-image-sdk-1.0-r0 do_prepare_recipe_sysroot: The file 
/usr/bin/llvm-lto2 is installed by both llvm-native and clang-native, aborting

I had to create mesa_%.bbappend which replaces llvm with clang
PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, 
-Dllvm=disabled, clang clang-native elfutils"

But bbappends are bad idea for config changes and should be only used as last 
resort so I'd like to solve it via distro config.
Also update-alternatives doesn't work for native recipes I think.

Any idea how to solve this in a nice way?
One idea from me would be to create global LLVM_PROVIDER and 
LLVM_NATIVE_PROVIDER variables which could be automatically switched in 
meta-clang.
Wdyt?

> 
> Signed-off-by: Alexander Kanavin <[email protected]>
> ---
>  meta/recipes-graphics/mesa/mesa.inc | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-
> graphics/mesa/mesa.inc
> index 775aab9297..dd15046438 100644
> --- a/meta/recipes-graphics/mesa/mesa.inc
> +++ b/meta/recipes-graphics/mesa/mesa.inc
> @@ -89,6 +89,8 @@ PACKAGECONFIG = " \
>       ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial',
> 'video-codecs', '', d)} \
>  "
> 
> +PACKAGECONFIG:append:class-native = "gallium-llvm r600"
> +
>  # "gbm" requires "opengl"
>  PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled"
> 
> @@ -102,8 +104,10 @@ PACKAGECONFIG[dri3] = "-Ddri3=enabled, -
> Ddri3=disabled, xorgproto libxshmfence"
>  # Vulkan drivers need dri3 enabled
>  # amd could be enabled as well but requires gallium-llvm with llvm >= 3.9
>  VULKAN_DRIVERS = ""
> -VULKAN_DRIVERS:append:x86:class-target = ",intel"
> -VULKAN_DRIVERS:append:x86-64:class-target = ",intel"
> +VULKAN_DRIVERS:append:x86 = ",intel"
> +VULKAN_DRIVERS:append:x86-64 = ",intel"
> +# i686 is a 32 bit override for mesa-native
> +VULKAN_DRIVERS:append:i686 = ",intel"
>  VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG',
> 'freedreno', ',freedreno', '', d)}"
>  VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG',
> 'broadcom', ',broadcom', '', d)}"
>  PACKAGECONFIG[vulkan] = "-Dvulkan-
> drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-
> drivers='',glslang-native vulkan-loader vulkan-headers"
> @@ -149,8 +153,10 @@ PACKAGECONFIG[zink] = ""
>  GALLIUMDRIVERS = "swrast"
>  # gallium swrast was found to crash Xorg on startup in x32 qemu
>  GALLIUMDRIVERS:x86-x32 = ""
> -GALLIUMDRIVERS:append:x86:class-target = ",i915,iris,crocus"
> -GALLIUMDRIVERS:append:x86-64:class-target = ",i915,iris,crocus"
> +GALLIUMDRIVERS:append:x86 = ",i915,iris,crocus"
> +GALLIUMDRIVERS:append:x86-64 = ",i915,iris,crocus"
> +# i686 is a 32 bit override for mesa-native
> +GALLIUMDRIVERS:append:i686 = ",i915,iris,crocus"
> 
>  GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG',
> 'etnaviv', ',etnaviv', '', d)}"
>  GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG',
> 'freedreno', ',freedreno', '', d)}"
> @@ -162,8 +168,10 @@ GALLIUMDRIVERS:append
> ="${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '
>  # radeonsi requires LLVM
>  GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG',
> 'r600', ',radeonsi', '', d)}"
>  GALLIUMDRIVERS_LLVM = "r300,nouveau${GALLIUMDRIVERS_RADEONSI}"
> -GALLIUMDRIVERS_LLVM:append:x86:class-target = ",svga"
> -GALLIUMDRIVERS_LLVM:append:x86-64:class-target = ",svga"
> +GALLIUMDRIVERS_LLVM:append:x86 = ",svga"
> +GALLIUMDRIVERS_LLVM:append:x86-64 = ",svga"
> +# i686 is a 32 bit override for mesa-native
> +GALLIUMDRIVERS_LLVM:append:i686 = ",svga"
> 
>  PACKAGECONFIG[r600] = ""
>  PACKAGECONFIG[virgl] = ""
> --
> 2.30.2

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#202928): 
https://lists.openembedded.org/g/openembedded-core/message/202928
Mute This Topic: https://lists.openembedded.org/mt/97647020/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to