diff mbox series

[1/2] mesa: add PROVIDES for Vulkan and OpenCL ICDs

Message ID 20250912134427.1763047-1-dmitry.baryshkov@oss.qualcomm.com
State Accepted, archived
Commit 6f01f029ef6fed96e257d6a88de42edaa437de3e
Headers show
Series [1/2] mesa: add PROVIDES for Vulkan and OpenCL ICDs | expand

Commit Message

Dmitry Baryshkov Sept. 12, 2025, 1:44 p.m. UTC
In order to let BSPs easily select OpenCL and Vulkan Installable Client
Drivers, add two virtual package names: virtual-opencl-icd and
virtual-vulkan-icd.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
 meta/recipes-graphics/mesa/mesa.inc | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Mathieu Dubois-Briand Sept. 14, 2025, 9:40 a.m. UTC | #1
On Fri Sep 12, 2025 at 3:44 PM CEST, Dmitry Baryshkov via lists.openembedded.org wrote:
> In order to let BSPs easily select OpenCL and Vulkan Installable Client
> Drivers, add two virtual package names: virtual-opencl-icd and
> virtual-vulkan-icd.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---

Hi Dmitry,

Thanks for your patches.

It looks like it is introducing some build issue:

ERROR: core-image-sato-sdk-1.0-r0 do_rootfs: Unable to install packages. Command '/srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/recipe-sysroot-native/usr/bin/opkg --volatile-cache -f /srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/opkg.conf -t /srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/temp/ipktemp/ -o /srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/rootfs  --force-postinstall --prefer-arch-to-version   install kernel-devsrc opkg packagegroup-base-extended packagegroup-core-boot packagegroup-core-eclipse-debug packagegroup-core-sdk packagegroup-core-ssh-openssh packagegroup-core-standalone-sdk-target packagegroup-core-tools-debug packagegroup-core-tools-profile packagegroup-core-tools-testapps packagegroup-core-x11-base packagegroup-core-x11-sato psplash run-postinsts ssh-pregen-hostkeys' returned 1:
Solver encountered 1 problem(s):
Problem 1/1:
  - package packagegroup-core-tools-testapps-1.0-r0.qemuarm64 requires mesa-demos, but none of the providers can be installed
  - package mesa-demos-9.0.0-r0.cortexa57 requires libvulkan1 >= 1.4.321.0, but none of the providers can be installed
  - conflicting requests
  - nothing provides virtual-vulkan-icd needed by libvulkan1-1.4.321.0-r0.cortexa57

Solution 1:
  - do not ask to install a package providing packagegroup-core-tools-testapps

https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/2366
https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/2395

Can you have a look at this issue please?

Thanks,
Mathieu
Dmitry Baryshkov Sept. 15, 2025, 9:46 a.m. UTC | #2
On Sun, Sep 14, 2025 at 11:40:32AM +0200, Mathieu Dubois-Briand wrote:
> On Fri Sep 12, 2025 at 3:44 PM CEST, Dmitry Baryshkov via lists.openembedded.org wrote:
> > In order to let BSPs easily select OpenCL and Vulkan Installable Client
> > Drivers, add two virtual package names: virtual-opencl-icd and
> > virtual-vulkan-icd.
> >
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > ---
> 
> Hi Dmitry,
> 
> Thanks for your patches.
> 
> It looks like it is introducing some build issue:
> 
> ERROR: core-image-sato-sdk-1.0-r0 do_rootfs: Unable to install packages. Command '/srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/recipe-sysroot-native/usr/bin/opkg --volatile-cache -f /srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/opkg.conf -t /srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/temp/ipktemp/ -o /srv/pokybuild/yocto-worker/qemuarm64-alt/build/build/tmp/work/qemuarm64-poky-linux/core-image-sato-sdk/1.0/rootfs  --force-postinstall --prefer-arch-to-version   install kernel-devsrc opkg packagegroup-base-extended packagegroup-core-boot packagegroup-core-eclipse-debug packagegroup-core-sdk packagegroup-core-ssh-openssh packagegroup-core-standalone-sdk-target packagegroup-core-tools-debug packagegroup-core-tools-profile packagegroup-core-tools-testapps packagegroup-core-x11-base packagegroup-core-x11-sato psplash run-postinsts ssh-pregen-hostkeys' returned 1:
> Solver encountered 1 problem(s):
> Problem 1/1:
>   - package packagegroup-core-tools-testapps-1.0-r0.qemuarm64 requires mesa-demos, but none of the providers can be installed
>   - package mesa-demos-9.0.0-r0.cortexa57 requires libvulkan1 >= 1.4.321.0, but none of the providers can be installed
>   - conflicting requests
>   - nothing provides virtual-vulkan-icd needed by libvulkan1-1.4.321.0-r0.cortexa57
> 
> Solution 1:
>   - do not ask to install a package providing packagegroup-core-tools-testapps
> 
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/2366
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/2395
> 
> Can you have a look at this issue please?

I see. The config requires vulkan feature, but Mesa doesn't provide
vulkan drivers, so there is no mesa-vulkan-drivers package (and thus no
virtual-vulkan-icd provider).

I'll keep RRECOMMENDS, making sure that it's possible to build the
system wthout actual Vulkan drivers.
diff mbox series

Patch

diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 5dee19fae9ea..3f09cfd4df21 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -219,6 +219,10 @@  CFLAGS:append:armv6 = " -DMISSING_64BIT_ATOMICS"
 # Remove the mesa dependency on mesa-dev, as mesa is empty
 DEV_PKG_DEPENDENCY = ""
 
+# Provide virtual names to allow selecting preferred rproviders
+RPROVIDES:mesa-vulkan-drivers += "virtual-vulkan-icd"
+RPROVIDES:libopencl-mesa += "virtual-opencl-icd"
+
 # GLES2 and GLES3 implementations are packaged in a single library in libgles2-mesa.
 # Add a dependency so the GLES3 dev package is associated with its implementation.
 RPROVIDES:libgles2-mesa += "libgles3-mesa"