From 9d3b4c9bc40392ba87f110ec5db0dedf381b8c4a Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Thu, 22 May 2025 20:13:32 +0300 Subject: [PATCH] mesa: sort out PROVIDES for the glvnd case If mesa is built with GLVND enabled, it doesn't provide GL / GL ES / EGL libraries directly. Instead it provides two ICD libraries: libEGL_mesa.0 and libGLX_mesa.so.0. Remove virtual provides from the glvnd case (dropping incorrect virtual/libglx provider while we are at it) and replace those with runtime providers (to be used by libglvnd in order to pull corresponding ICDs). Signed-off-by: Dmitry Baryshkov Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- meta/conf/distro/include/default-providers.inc | 3 ++- meta/recipes-graphics/mesa/mesa.inc | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc index ee91af87968..4f094163546 100644 --- a/meta/conf/distro/include/default-providers.inc +++ b/meta/conf/distro/include/default-providers.inc @@ -7,8 +7,9 @@ PREFERRED_PROVIDER_virtual/xserver-xf86 ?= "xserver-xorg" PREFERRED_PROVIDER_virtual/libsdl2 ?= "libsdl2" PREFERRED_PROVIDER_virtual/libsdl2-native ?= "libsdl2-native" PREFERRED_PROVIDER_virtual/egl ?= "mesa" +PREFERRED_PROVIDER_virtual/libegl-icd ?= "mesa" PREFERRED_PROVIDER_virtual/libgl ?= "mesa" -PREFERRED_PROVIDER_virtual/libglx ?= "mesa" +PREFERRED_PROVIDER_virtual/libglx-icd ?= "mesa" PREFERRED_PROVIDER_virtual/libgl-native ?= "mesa-native" PREFERRED_PROVIDER_virtual/nativesdk-libgl ?= "nativesdk-mesa" PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa" diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index 012104cef9d..f573a6244a5 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -37,11 +37,13 @@ do_install:append() { DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native" EXTRANATIVEPATH += "chrpath-native" -PROVIDES = " \ +GLPROVIDES = " \ ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', 'virtual/libglx', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \ +" +PROVIDES = " \ + ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', '', d.getVar('GLPROVIDES'), d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \ virtual/mesa \ " @@ -274,7 +276,11 @@ python __anonymous() { d.setVar("DEBIAN_NOAUTONAME:%slibopencl-mesa%s" % (mlprefix, suffix), "1") - if 'glvnd' not in pkgconfig: + if 'glvnd' in pkgconfig: + for p in ("libegl", "libglx"): + fullp = mlprefix + p + "-mesa" + suffix + d.appendVar("RPROVIDES:" + fullp, '%s-icd' % p) + else: for p in (("egl", "libegl", "libegl1"), ("opengl", "libgl", "libgl1"), ("gles", "libgles1", "libglesv1-cm1"), -- 2.47.3