* [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider
@ 2021-01-07 11:04 Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 2/4] package/freescale-imx/imx-gpu-viv: avoid removing openGL headers when mesa3d is also selected Romain Naour
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Romain Naour @ 2021-01-07 11:04 UTC (permalink / raw)
To: buildroot
libGL.so is installed when BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 or BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
is selected, so declare it as a libgl provider.
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Gary Bisson <gary.bisson@boundarydevices.com>
---
Not related to this patch but mesa3d-demo doesn't build with imx-gpu-viv
as GL provider. meta-freescale provide a patch that replace glWindowPos2iARB
calls with glWindowPos2i but it was rejected by upstream.
https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch
---
package/freescale-imx/imx-gpu-viv/Config.in | 6 ++++++
package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in
index cca2689905..4e53044d1d 100644
--- a/package/freescale-imx/imx-gpu-viv/Config.in
+++ b/package/freescale-imx/imx-gpu-viv/Config.in
@@ -44,6 +44,7 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11
select BR2_PACKAGE_XLIB_LIBXDAMAGE
select BR2_PACKAGE_XLIB_LIBXEXT
select BR2_PACKAGE_XLIB_LIBXFIXES
+ select BR2_PACKAGE_HAS_LIBGL # libGL-x11.so
comment "X11 backend needs Xorg package"
depends on !BR2_PACKAGE_XORG7
@@ -60,6 +61,7 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
select BR2_PACKAGE_LIBDRM
select BR2_PACKAGE_WAYLAND
select BR2_PACKAGE_HAS_LIBEGL_WAYLAND
+ select BR2_PACKAGE_HAS_LIBGL # libGL-wl.so
endchoice
@@ -72,6 +74,10 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT
config BR2_PACKAGE_PROVIDES_LIBEGL
default "imx-gpu-viv"
+config BR2_PACKAGE_PROVIDES_LIBGL
+ default "imx-gpu-viv" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 || \
+ BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
+
config BR2_PACKAGE_PROVIDES_LIBGLES
default "imx-gpu-viv"
diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
index 6ae9aa7acc..f03415b336 100644
--- a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
+++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
@@ -61,7 +61,7 @@ endif
ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)
define IMX_GPU_VIV_FIXUP_PKGCONFIG
- for lib in egl gbm glesv1_cm glesv2 vg; do \
+ for lib in egl gbm glesv1_cm glesv2 gl vg; do \
ln -sf $${lib}_x11.pc $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc || exit 1; \
done
endef
@@ -70,7 +70,7 @@ endif
define IMX_GPU_VIV_INSTALL_STAGING_CMDS
cp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr
$(IMX_GPU_VIV_FIXUP_PKGCONFIG)
- for lib in egl gbm glesv1_cm glesv2 vg; do \
+ for lib in egl gbm glesv1_cm glesv2 gl vg; do \
$(INSTALL) -m 0644 -D \
$(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc \
$(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \
--
2.25.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 2/4] package/freescale-imx/imx-gpu-viv: avoid removing openGL headers when mesa3d is also selected
2021-01-07 11:04 [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Romain Naour
@ 2021-01-07 11:04 ` Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0 Romain Naour
` (2 subsequent siblings)
3 siblings, 0 replies; 13+ messages in thread
From: Romain Naour @ 2021-01-07 11:04 UTC (permalink / raw)
To: buildroot
If selected, mesa3d package will remove openGL headers from staging
directory when GLX support (libGL provider) is not selected.
Add mesa3d in imx-gpu-viv dependencies to avoid removing openGL
headers provivded by this package.
xdriver_xf86-video-imx-viv package depends on imx-gpu-viv but
also select mesa3d package for DRI swrast driver.
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Gary Bisson <gary.bisson@boundarydevices.com>
---
package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
index f03415b336..96195f0723 100644
--- a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
+++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
@@ -33,6 +33,14 @@ ifeq ($(IMX_GPU_VIV_LIB_TARGET),wayland)
IMX_GPU_VIV_DEPENDENCIES += libdrm wayland
endif
+# If selected, mesa3d package will remove openGL headers from staging
+# directory when GLX support (libGL provider) is not selected.
+# Add mesa3d in imx-gpu-viv dependencies to avoid to remove openGL
+# headers provivded by this package.
+ifeq ($(BR2_PACKAGE_MESA3D):$(BR2_PACKAGE_MESA3D_OPENGL_GLX),y:)
+IMX_GPU_VIV_DEPENDENCIES += mesa3d
+endif
+
define IMX_GPU_VIV_EXTRACT_CMDS
$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_GPU_VIV_DL_DIR)/$(IMX_GPU_VIV_SOURCE))
endef
--
2.25.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
2021-01-07 11:04 [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 2/4] package/freescale-imx/imx-gpu-viv: avoid removing openGL headers when mesa3d is also selected Romain Naour
@ 2021-01-07 11:04 ` Romain Naour
2021-01-10 17:46 ` Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 4/4] package/x11r7/xdriver_xf86-video-imx-viv: select dri swrast driver Romain Naour
2021-01-07 17:04 ` [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Yann E. MORIN
3 siblings, 1 reply; 13+ messages in thread
From: Romain Naour @ 2021-01-07 11:04 UTC (permalink / raw)
To: buildroot
This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
Don't override CFLAGS on the command line otherwise we loose some include paths
(ex: -I./vivante_gal).
CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: J?r?me Pouiller <jezz@sysmic.org>
Cc: Gary Bisson <gary.bisson@boundarydevices.com>
---
Note: xdriinfo report a too old libGL library
# xdriinfo
libGL is too old.
---
.../xdriver_xf86-video-imx-viv.hash | 2 +-
.../xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash
index e5d46c86f3..7295061d36 100644
--- a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash
+++ b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash
@@ -1,3 +1,3 @@
# Locally calculated
-sha256 61b3a7a22f80d1cbc797c329615e1699f3906c9261de7eabcf0de2bf2399de55 xdriver_xf86-video-imx-viv-rel_imx_4.9.x_1.0.0_ga.tar.gz
+sha256 2f927114e8b888237f1a15830ff5dbde3990fc737227b7a2b94dc6fdbcd7fe19 xdriver_xf86-video-imx-viv-rel_imx_5.4.24_2.1.0.tar.gz
sha256 9d3e373f0440cc0c58853e963636a7c1ffda9308ec5f30ebe9adfb9c16a8a1e4 COPYING-MIT
diff --git a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
index 0913427542..9aa2b50cad 100644
--- a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
+++ b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = rel_imx_4.9.x_1.0.0_ga
+XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = rel_imx_5.4.24_2.1.0
XDRIVER_XF86_VIDEO_IMX_VIV_SITE = https://source.codeaurora.org/external/imx/xf86-video-imx-vivante
XDRIVER_XF86_VIDEO_IMX_VIV_SITE_METHOD = git
XDRIVER_XF86_VIDEO_IMX_VIV_DEPENDENCIES = imx-gpu-viv imx-gpu-g2d xserver_xorg-server \
@@ -17,7 +17,7 @@ XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD = $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)
define XDRIVER_XF86_VIDEO_IMX_VIV_BUILD_CMDS
$(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) sysroot=$(STAGING_DIR) \
BUSID_HAS_NUMBER=1 BUILD_IN_YOCTO=1 XSERVER_GREATER_THAN_13=1 \
- CFLAGS="$(TARGET_CFLAGS)"
+ SDKTARGETSYSROOT="$(STAGING_DIR)"
endef
define XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING_CMDS
--
2.25.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 4/4] package/x11r7/xdriver_xf86-video-imx-viv: select dri swrast driver
2021-01-07 11:04 [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 2/4] package/freescale-imx/imx-gpu-viv: avoid removing openGL headers when mesa3d is also selected Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0 Romain Naour
@ 2021-01-07 11:04 ` Romain Naour
2021-01-07 17:04 ` [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Yann E. MORIN
3 siblings, 0 replies; 13+ messages in thread
From: Romain Naour @ 2021-01-07 11:04 UTC (permalink / raw)
To: buildroot
Curently, this package fail to build because
BR2_PACKAGE_MESA3D_DRI_DRIVER can't be used directly.
since it doesn't select any DRI driver in mesa, this option must
only be used by BR2_PACKAGE_MESA3D_DRI_DRIVER_*.
When this package was added [1] the commit log said:
"Yocto use Mesa3D/swraster to provide Desktop OpenGL API[1]."
It seems swrast dri driver was expected, so
BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST should be selected.
About BR2_PACKAGE_MESA3D_OPENGL_GLX, this option should not
be selected when BR2_PACKAGE_IMX_GPU_VIV is set because
both are libGL provider. But xf86-video-imx-viv seems to
requires both... meta-freescale contain a hack to avoid
overriding the Vivante GPU libGL binary and headers [3].
[1] https://git.buildroot.net/buildroot/commit/?id=8fdf8ccd3bbb199f7ddda1d55996f8923dc19c61
[2] See recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.1.bb
[3] https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa_%25.bbappend#L37
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: J?r?me Pouiller <jezz@sysmic.org>
Cc: Gary Bisson <gary.bisson@boundarydevices.com>
---
package/x11r7/xdriver_xf86-video-imx-viv/Config.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/x11r7/xdriver_xf86-video-imx-viv/Config.in b/package/x11r7/xdriver_xf86-video-imx-viv/Config.in
index 13cee14deb..1dda5e39ea 100644
--- a/package/x11r7/xdriver_xf86-video-imx-viv/Config.in
+++ b/package/x11r7/xdriver_xf86-video-imx-viv/Config.in
@@ -4,7 +4,7 @@ config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV
depends on BR2_PACKAGE_IMX_GPU_G2D
depends on BR2_TOOLCHAIN_HAS_SYNC_1 # mesa3d
select BR2_PACKAGE_MESA3D # Needed in order to compile xorg with glx/dri
- select BR2_PACKAGE_MESA3D_DRI_DRIVER
+ select BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST
select BR2_PACKAGE_LIBDRM
select BR2_PACKAGE_XORGPROTO
help
--
2.25.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider
2021-01-07 11:04 [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Romain Naour
` (2 preceding siblings ...)
2021-01-07 11:04 ` [Buildroot] [RFC: 4/4] package/x11r7/xdriver_xf86-video-imx-viv: select dri swrast driver Romain Naour
@ 2021-01-07 17:04 ` Yann E. MORIN
2021-01-07 17:05 ` Yann E. MORIN
2021-01-07 20:19 ` Romain Naour
3 siblings, 2 replies; 13+ messages in thread
From: Yann E. MORIN @ 2021-01-07 17:04 UTC (permalink / raw)
To: buildroot
romain, All,
On 2021-01-07 12:04 +0100, Romain Naour spake thusly:
> libGL.so is installed when BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 or BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
> is selected, so declare it as a libgl provider.
I don;t think this is a good solution. At the very best it is a poor
workaround...
mesa3d will not install its headers if opengl is not enabled.
However, we always enable openGL:
https://git.buildroot.org/buildroot/tree/package/mesa3d/mesa3d.mk#n160
# Always enable OpenGL:
# - Building OpenGL ES without OpenGL is not supported, so alway keep opengl enabled.
The first part of thet comment was added back in 2014-04-2, with commit
384d601d4ea (package/mesa3d: always enable openGL, by your's truly), and
the second part was just an amendment to that, when we switched to using
meson as buildsystem, with commit f0483751dfa (package/mesa3d: switch
build system to meson).
So, the initial rationale for always enabling openGL is very old, and
mesa3d has changed quite a lot since then, so I'd like that we revisit
that assertion in the light of the new meson-based buildsystem.
And if imx-gpu-viv is enabled but mesa3d is not, then it would be
missing the GL headers. As such, it seems that mesa3d-headers should
then be used to provide those headers.
Unfortunately, we've made mesa3d-headers and mesa3d to conflict on
purpose.
But then does it make sense to have both imx-gpu-viv and mesa3d enabled
at the same time in the same configuration?
I.e. isn't the solution to that issue for imx-gpu-viv to select and
build-depend on mesa3d-headers when it needs the GL headers?
Regards,
Yann E. MORIN.
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Gary Bisson <gary.bisson@boundarydevices.com>
> ---
>
> Not related to this patch but mesa3d-demo doesn't build with imx-gpu-viv
> as GL provider. meta-freescale provide a patch that replace glWindowPos2iARB
> calls with glWindowPos2i but it was rejected by upstream.
>
> https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch
> ---
> package/freescale-imx/imx-gpu-viv/Config.in | 6 ++++++
> package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 4 ++--
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in
> index cca2689905..4e53044d1d 100644
> --- a/package/freescale-imx/imx-gpu-viv/Config.in
> +++ b/package/freescale-imx/imx-gpu-viv/Config.in
> @@ -44,6 +44,7 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11
> select BR2_PACKAGE_XLIB_LIBXDAMAGE
> select BR2_PACKAGE_XLIB_LIBXEXT
> select BR2_PACKAGE_XLIB_LIBXFIXES
> + select BR2_PACKAGE_HAS_LIBGL # libGL-x11.so
>
> comment "X11 backend needs Xorg package"
> depends on !BR2_PACKAGE_XORG7
> @@ -60,6 +61,7 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
> select BR2_PACKAGE_LIBDRM
> select BR2_PACKAGE_WAYLAND
> select BR2_PACKAGE_HAS_LIBEGL_WAYLAND
> + select BR2_PACKAGE_HAS_LIBGL # libGL-wl.so
>
> endchoice
>
> @@ -72,6 +74,10 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT
> config BR2_PACKAGE_PROVIDES_LIBEGL
> default "imx-gpu-viv"
>
> +config BR2_PACKAGE_PROVIDES_LIBGL
> + default "imx-gpu-viv" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 || \
> + BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
> +
> config BR2_PACKAGE_PROVIDES_LIBGLES
> default "imx-gpu-viv"
>
> diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
> index 6ae9aa7acc..f03415b336 100644
> --- a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
> +++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
> @@ -61,7 +61,7 @@ endif
>
> ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)
> define IMX_GPU_VIV_FIXUP_PKGCONFIG
> - for lib in egl gbm glesv1_cm glesv2 vg; do \
> + for lib in egl gbm glesv1_cm glesv2 gl vg; do \
> ln -sf $${lib}_x11.pc $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc || exit 1; \
> done
> endef
> @@ -70,7 +70,7 @@ endif
> define IMX_GPU_VIV_INSTALL_STAGING_CMDS
> cp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr
> $(IMX_GPU_VIV_FIXUP_PKGCONFIG)
> - for lib in egl gbm glesv1_cm glesv2 vg; do \
> + for lib in egl gbm glesv1_cm glesv2 gl vg; do \
> $(INSTALL) -m 0644 -D \
> $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc \
> $(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \
> --
> 2.25.4
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider
2021-01-07 17:04 ` [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Yann E. MORIN
@ 2021-01-07 17:05 ` Yann E. MORIN
2021-01-07 20:19 ` Romain Naour
1 sibling, 0 replies; 13+ messages in thread
From: Yann E. MORIN @ 2021-01-07 17:05 UTC (permalink / raw)
To: buildroot
Romain, All,
On 2021-01-07 18:04 +0100, Yann E. MORIN spake thusly:
> On 2021-01-07 12:04 +0100, Romain Naour spake thusly:
> > libGL.so is installed when BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 or BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
> > is selected, so declare it as a libgl provider.
[--SNIP--]
> I.e. isn't the solution to that issue for imx-gpu-viv to select and
> build-depend on mesa3d-headers when it needs the GL headers?
That was obviously a review for pttch 2 of the series, not patch 1.
Sorry for the confusion...
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider
2021-01-07 17:04 ` [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Yann E. MORIN
2021-01-07 17:05 ` Yann E. MORIN
@ 2021-01-07 20:19 ` Romain Naour
1 sibling, 0 replies; 13+ messages in thread
From: Romain Naour @ 2021-01-07 20:19 UTC (permalink / raw)
To: buildroot
Yann, All,
Le 07/01/2021 ? 18:04, Yann E. MORIN a ?crit?:
> romain, All,
>
> On 2021-01-07 12:04 +0100, Romain Naour spake thusly:
>> libGL.so is installed when BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 or BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
>> is selected, so declare it as a libgl provider.
>
We are speaking about patch 2/4:
http://lists.busybox.net/pipermail/buildroot/2021-January/300221.html
> I don;t think this is a good solution. At the very best it is a poor
> workaround...
Well, the real purpose of this patch is to explain the issue.
>
> mesa3d will not install its headers if opengl is not enabled.
>
> However, we always enable openGL:
>
> https://git.buildroot.org/buildroot/tree/package/mesa3d/mesa3d.mk#n160
>
> # Always enable OpenGL:
> # - Building OpenGL ES without OpenGL is not supported, so alway keep opengl enabled.
>
> The first part of thet comment was added back in 2014-04-2, with commit
> 384d601d4ea (package/mesa3d: always enable openGL, by your's truly), and
> the second part was just an amendment to that, when we switched to using
> meson as buildsystem, with commit f0483751dfa (package/mesa3d: switch
> build system to meson).
Indeed
>
> So, the initial rationale for always enabling openGL is very old, and
> mesa3d has changed quite a lot since then, so I'd like that we revisit
> that assertion in the light of the new meson-based buildsystem.
>
> And if imx-gpu-viv is enabled but mesa3d is not, then it would be
> missing the GL headers. As such, it seems that mesa3d-headers should
> then be used to provide those headers.
imx-gpu-viv provides GL headers but for some reason mesa3d is needed to build
xorg with glx/dri (see xdriver_xf86-video-imx-viv package).
>
> Unfortunately, we've made mesa3d-headers and mesa3d to conflict on
> purpose.
>
> But then does it make sense to have both imx-gpu-viv and mesa3d enabled
> at the same time in the same configuration?
Well, that what meta-freescale do in order to build X11 image w/ GLX.
The debian 10.2 image for nitrogen6x (sabrelite) contain both mesa and imx gpu
firmware (as far I can see):
https://boundarydevices.com/debian-buster-10-2-for-i-mx6-7-boards-december-2019-kernel-4-14-x/
>
> I.e. isn't the solution to that issue for imx-gpu-viv to select and
> build-depend on mesa3d-headers when it needs the GL headers?
I tried to remove mesa3d and use mesa3d-headers but it doesn't build.
Best regards,
Romain
>
> Regards,
> Yann E. MORIN.
>
>> Signed-off-by: Romain Naour <romain.naour@gmail.com>
>> Cc: Gary Bisson <gary.bisson@boundarydevices.com>
>> ---
>>
>> Not related to this patch but mesa3d-demo doesn't build with imx-gpu-viv
>> as GL provider. meta-freescale provide a patch that replace glWindowPos2iARB
>> calls with glWindowPos2i but it was rejected by upstream.
>>
>> https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch
>> ---
>> package/freescale-imx/imx-gpu-viv/Config.in | 6 ++++++
>> package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 4 ++--
>> 2 files changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in
>> index cca2689905..4e53044d1d 100644
>> --- a/package/freescale-imx/imx-gpu-viv/Config.in
>> +++ b/package/freescale-imx/imx-gpu-viv/Config.in
>> @@ -44,6 +44,7 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11
>> select BR2_PACKAGE_XLIB_LIBXDAMAGE
>> select BR2_PACKAGE_XLIB_LIBXEXT
>> select BR2_PACKAGE_XLIB_LIBXFIXES
>> + select BR2_PACKAGE_HAS_LIBGL # libGL-x11.so
>>
>> comment "X11 backend needs Xorg package"
>> depends on !BR2_PACKAGE_XORG7
>> @@ -60,6 +61,7 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
>> select BR2_PACKAGE_LIBDRM
>> select BR2_PACKAGE_WAYLAND
>> select BR2_PACKAGE_HAS_LIBEGL_WAYLAND
>> + select BR2_PACKAGE_HAS_LIBGL # libGL-wl.so
>>
>> endchoice
>>
>> @@ -72,6 +74,10 @@ config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT
>> config BR2_PACKAGE_PROVIDES_LIBEGL
>> default "imx-gpu-viv"
>>
>> +config BR2_PACKAGE_PROVIDES_LIBGL
>> + default "imx-gpu-viv" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 || \
>> + BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
>> +
>> config BR2_PACKAGE_PROVIDES_LIBGLES
>> default "imx-gpu-viv"
>>
>> diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
>> index 6ae9aa7acc..f03415b336 100644
>> --- a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
>> +++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
>> @@ -61,7 +61,7 @@ endif
>>
>> ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)
>> define IMX_GPU_VIV_FIXUP_PKGCONFIG
>> - for lib in egl gbm glesv1_cm glesv2 vg; do \
>> + for lib in egl gbm glesv1_cm glesv2 gl vg; do \
>> ln -sf $${lib}_x11.pc $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc || exit 1; \
>> done
>> endef
>> @@ -70,7 +70,7 @@ endif
>> define IMX_GPU_VIV_INSTALL_STAGING_CMDS
>> cp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr
>> $(IMX_GPU_VIV_FIXUP_PKGCONFIG)
>> - for lib in egl gbm glesv1_cm glesv2 vg; do \
>> + for lib in egl gbm glesv1_cm glesv2 gl vg; do \
>> $(INSTALL) -m 0644 -D \
>> $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc \
>> $(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \
>> --
>> 2.25.4
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
2021-01-07 11:04 ` [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0 Romain Naour
@ 2021-01-10 17:46 ` Romain Naour
2021-01-11 13:12 ` Gary Bisson
0 siblings, 1 reply; 13+ messages in thread
From: Romain Naour @ 2021-01-10 17:46 UTC (permalink / raw)
To: buildroot
Hello,
Le 07/01/2021 ? 12:04, Romain Naour a ?crit?:
> This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
>
> Don't override CFLAGS on the command line otherwise we loose some include paths
> (ex: -I./vivante_gal).
> CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
What's the status of vivante gpu support for X11 ? especially for kernel >= 5.4.
Because it's currently broken with several issues:
0) glxinfo fail to report OpenGL informations
# glxinfo -B -display :0
name of display: :0
Error: glXMakeCurrent failed
X Error of failed request: GLXBadContext
Major opcode of failed request: 148 (GLX)
Minor opcode of failed request: 4 (X_GLXDestroyContext)
Serial number of failed request: 20
Current serial number in output stream: 25
Perform final cleanup before process termination!
(I'm using a patch that replace glWindowPos2iARB calls with glWindowPos2i:
https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch)
1) vivante_fbdev is looking for a device with "platform:Vivante GCCore" using
drmOpen() [1]
strcpy(pDRIInfo->busIdString,"platform:Vivante GCCore");
fd = drmOpen(NULL,pDRIInfo->busIdString);
This string "platform:Vivante GCCore" is present in the linux-imx kernel up to
the version imx_4.19.35_1.1.0. The DRM_VIVANTE driver is missing in
imx_5.4.70_2.3.0.
2) I was able to workaround this issue by using "130000.gpu" instead of
"platform:Vivante GCCore" but the dri driver still fail to load.
drmOpenByBusid: Searching for BusID 130000.gpu
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 12, (OK)
drmOpenByBusid: drmOpenMinor returns 12
drmOpenByBusid: drmGetBusid reports 130000.gpu
(II) [drm] DRM interface version 1.4
(II) [drm] Could not create SAREA for DRM lock.
(EE) VIVANTE(0): [dri] DRIScreenInit failed. Disabling DRI
3) I tried to enable X11_DRI3 but xdriver_xf86-video-imx-viv doesn't even build
due to recent change [2] (removing pScrPriv variable before using it along with
other issues).
See patch [3] that try to fix the issue.
(Note, X11_DRI3 needs libdrm-vivante fork to build)
To compare with a working system, I'm using the Debian (xfce) image provided by
Boundarydevices [4] but the kernel is 4.14.98-28-boundary-17b (DRM_VIVANTE is
still present). I noticed that the SWRAST DRI driver is used along with the
vivante driver:
[ 21.503] (II) Initializing extension GLX
[ 21.504] (II) AIGLX: Screen 0 is not DRI2 capable
[ 22.142] (II) IGLX: Loaded and initialized swrast
[ 22.143] (II) GLX: Initialized DRISWRAST GL provider for screen 0
It means that we really need two LIBGL providers enabled at the same time in the
Buildroot configuration.
I have the feeling that I need to switch to Yocto to use meta-freescale and all
the imx hacks and imx forks (libdrm-imx) to get vivante GPU working with X11
(maybe).
Best regards,
Romain
[1]
https://source.codeaurora.org/external/imx/xf86-video-imx-vivante/tree/EXA/src/vivante_fbdev/vivante_dri.c?h=imx_exa_viv6_g2d#n127
[2]
https://source.codeaurora.org/external/imx/xf86-video-imx-vivante/commit/?h=imx_exa_viv6_g2d&id=8ea614949fdefd4ab655d3944fc32d62cb48c3be
[3]
https://github.com/mxOBS/deb-pkg_xserver-xorg-video-imx-viv/commit/3c5abf59abb8d7283cd8c951776ca059a5791272
[4]
https://boundarydevices.com/debian-buster-10-2-for-i-mx6-7-boards-december-2019-kernel-4-14-x/
>
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: J?r?me Pouiller <jezz@sysmic.org>
> Cc: Gary Bisson <gary.bisson@boundarydevices.com>
> ---
>
> Note: xdriinfo report a too old libGL library
> # xdriinfo
> libGL is too old.
> ---
> .../xdriver_xf86-video-imx-viv.hash | 2 +-
> .../xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash
> index e5d46c86f3..7295061d36 100644
> --- a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash
> +++ b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash
> @@ -1,3 +1,3 @@
> # Locally calculated
> -sha256 61b3a7a22f80d1cbc797c329615e1699f3906c9261de7eabcf0de2bf2399de55 xdriver_xf86-video-imx-viv-rel_imx_4.9.x_1.0.0_ga.tar.gz
> +sha256 2f927114e8b888237f1a15830ff5dbde3990fc737227b7a2b94dc6fdbcd7fe19 xdriver_xf86-video-imx-viv-rel_imx_5.4.24_2.1.0.tar.gz
> sha256 9d3e373f0440cc0c58853e963636a7c1ffda9308ec5f30ebe9adfb9c16a8a1e4 COPYING-MIT
> diff --git a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
> index 0913427542..9aa2b50cad 100644
> --- a/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
> +++ b/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
> @@ -4,7 +4,7 @@
> #
> ################################################################################
>
> -XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = rel_imx_4.9.x_1.0.0_ga
> +XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = rel_imx_5.4.24_2.1.0
> XDRIVER_XF86_VIDEO_IMX_VIV_SITE = https://source.codeaurora.org/external/imx/xf86-video-imx-vivante
> XDRIVER_XF86_VIDEO_IMX_VIV_SITE_METHOD = git
> XDRIVER_XF86_VIDEO_IMX_VIV_DEPENDENCIES = imx-gpu-viv imx-gpu-g2d xserver_xorg-server \
> @@ -17,7 +17,7 @@ XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD = $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)
> define XDRIVER_XF86_VIDEO_IMX_VIV_BUILD_CMDS
> $(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) sysroot=$(STAGING_DIR) \
> BUSID_HAS_NUMBER=1 BUILD_IN_YOCTO=1 XSERVER_GREATER_THAN_13=1 \
> - CFLAGS="$(TARGET_CFLAGS)"
> + SDKTARGETSYSROOT="$(STAGING_DIR)"
> endef
>
> define XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING_CMDS
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
2021-01-10 17:46 ` Romain Naour
@ 2021-01-11 13:12 ` Gary Bisson
2021-01-12 10:53 ` Romain Naour
[not found] ` <7856829.T7Z3S40VBb@pc-42>
0 siblings, 2 replies; 13+ messages in thread
From: Gary Bisson @ 2021-01-11 13:12 UTC (permalink / raw)
To: buildroot
Hi Romain,
On Sun, Jan 10, 2021 at 06:46:38PM +0100, Romain Naour wrote:
> Hello,
>
> Le 07/01/2021 ? 12:04, Romain Naour a ?crit?:
> > This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
> >
> > Don't override CFLAGS on the command line otherwise we loose some include paths
> > (ex: -I./vivante_gal).
> > CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
>
> What's the status of vivante gpu support for X11 ? especially for kernel >= 5.4.
Don't know. To be honest, i.MX6 will soon be a legacy product for NXP
releases so I strongly suggest moving to mainline + Etnaviv.
> Because it's currently broken with several issues:
>
> 0) glxinfo fail to report OpenGL informations
>
> # glxinfo -B -display :0
> name of display: :0
> Error: glXMakeCurrent failed
> X Error of failed request: GLXBadContext
> Major opcode of failed request: 148 (GLX)
> Minor opcode of failed request: 4 (X_GLXDestroyContext)
> Serial number of failed request: 20
> Current serial number in output stream: 25
> Perform final cleanup before process termination!
>
> (I'm using a patch that replace glWindowPos2iARB calls with glWindowPos2i:
> https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch)
Have you tried NXP pre-built image from latest release? Although it
seems they now use Wayland/XWayland. Yet it'd be surprising they'd
release a broken X11 package.
> 1) vivante_fbdev is looking for a device with "platform:Vivante GCCore" using
> drmOpen() [1]
>
> strcpy(pDRIInfo->busIdString,"platform:Vivante GCCore");
> fd = drmOpen(NULL,pDRIInfo->busIdString);
>
> This string "platform:Vivante GCCore" is present in the linux-imx kernel up to
> the version imx_4.19.35_1.1.0. The DRM_VIVANTE driver is missing in
> imx_5.4.70_2.3.0.
>
> 2) I was able to workaround this issue by using "130000.gpu" instead of
> "platform:Vivante GCCore" but the dri driver still fail to load.
>
> drmOpenByBusid: Searching for BusID 130000.gpu
> drmOpenDevice: node name is /dev/dri/card0
> drmOpenDevice: open result is 12, (OK)
> drmOpenByBusid: drmOpenMinor returns 12
> drmOpenByBusid: drmGetBusid reports 130000.gpu
> (II) [drm] DRM interface version 1.4
> (II) [drm] Could not create SAREA for DRM lock.
> (EE) VIVANTE(0): [dri] DRIScreenInit failed. Disabling DRI
>
> 3) I tried to enable X11_DRI3 but xdriver_xf86-video-imx-viv doesn't even build
> due to recent change [2] (removing pScrPriv variable before using it along with
> other issues).
> See patch [3] that try to fix the issue.
> (Note, X11_DRI3 needs libdrm-vivante fork to build)
>
>
> To compare with a working system, I'm using the Debian (xfce) image provided by
> Boundarydevices [4] but the kernel is 4.14.98-28-boundary-17b (DRM_VIVANTE is
> still present). I noticed that the SWRAST DRI driver is used along with the
> vivante driver:
>
> [ 21.503] (II) Initializing extension GLX
> [ 21.504] (II) AIGLX: Screen 0 is not DRI2 capable
> [ 22.142] (II) IGLX: Loaded and initialized swrast
> [ 22.143] (II) GLX: Initialized DRISWRAST GL provider for screen 0
FYI, we haven't updated to 5.4 for i.MX6 and don't plan to.
> It means that we really need two LIBGL providers enabled at the same time in the
> Buildroot configuration.
OpenGL is another issue though, you can get X11 working without it. But
yes the implementation on libGL from imx-gpu-viv is messy. Thomas did
implement it once but never submitted it as the change was pretty
intrusive & hacky.
> I have the feeling that I need to switch to Yocto to use meta-freescale and all
> the imx hacks and imx forks (libdrm-imx) to get vivante GPU working with X11
> (maybe).
Please let us know how that goes. Once again it feels like it would be
better to move to Etnaviv at this point.
Regards,
Gary
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
2021-01-11 13:12 ` Gary Bisson
@ 2021-01-12 10:53 ` Romain Naour
[not found] ` <7856829.T7Z3S40VBb@pc-42>
1 sibling, 0 replies; 13+ messages in thread
From: Romain Naour @ 2021-01-12 10:53 UTC (permalink / raw)
To: buildroot
Hello Gary,
Thanks for your feedback!
Le 11/01/2021 ? 14:12, Gary Bisson a ?crit?:
> Hi Romain,
>
> On Sun, Jan 10, 2021 at 06:46:38PM +0100, Romain Naour wrote:
>> Hello,
>>
>> Le 07/01/2021 ? 12:04, Romain Naour a ?crit?:
>>> This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
>>>
>>> Don't override CFLAGS on the command line otherwise we loose some include paths
>>> (ex: -I./vivante_gal).
>>> CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
>>
>> What's the status of vivante gpu support for X11 ? especially for kernel >= 5.4.
>
> Don't know. To be honest, i.MX6 will soon be a legacy product for NXP
> releases so I strongly suggest moving to mainline + Etnaviv.
ok, but I used the vivante driver since I started from the nitrogen6x_defconfig
for the sabrelite board that use the linux-imx6 from the Boundary BSP.
Also, I wanted to try the opencl support provided by imx-gpu-viv. I'm not sure
there is an opensource opencl provider for imx6 (mesa Clover only support r600
and RadeonSI).
I'll take a look at nitrogen6x_qt5_gst1_mainline_defconfig:
https://github.com/boundarydevices/buildroot-external-boundary/blob/master/configs/nitrogen6x_qt5_gst1_mainline_defconfig
>
>> Because it's currently broken with several issues:
>>
>> 0) glxinfo fail to report OpenGL informations
>>
>> # glxinfo -B -display :0
>> name of display: :0
>> Error: glXMakeCurrent failed
>> X Error of failed request: GLXBadContext
>> Major opcode of failed request: 148 (GLX)
>> Minor opcode of failed request: 4 (X_GLXDestroyContext)
>> Serial number of failed request: 20
>> Current serial number in output stream: 25
>> Perform final cleanup before process termination!
>>
>> (I'm using a patch that replace glWindowPos2iARB calls with glWindowPos2i:
>> https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch)
>
> Have you tried NXP pre-built image from latest release? Although it
> seems they now use Wayland/XWayland. Yet it'd be surprising they'd
> release a broken X11 package.
I haven't tested NXP pre-built image, I'll take a look.
Well, NXP pre-built image use a lot of imx fork. I can expect having some issues
by using official/upstream release when building the image with Buildroot:
https://www.nxp.com/docs/en/release-note/IMX_LINUX_RELEASE_NOTES.pdf
It's more difficult that I expected :)
>
>> 1) vivante_fbdev is looking for a device with "platform:Vivante GCCore" using
>> drmOpen() [1]
>>
>> strcpy(pDRIInfo->busIdString,"platform:Vivante GCCore");
>> fd = drmOpen(NULL,pDRIInfo->busIdString);
>>
>> This string "platform:Vivante GCCore" is present in the linux-imx kernel up to
>> the version imx_4.19.35_1.1.0. The DRM_VIVANTE driver is missing in
>> imx_5.4.70_2.3.0.
>>
>> 2) I was able to workaround this issue by using "130000.gpu" instead of
>> "platform:Vivante GCCore" but the dri driver still fail to load.
>>
>> drmOpenByBusid: Searching for BusID 130000.gpu
>> drmOpenDevice: node name is /dev/dri/card0
>> drmOpenDevice: open result is 12, (OK)
>> drmOpenByBusid: drmOpenMinor returns 12
>> drmOpenByBusid: drmGetBusid reports 130000.gpu
>> (II) [drm] DRM interface version 1.4
>> (II) [drm] Could not create SAREA for DRM lock.
>> (EE) VIVANTE(0): [dri] DRIScreenInit failed. Disabling DRI
>>
>> 3) I tried to enable X11_DRI3 but xdriver_xf86-video-imx-viv doesn't even build
>> due to recent change [2] (removing pScrPriv variable before using it along with
>> other issues).
>> See patch [3] that try to fix the issue.
>> (Note, X11_DRI3 needs libdrm-vivante fork to build)
>>
>>
>> To compare with a working system, I'm using the Debian (xfce) image provided by
>> Boundarydevices [4] but the kernel is 4.14.98-28-boundary-17b (DRM_VIVANTE is
>> still present). I noticed that the SWRAST DRI driver is used along with the
>> vivante driver:
>>
>> [ 21.503] (II) Initializing extension GLX
>> [ 21.504] (II) AIGLX: Screen 0 is not DRI2 capable
>> [ 22.142] (II) IGLX: Loaded and initialized swrast
>> [ 22.143] (II) GLX: Initialized DRISWRAST GL provider for screen 0
>
> FYI, we haven't updated to 5.4 for i.MX6 and don't plan to.
Ok. I think it would be good to add a comment in the help section of
xf86-video-imx-viv package to recommend using a kernel imx_4.19.35_1.1.0.
>
>> It means that we really need two LIBGL providers enabled at the same time in the
>> Buildroot configuration.
>
> OpenGL is another issue though, you can get X11 working without it. But
> yes the implementation on libGL from imx-gpu-viv is messy. Thomas did
> implement it once but never submitted it as the change was pretty
> intrusive & hacky.
I think I'll take into account the comment from J?r?me Pouiller and consider
that imx-gpu-viv is a EGL and GLES provider only.
>
>> I have the feeling that I need to switch to Yocto to use meta-freescale and all
>> the imx hacks and imx forks (libdrm-imx) to get vivante GPU working with X11
>> (maybe).
>
> Please let us know how that goes. Once again it feels like it would be
> better to move to Etnaviv at this point.
Well, I'm not sure to try the Yocto way for the moment.
I'll try using Etnaviv.
Best regards,
Romain
>
> Regards,
> Gary
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
[not found] ` <7856829.T7Z3S40VBb@pc-42>
@ 2021-01-12 11:05 ` Romain Naour
2021-01-12 19:32 ` Peter Seiderer
0 siblings, 1 reply; 13+ messages in thread
From: Romain Naour @ 2021-01-12 11:05 UTC (permalink / raw)
To: buildroot
Hi J?r?me,
Thanks for your feedback!
Le 11/01/2021 ? 15:02, J?r?me Pouiller a ?crit?:
> Hi Romain, Garry,
>
> On Monday 11 January 2021 14:12:08 CET Gary Bisson wrote:
>> On Sun, Jan 10, 2021 at 06:46:38PM +0100, Romain Naour wrote:
>>> Le 07/01/2021 ? 12:04, Romain Naour a ?crit :
>>>> This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
>>>>
>>>> Don't override CFLAGS on the command line otherwise we loose some include paths
>>>> (ex: -I./vivante_gal).
>>>> CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
>>>
>>> What's the status of vivante gpu support for X11 ? especially for kernel >= 5.4.
>>
>> Don't know. To be honest, i.MX6 will soon be a legacy product for NXP
>> releases so I strongly suggest moving to mainline + Etnaviv.
>
> Same here, I haven't worked on iMX6 for a while. The last teams I know who develop
> new iMX6 designs use Etnaviv..
I haven't worked a lot for customer on iMX6, but each time they used Yocto and
NXP BSP. Last time I tried to use Etnaviv with linux-imx, the kernel build was
broken.
>
>>> Because it's currently broken with several issues:
>>>
>>> 0) glxinfo fail to report OpenGL informations
>>>
>>> # glxinfo -B -display :0
>>> name of display: :0
>>> Error: glXMakeCurrent failed
>>> X Error of failed request: GLXBadContext
>>> Major opcode of failed request: 148 (GLX)
>>> Minor opcode of failed request: 4 (X_GLXDestroyContext)
>>> Serial number of failed request: 20
>>> Current serial number in output stream: 25
>>> Perform final cleanup before process termination!
>>>
>>> (I'm using a patch that replace glWindowPos2iARB calls with glWindowPos2i:
>>> https://github.com/Freescale/meta-freescale/blob/dunfell/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch)
>>
>> Have you tried NXP pre-built image from latest release? Although it
>> seems they now use Wayland/XWayland. Yet it'd be surprising they'd
>> release a broken X11 package.
>
> As far as remember, imx-gpu-viv has never provided a working GLX stack (it
> only provides EGL/GLes and X11 2D acceleration). Yocto automatically
> provided swrast to support GLX. For Buildroot,
>
> I remember I found confusing to install swrast automatically. I preferred
> the user manually selects swrast instead.
Yes, Buildroot doesn't support installing two virtual package provider in the
same config.
>
> [...]
>>> It means that we really need two LIBGL providers enabled at the same time in the
>>> Buildroot configuration.
>>
>> OpenGL is another issue though, you can get X11 working without it. But
>> yes the implementation on libGL from imx-gpu-viv is messy. Thomas did
>> implement it once but never submitted it as the change was pretty
>> intrusive & hacky.
>
> I think you can consider that imx-gpu-viv is a EGL and GLES provider, but
> it is not a GL provider.
I believe we have to remove LIBGL support from imx-gpu-viv entirely and avoid
installing it.
Best regards,
Romain
>
>
> --
> J?r?me Pouiller
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
2021-01-12 11:05 ` Romain Naour
@ 2021-01-12 19:32 ` Peter Seiderer
2021-01-12 21:52 ` Romain Naour
0 siblings, 1 reply; 13+ messages in thread
From: Peter Seiderer @ 2021-01-12 19:32 UTC (permalink / raw)
To: buildroot
Hello Romain,
On Tue, 12 Jan 2021 12:05:58 +0100, Romain Naour <romain.naour@gmail.com> wrote:
> Hi J?r?me,
>
> Thanks for your feedback!
>
> Le 11/01/2021 ? 15:02, J?r?me Pouiller a ?crit?:
> > Hi Romain, Garry,
> >
> > On Monday 11 January 2021 14:12:08 CET Gary Bisson wrote:
> >> On Sun, Jan 10, 2021 at 06:46:38PM +0100, Romain Naour wrote:
> >>> Le 07/01/2021 ? 12:04, Romain Naour a ?crit :
> >>>> This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
> >>>>
> >>>> Don't override CFLAGS on the command line otherwise we loose some include paths
> >>>> (ex: -I./vivante_gal).
> >>>> CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
> >>>
> >>> What's the status of vivante gpu support for X11 ? especially for kernel >= 5.4.
> >>
> >> Don't know. To be honest, i.MX6 will soon be a legacy product for NXP
> >> releases so I strongly suggest moving to mainline + Etnaviv.
> >
> > Same here, I haven't worked on iMX6 for a while. The last teams I know who develop
> > new iMX6 designs use Etnaviv..
>
> I haven't worked a lot for customer on iMX6, but each time they used Yocto and
> NXP BSP. Last time I tried to use Etnaviv with linux-imx, the kernel build was
> broken.
>
On a past project I worked on a iMX6 platform with etnaviv (using Qt eglfs and
qtquickcontrols for the GUI and GStreamer for video/audio recording/streaming)
using mainline linux kernel...., worked very well...
Regards,
Peter
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0
2021-01-12 19:32 ` Peter Seiderer
@ 2021-01-12 21:52 ` Romain Naour
0 siblings, 0 replies; 13+ messages in thread
From: Romain Naour @ 2021-01-12 21:52 UTC (permalink / raw)
To: buildroot
Hello Peter,
Le 12/01/2021 ? 20:32, Peter Seiderer a ?crit?:
> Hello Romain,
>
> On Tue, 12 Jan 2021 12:05:58 +0100, Romain Naour <romain.naour@gmail.com> wrote:
>
>> Hi J?r?me,
>>
>> Thanks for your feedback!
>>
>> Le 11/01/2021 ? 15:02, J?r?me Pouiller a ?crit?:
>>> Hi Romain, Garry,
>>>
>>> On Monday 11 January 2021 14:12:08 CET Gary Bisson wrote:
>>>> On Sun, Jan 10, 2021 at 06:46:38PM +0100, Romain Naour wrote:
>>>>> Le 07/01/2021 ? 12:04, Romain Naour a ?crit :
>>>>>> This package needs to be updated to build with the NXP imx_5.4.x_2.1.0 release.
>>>>>>
>>>>>> Don't override CFLAGS on the command line otherwise we loose some include paths
>>>>>> (ex: -I./vivante_gal).
>>>>>> CFLAGS is already provided by TARGET_CONFIGURE_OPTS in make environment.
>>>>>
>>>>> What's the status of vivante gpu support for X11 ? especially for kernel >= 5.4.
>>>>
>>>> Don't know. To be honest, i.MX6 will soon be a legacy product for NXP
>>>> releases so I strongly suggest moving to mainline + Etnaviv.
>>>
>>> Same here, I haven't worked on iMX6 for a while. The last teams I know who develop
>>> new iMX6 designs use Etnaviv..
>>
>> I haven't worked a lot for customer on iMX6, but each time they used Yocto and
>> NXP BSP. Last time I tried to use Etnaviv with linux-imx, the kernel build was
>> broken.
>>
>
> On a past project I worked on a iMX6 platform with etnaviv (using Qt eglfs and
> qtquickcontrols for the GUI and GStreamer for video/audio recording/streaming)
> using mainline linux kernel...., worked very well...
Yes, as soon as you use a mainline kernel with Etnaviv it should work as
expected. My point is when you use a linux-imx from NXP BSP (that was changed to
use vivante) and try to enable etnaviv. I had some build issues.
I just finished to configure the xserver to use etnaviv (mainline kernel and
mesa3d):
# glxinfo -B -display :0
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: etnaviv (0xffffffff)
Device: Vivante GC2000 rev 5108 (0xffffffff)
Version: 20.3.2
Accelerated: yes
Video memory: 0MB
Unified memory: yes
Preferred profile: compat (0x2)
Max core profile version: 0.0
Max compat profile version: 1.3
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 2.0
OpenGL vendor string: etnaviv
OpenGL renderer string: Vivante GC2000 rev 5108
OpenGL version string: 1.3 Mesa 20.3.2
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 20.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
I just had to backport one patch to xserver 1.20.10:
https://cgit.freedesktop.org/xorg/xserver/commit/?id=26004df63c25061586a967f3586795a75280acc2
Surprisingly etnaviv driver expose OpenGL 1.3 while the vivante driver expose
OpenGL 3.1:
(Debian buster image)
$ glxinfo -B
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
OpenGL vendor string: Vivante Corporation
OpenGL renderer string: Vivante GC2000
OpenGL version string: 3.1 V6.2.4.p4.190076
OpenGL shading language version string: 3.00
OpenGL context flags: (none)
Best regards,
Romain
>
> Regards,
> Peter
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-01-12 21:52 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-07 11:04 [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 2/4] package/freescale-imx/imx-gpu-viv: avoid removing openGL headers when mesa3d is also selected Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 3/4] package/x11r7/xdriver_xf86-video-imx-viv: bump to version rel_imx_5.4.24_2.1.0 Romain Naour
2021-01-10 17:46 ` Romain Naour
2021-01-11 13:12 ` Gary Bisson
2021-01-12 10:53 ` Romain Naour
[not found] ` <7856829.T7Z3S40VBb@pc-42>
2021-01-12 11:05 ` Romain Naour
2021-01-12 19:32 ` Peter Seiderer
2021-01-12 21:52 ` Romain Naour
2021-01-07 11:04 ` [Buildroot] [RFC: 4/4] package/x11r7/xdriver_xf86-video-imx-viv: select dri swrast driver Romain Naour
2021-01-07 17:04 ` [Buildroot] [RFC: 1/4] package/freescale-imx/imx-gpu-viv: BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_{X11, WL} are libgl provider Yann E. MORIN
2021-01-07 17:05 ` Yann E. MORIN
2021-01-07 20:19 ` Romain Naour
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox