All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mesa: enable glvnd support
@ 2022-10-24  6:47 Vincent Davis Jr
  2022-10-24  6:51 ` Vincent Davis Jr
  2022-10-24  8:35 ` Alexander Kanavin
  0 siblings, 2 replies; 6+ messages in thread
From: Vincent Davis Jr @ 2022-10-24  6:47 UTC (permalink / raw)
  To: openembedded-core; +Cc: Vincent Davis Jr

Allows mesa to be built with glvnd support.
Thus, creates libEGL_mesa.so* and libGLX_mesa.so*
libraries meant to coexist with vendor neutral
dispatch libraries from libglvnd.

Signed-off-by: Vincent Davis Jr <vince@underview.tech>
---
 meta/conf/distro/include/default-providers.inc |  1 +
 meta/recipes-graphics/mesa/mesa.inc            | 17 ++++++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc
index 6defdca12d..3a4e989c1f 100644
--- a/meta/conf/distro/include/default-providers.inc
+++ b/meta/conf/distro/include/default-providers.inc
@@ -5,6 +5,7 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
 PREFERRED_PROVIDER_virtual/xserver-xf86 ?= "xserver-xorg"
 PREFERRED_PROVIDER_virtual/egl ?= "mesa"
 PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
+PREFERRED_PROVIDER_virtual/libglx ?= "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 8a74e0a80a..9e8f1591ab 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -29,6 +29,11 @@ UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
 #because we cannot rely on the fact that all apps will use pkgconfig,
 #make eglplatform.h independent of MESA_EGL_NO_X11_HEADER
 do_install:append() {
+    # sed can't find EGL/eglplatform.h as it doesn't get installed when glvnd enabled
+    if ${@bb.utils.contains('PACKAGECONFIG', 'openglx', 'true', 'false', d)}; then
+        return 0
+    fi
+
     if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
         sed -i -e 's/^#elif defined(__unix__) && defined(EGL_NO_X11)$/#elif defined(__unix__) \&\& defined(EGL_NO_X11) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
     fi
@@ -38,6 +43,7 @@ DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib
 EXTRANATIVEPATH += "chrpath-native"
 PROVIDES = " \
     ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'virtual/libglx', '', d)} \
     ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \
     ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \
     ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \
@@ -116,6 +122,7 @@ VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broa
 PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers"
 
 PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
+PACKAGECONFIG[openglx] = "-Dglvnd=true, -Dglvnd=false,libglvnd"
 
 # "gles" requires "opengl"
 PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled"
@@ -204,6 +211,7 @@ RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'lib
 PACKAGES =+ "libegl-mesa libegl-mesa-dev \
              libosmesa libosmesa-dev \
              libgl-mesa libgl-mesa-dev \
+             libglx-mesa libglx-mesa-dev \
              libglapi libglapi-dev \
              libgbm libgbm-dev \
              libgles1-mesa libgles1-mesa-dev \
@@ -222,7 +230,7 @@ do_install:append () {
     rm -f ${D}${libdir}/gallium-pipe/*.la
     rm -f ${D}${libdir}/gbm/*.la
 
-    # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used 
+    # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used
     chrpath --delete ${D}${libdir}/dri/*_dri.so || true
 
     # libwayland-egl has been moved to wayland 1.15+
@@ -240,6 +248,7 @@ python __anonymous() {
         suffix = "-native"
     for p in (("egl", "libegl", "libegl1"),
               ("opengl", "libgl", "libgl1"),
+              ("openglx", "libglx",),
               ("gles", "libgles1", "libglesv1-cm1"),
               ("gles", "libgles2", "libglesv2-2"),
               ("gles", "libgles3",),
@@ -298,20 +307,22 @@ PACKAGES_DYNAMIC:class-native = "^mesa-driver-.*-native"
 FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d"
 FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${datadir}/vulkan"
 FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
-FILES:libegl-mesa = "${libdir}/libEGL.so.*"
+FILES:libegl-mesa = "${libdir}/libEGL*.so.*"
 FILES:libgbm = "${libdir}/libgbm.so.*"
 FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
 FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
 FILES:libgl-mesa = "${libdir}/libGL.so.*"
+FILES:libglx-mesa = "${libdir}/libGLX*.so.* ${datadir}/glvnd"
 FILES:libopencl-mesa = "${libdir}/libMesaOpenCL.so.* ${libdir}/gallium-pipe/*.so ${sysconfdir}/OpenCL/vendors/mesa.icd"
 FILES:libglapi = "${libdir}/libglapi.so.*"
 FILES:libosmesa = "${libdir}/libOSMesa.so.*"
 FILES:libxatracker = "${libdir}/libxatracker.so.*"
 
 FILES:${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan ${libdir}/vdpau/*.so"
-FILES:libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
+FILES:libegl-mesa-dev = "${libdir}/libEGL*.so.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
 FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
 FILES:libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
+FILES:libglx-mesa-dev = "${libdir}/libGLX*.*"
 FILES:libglapi-dev = "${libdir}/libglapi.*"
 FILES:libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
 FILES:libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
-- 
2.34.1



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

* Re: [PATCH] mesa: enable glvnd support
  2022-10-24  6:47 [PATCH] mesa: enable glvnd support Vincent Davis Jr
@ 2022-10-24  6:51 ` Vincent Davis Jr
  2022-10-25 10:05   ` [OE-core] " Ross Burton
  2022-10-24  8:35 ` Alexander Kanavin
  1 sibling, 1 reply; 6+ messages in thread
From: Vincent Davis Jr @ 2022-10-24  6:51 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 110 bytes --]

One issue. Can't seem to get libGLX_mesa.so* included unless I add libglx to the RDEPENDS of another recipe.

[-- Attachment #2: Type: text/html, Size: 110 bytes --]

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

* Re: [OE-core] [PATCH] mesa: enable glvnd support
  2022-10-24  6:47 [PATCH] mesa: enable glvnd support Vincent Davis Jr
  2022-10-24  6:51 ` Vincent Davis Jr
@ 2022-10-24  8:35 ` Alexander Kanavin
  1 sibling, 0 replies; 6+ messages in thread
From: Alexander Kanavin @ 2022-10-24  8:35 UTC (permalink / raw)
  To: Vincent Davis Jr; +Cc: openembedded-core

On Mon, 24 Oct 2022 at 08:48, Vincent Davis Jr <vince@underview.tech> wrote:
> +    # sed can't find EGL/eglplatform.h as it doesn't get installed when glvnd enabled
> +    if ${@bb.utils.contains('PACKAGECONFIG', 'openglx', 'true', 'false', d)}; then
> +        return 0
> +    fi
> +
>      if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
>          sed -i -e 's/^#elif defined(__unix__) && defined(EGL_NO_X11)$/#elif defined(__unix__) \&\& defined(EGL_NO_X11) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
>      fi

This needs to be replaced with a direct check of EGL/eglplatform.h
existence in the existing if block.

> @@ -38,6 +43,7 @@ DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib
>  EXTRANATIVEPATH += "chrpath-native"
>  PROVIDES = " \
>      ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
> +    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'virtual/libglx', '', d)} \

Why DISTRO_FEATURES and not PACKAGECONFIG like others?

>      ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \
>      ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \
>      ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \
> @@ -116,6 +122,7 @@ VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broa
>  PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers"
>
>  PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
> +PACKAGECONFIG[openglx] = "-Dglvnd=true, -Dglvnd=false,libglvnd"

Packageconfig option should be named glvnd too.

Alex


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

* Re: [OE-core] [PATCH] mesa: enable glvnd support
  2022-10-24  6:51 ` Vincent Davis Jr
@ 2022-10-25 10:05   ` Ross Burton
  2022-10-25 17:22     ` Vincent Davis Jr
  0 siblings, 1 reply; 6+ messages in thread
From: Ross Burton @ 2022-10-25 10:05 UTC (permalink / raw)
  To: vince; +Cc: openembedded-core

On 24 Oct 2022, at 07:51, Vincent Davis Jr via lists.openembedded.org <vince=underview.tech@lists.openembedded.org> wrote:
> 
> One issue. Can't seem to get libGLX_mesa.so* included unless I add libglx to the RDEPENDS of another recipe. 

Included in an image?  That’s right: you split it into a separate library package, and if nothing depends on it then it won’t get included.

Ross

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

* Re: [PATCH] mesa: enable glvnd support
  2022-10-25 10:05   ` [OE-core] " Ross Burton
@ 2022-10-25 17:22     ` Vincent Davis Jr
  2022-10-25 17:41       ` [OE-core] " Alexander Kanavin
  0 siblings, 1 reply; 6+ messages in thread
From: Vincent Davis Jr @ 2022-10-25 17:22 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 376 bytes --]

Yeah, but I couldn't find where runtime depend for libegl is set and libEGL_mesa.* gets include in image as runtime dependency without me directly setting it. A bit of confusion there for me. Feel as if I shouldn't need to RDEPENDS:${PN} = "libglx" in recipe that requires it. Should just be included in image as libegl is. Is there a way to avoid RDEPENDS:${PN} = "libglx"?

[-- Attachment #2: Type: text/html, Size: 748 bytes --]

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

* Re: [OE-core] [PATCH] mesa: enable glvnd support
  2022-10-25 17:22     ` Vincent Davis Jr
@ 2022-10-25 17:41       ` Alexander Kanavin
  0 siblings, 0 replies; 6+ messages in thread
From: Alexander Kanavin @ 2022-10-25 17:41 UTC (permalink / raw)
  To: Vincent Davis Jr; +Cc: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 914 bytes --]

On Tue, 25 Oct 2022 at 19:22, Vincent Davis Jr <vince@underview.tech> wrote:

> Yeah, but I couldn't find where runtime depend for libegl is set and
> libEGL_mesa.* gets include in image as runtime dependency without me
> directly setting it. A bit of confusion there for me. Feel as if I
> shouldn't need to RDEPENDS:${PN} = "libglx" in recipe that requires it.
> Should just be included in image as libegl is. Is there a way to avoid
> RDEPENDS:${PN} = "libglx"?
>

It would not be necessary if something that dynamically links with these
libraries is included in the image. Then the package task for that
something will find out that these libraries are needed, will trace them to
the packages that contain them, and insert RDEPENDS for those packages
automatically.

If the libraries are open with dlopen( ) at runtime, then yocto's packaging
does not detect that, and you need to add a manual RDEPENDS.

Alex

[-- Attachment #2: Type: text/html, Size: 1371 bytes --]

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

end of thread, other threads:[~2022-10-25 17:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-24  6:47 [PATCH] mesa: enable glvnd support Vincent Davis Jr
2022-10-24  6:51 ` Vincent Davis Jr
2022-10-25 10:05   ` [OE-core] " Ross Burton
2022-10-25 17:22     ` Vincent Davis Jr
2022-10-25 17:41       ` [OE-core] " Alexander Kanavin
2022-10-24  8:35 ` Alexander Kanavin

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.