All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/qt6/qt6base: don't require gbm for eglfs
@ 2026-09-14  8:21 Fred Lefranc
  2026-09-14  8:21 ` [Buildroot] [PATCH 1/1] " Fred Lefranc
  0 siblings, 1 reply; 3+ messages in thread
From: Fred Lefranc @ 2026-09-14  8:21 UTC (permalink / raw)
  To: buildroot; +Cc: Fred Lefranc

From: Fred Lefranc <fred.lefranc+evs@gmail.com>

Hi all,

While trying to enable Qt 6 with the eglfs eglfs_viv backend on a
32-bit i.MX6 target (imx-gpu-viv, framebuffer output), I hit the
package dependency-chain consistency error, because qt6base pulls in
libgbm/libdrm unconditionally for eglfs even though the Vivante
framebuffer EGL integration needs neither.

The root cause is that qt6base treats GBM as a hard requirement for
*all* of eglfs, whereas GBM/KMS is only needed by the eglfs_kms
backend. This patch decouples the two: eglfs now only requires libegl,
and GBM/KMS support is enabled conditionally when a gbm provider is
available.

Tested:
 - i.MX6Q (Cortex-A9, glibc, EABIhf), imx-gpu-viv FB output: qt6base
   builds, libqeglfs-viv-integration.so is produced, and a Qt app runs
   with -platform eglfs / QT_QPA_EGLFS_INTEGRATION=eglfs_viv.

I wasn't sure whether maintainers prefer keeping a Config.in comment
to explain that eglfs without gbm only provides vendor/fb backends -
happy to add one. Feedback welcome.

Thanks,
Fred

Fred Lefranc (1):
  package/qt6/qt6base: don't require gbm for eglfs

 package/qt6/qt6base/Config.in  |  2 +-
 package/qt6/qt6base/qt6base.mk | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 1/1] package/qt6/qt6base: don't require gbm for eglfs
  2026-09-14  8:21 [Buildroot] [PATCH] package/qt6/qt6base: don't require gbm for eglfs Fred Lefranc
@ 2026-09-14  8:21 ` Fred Lefranc
  2026-09-28  8:42   ` Fred Lefranc
  0 siblings, 1 reply; 3+ messages in thread
From: Fred Lefranc @ 2026-09-14  8:21 UTC (permalink / raw)
  To: buildroot
  Cc: Fred Lefranc, Jesse Van Gavere, Roy Kollen Svendsen,
	Thomas Petazzoni

From: Fred Lefranc <fred.lefranc+evs@gmail.com>

BR2_PACKAGE_QT6BASE_EGLFS currently has a hard "depends on
BR2_PACKAGE_HAS_LIBGBM", and qt6base.mk unconditionally adds libgbm
and libdrm to QT6BASE_DEPENDENCIES whenever eglfs is enabled. This is
incorrect: GBM is only needed by the eglfs_kms backend. Other eglfs
device integrations, such as the Vivante framebuffer backend
(eglfs_viv) used on 32-bit i.MX6, provide EGL and OpenGL ES without
GBM or DRM.

As a result, eglfs cannot be enabled on i.MX6 (imx-gpu-viv only
provides libgbm on the aarch64/i.MX8 blobs), and forcing it through
triggers the dependency-chain consistency check:

  package 'qt6base' has added 'libgbm' to its _DEPENDENCIES variable
  without selecting it or depending on it from Config.in.

Make GBM optional for eglfs:

 - In Config.in, drop the hard dependency on BR2_PACKAGE_HAS_LIBGBM
   and keep only the libegl requirement, which every eglfs backend
   needs.

 - In qt6base.mk, only pass -DFEATURE_gbm=ON/-DFEATURE_kms=ON and add
   libgbm/libdrm to the dependencies when a gbm provider is actually
   present (BR2_PACKAGE_HAS_LIBGBM). Otherwise pass
   -DFEATURE_gbm=OFF/-DFEATURE_kms=OFF so that the eglfs_kms backend
   is simply not built, while eglfs_viv (and other vendor backends)
   still are.

This keeps eglfs_kms working unchanged on platforms that do provide
GBM (i.MX8, Raspberry Pi 4, ...) while allowing eglfs to be enabled on
GBM-less platforms such as i.MX6 with the Vivante framebuffer output.

Signed-off-by: Fred Lefranc <fred.lefranc+evs@gmail.com>
---
 package/qt6/qt6base/Config.in  |  2 +-
 package/qt6/qt6base/qt6base.mk | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/package/qt6/qt6base/Config.in b/package/qt6/qt6base/Config.in
index e6bb99de28..c33e078b15 100644
--- a/package/qt6/qt6base/Config.in
+++ b/package/qt6/qt6base/Config.in
@@ -74,7 +74,7 @@ comment "X.org XCB backend available if X.org is enabled"
 config BR2_PACKAGE_QT6BASE_EGLFS
 	bool "eglfs support"
 	depends on BR2_PACKAGE_HAS_LIBEGL
-	depends on BR2_PACKAGE_HAS_LIBGBM
+	depends on BR2_PACKAGE_HAS_LIBGBM || BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB
 	depends on BR2_PACKAGE_QT6_GL_SUPPORTS
 	select BR2_PACKAGE_QT6BASE_OPENGL
 
diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk
index 01661b7f01..5e6cf66f32 100644
--- a/package/qt6/qt6base/qt6base.mk
+++ b/package/qt6/qt6base/qt6base.mk
@@ -305,8 +305,16 @@ QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y)
-QT6BASE_CONF_OPTS += -DFEATURE_egl=ON -DFEATURE_eglfs=ON
-QT6BASE_DEPENDENCIES += libegl libgbm
+QT6BASE_CONF_OPTS   += -DINPUT_opengl=es2 -DFEATURE_egl=ON -DFEATURE_eglfs=ON
+QT6BASE_DEPENDENCIES += libegl
+
+# Only pull in GBM/KMS/DRM when a gbm provider actually exists (i.MX8, RPi, etc.)
+ifeq ($(BR2_PACKAGE_HAS_LIBGBM),y)
+QT6BASE_CONF_OPTS    += -DFEATURE_gbm=ON -DFEATURE_kms=ON
+QT6BASE_DEPENDENCIES += libgbm libdrm
+else
+QT6BASE_CONF_OPTS    += -DFEATURE_gbm=OFF -DFEATURE_kms=OFF
+endif
 else
 QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF
 endif
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 1/1] package/qt6/qt6base: don't require gbm for eglfs
  2026-09-14  8:21 ` [Buildroot] [PATCH 1/1] " Fred Lefranc
