From 0c72baddf5e4bd6b7f3ba33025ae1f76881bdaf3 Mon Sep 17 00:00:00 2001 From: Carlos Rafael Giani Date: Thu, 14 Sep 2023 11:17:36 +0200 Subject: [PATCH] gstreamer1.0-plugins-base: Fix viv-fb usage and extract PACKAGECONFIG_GL Both the NXP fork of gstreamer1.0-plugins-base and upstream GStreamer need the same PACKAGECONFIG_GL adjustments, so extract those into a common .bbappend. Also, in GStreamer 1.22.5, viv-fb has been decoupled from the Vivante direct texture feature. It is no longer necessary to set viv-fb to be able to use direct textures. viv-fb now solely and only is about the windowing system (that is, using the Vivante specific framebuffer API to be able to render OpenGL ES directly to framebuffer). That windowing system is only available on vendor BSPs for i.MX6 SoCs, so limit viv-fb to mx6-nxp-bsp. The recipe for the NXP fork is at version 1.22.0, so the fixes for decoupling viv-fb from direct textures is not present there. For this reason, always enable viv-fb in that recipe. This also makes sure that that recipe essentially behaves the same, because the PACKAGECONFIG_GL adjustments end up being the same as before. Signed-off-by: Carlos Rafael Giani --- .../gstreamer1.0-plugins-base_1.22.%.bbappend | 16 ++++++++++++++++ .../gstreamer1.0-plugins-base_1.22.0.imx.bb | 11 +++++------ 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.%.bbappend diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.%.bbappend new file mode 100644 index 0000000000..761189af83 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.%.bbappend @@ -0,0 +1,16 @@ +PACKAGECONFIG_GL:imxgpu2d = \ + "${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl', '', d)}" +PACKAGECONFIG_GL:imxgpu3d = \ + "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}" +PACKAGECONFIG_GL:use-mainline-bsp = \ + "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl gbm', '', d)}" + +# The i.MX8 uses KMS instead of the Vivante specific framebuffer API. +# The i.MX7 does not have a GPU. +# This leaves the i.MX6 - with the vendor BSP - as the remaining use case for viv-fb. +# +# (Note that viv-fb is about the _windowing system_. Vivante direct texture support +# does not depend on the viv-fb feature. It used to, but that was actually a bug +# which was fixed in GStreamer 1.22.5. Since then, the direct texture support is +# detected by Meson by checking for direct texture symbols like "glTexDirectVIV".) +PACKAGECONFIG_GL:append:mx6-nxp-bsp = " viv-fb " diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.0.imx.bb b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.0.imx.bb index df0b9912ae..d8c652872f 100644 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.0.imx.bb +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.0.imx.bb @@ -123,12 +123,11 @@ S = "${WORKDIR}/git" inherit use-imx-headers -PACKAGECONFIG_GL:imxgpu2d = \ - "${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl viv-fb', '', d)}" -PACKAGECONFIG_GL:imxgpu3d = \ - "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl viv-fb', '', d)}" -PACKAGECONFIG_GL:use-mainline-bsp = \ - "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl gbm', '', d)}" +# Prior to version 1.22.5, viv-fb is coupled with the Vivante direct texture feature. +# For this reason, in these older versions, viv-fb must be enabled always, even when +# building for SoCs like the i.MX8 that do not support the viv-fb windowing system. +# TODO: Once this .imx recipe is upgraded to 1.22.5 or newer, drop this line. +PACKAGECONFIG_GL:append = " viv-fb " PACKAGECONFIG_REMOVE ?= "jpeg" PACKAGECONFIG:remove = "${PACKAGECONFIG_REMOVE}"