@ 2026-09-28  8:42   ` Fred Lefranc
  0 siblings, 0 replies; 3+ messages in thread
From: Fred Lefranc @ 2026-09-28  8:42 UTC (permalink / raw)
  To: buildroot
  Cc: Fred Lefranc, Jesse Van Gavere, Roy Kollen Svendsen,
	Thomas Petazzoni

Hello,

Do you want any update on that one?

Best regards,
Fred

On Mon, Sep 14, 2026 at 10:21 AM Fred Lefranc
<fred.lefranc.evs@gmail.com> wrote:
>
> From: Fred Lefranc <fred.lefranc+evs@gmail.com>
>
> BR2_PACKAGE_QT6BASE_EGLFS currently has a hard "depends on
> BR2_PACKAGE_HAS_LIBGBM", and qt6base.mk unconditionally adds libgbm
> and libdrm to QT6BASE_DEPENDENCIES whenever eglfs is enabled. This is
> incorrect: GBM is only needed by the eglfs_kms backend. Other eglfs
> device integrations, such as the Vivante framebuffer backend
> (eglfs_viv) used on 32-bit i.MX6, provide EGL and OpenGL ES without
> GBM or DRM.
>
> As a result, eglfs cannot be enabled on i.MX6 (imx-gpu-viv only
> provides libgbm on the aarch64/i.MX8 blobs), and forcing it through
> triggers the dependency-chain consistency check:
>
>   package 'qt6base' has added 'libgbm' to its _DEPENDENCIES variable
>   without selecting it or depending on it from Config.in.
>
> Make GBM optional for eglfs:
>
>  - In Config.in, drop the hard dependency on BR2_PACKAGE_HAS_LIBGBM
>    and keep only the libegl requirement, which every eglfs backend
>    needs.
>
>  - In qt6base.mk, only pass -DFEATURE_gbm=ON/-DFEATURE_kms=ON and add
>    libgbm/libdrm to the dependencies when a gbm provider is actually
>    present (BR2_PACKAGE_HAS_LIBGBM). Otherwise pass
>    -DFEATURE_gbm=OFF/-DFEATURE_kms=OFF so that the eglfs_kms backend
>    is simply not built, while eglfs_viv (and other vendor backends)
>    still are.
>
> This keeps eglfs_kms working unchanged on platforms that do provide
> GBM (i.MX8, Raspberry Pi 4, ...) while allowing eglfs to be enabled on
> GBM-less platforms such as i.MX6 with the Vivante framebuffer output.
>
> Signed-off-by: Fred Lefranc <fred.lefranc+evs@gmail.com>
> ---
>  package/qt6/qt6base/Config.in  |  2 +-
>  package/qt6/qt6base/qt6base.mk | 12 ++++++++++--
>  2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/package/qt6/qt6base/Config.in b/package/qt6/qt6base/Config.in
> index e6bb99de28..c33e078b15 100644
> --- a/package/qt6/qt6base/Config.in
> +++ b/package/qt6/qt6base/Config.in
> @@ -74,7 +74,7 @@ comment "X.org XCB backend available if X.org is enabled"
>  config BR2_PACKAGE_QT6BASE_EGLFS
>         bool "eglfs support"
>         depends on BR2_PACKAGE_HAS_LIBEGL
> -       depends on BR2_PACKAGE_HAS_LIBGBM
> +       depends on BR2_PACKAGE_HAS_LIBGBM || BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB
>         depends on BR2_PACKAGE_QT6_GL_SUPPORTS
>         select BR2_PACKAGE_QT6BASE_OPENGL
>
> diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk
> index 01661b7f01..5e6cf66f32 100644
> --- a/package/qt6/qt6base/qt6base.mk
> +++ b/package/qt6/qt6base/qt6base.mk
> @@ -305,8 +305,16 @@ QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF
>  endif
>
>  ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y)
> -QT6BASE_CONF_OPTS += -DFEATURE_egl=ON -DFEATURE_eglfs=ON
> -QT6BASE_DEPENDENCIES += libegl libgbm
> +QT6BASE_CONF_OPTS   += -DINPUT_opengl=es2 -DFEATURE_egl=ON -DFEATURE_eglfs=ON
> +QT6BASE_DEPENDENCIES += libegl
> +
> +# Only pull in GBM/KMS/DRM when a gbm provider actually exists (i.MX8, RPi, etc.)
> +ifeq ($(BR2_PACKAGE_HAS_LIBGBM),y)
> +QT6BASE_CONF_OPTS    += -DFEATURE_gbm=ON -DFEATURE_kms=ON
> +QT6BASE_DEPENDENCIES += libgbm libdrm
> +else
> +QT6BASE_CONF_OPTS    += -DFEATURE_gbm=OFF -DFEATURE_kms=OFF
> +endif
>  else
>  QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF
>  endif
> --
> 2.34.1
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2026-09-28  8:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-14  8:21 [Buildroot] [PATCH] package/qt6/qt6base: don't require gbm for eglfs Fred Lefranc
2026-09-14  8:21 ` [Buildroot] [PATCH 1/1] " Fred Lefranc
2026-09-28  8:42   ` Fred Lefranc

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.