Add Xorg support for imx6
cover Add Xorg support for imx6
Hello,
Main purpose of this serie is to add support of Vivante GPU (found on imx6) to Xorg. This work is mainly adapted from Yocto.
J?r?me Pouiller (11):
mesa3d: Fix package requirements
freescale-imx: bump to version 3.10.17-1.0.1
gpu-viv-bin-mx6q: provide libopenvg
gpu-viv-bin-mx6q: fix compiling issues with EGL_API_FB
gpu-viv-bin-mx6q: fix GLESv2 support
gpu-viv-bin-mx6q: make fb/x11 choice explicit
gpu-viv-bin-mx6q: change output selection mecanism xdriver_xf86-video-imx-viv: new package
libdrm: fix support for xserver with Vivante drivers
qt5base: fix Vivante x11/EGL configuration
qmx6_defconfig: update
board/congatec/qmx6/6q_bootscript.txt | 2 - board/congatec/qmx6/post-build.sh | 7 --- configs/qmx6_defconfig | 49 +++++++++++++++-- package/freescale-imx/freescale-imx.mk | 2 +- package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 33 +++++++++++- package/freescale-imx/gpu-viv-bin-mx6q/egl.pc | 2 +- package/freescale-imx/gpu-viv-bin-mx6q/glesv2.pc | 2 +- .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 38 ++++++------- package/freescale-imx/gpu-viv-bin-mx6q/vg.pc | 2 +- package/libdrm/libdrm-0001-update-arm.patch | 37 +++++++++++++ package/mesa3d/Config.in | 3 ++ package/mesa3d/mesa3d.mk | 3 ++ .../qt5base-0001-Force_egl_visual_ID_33.patch | 23 ++++++++ .../qt5/qt5base/qt5base-0004-xcb-egl-fixes.patch | 63 ++++++++++++++++++++++ package/x11r7/Config.in | 1 + package/x11r7/xdriver_xf86-video-imx-viv/Config.in | 31 +++++++++++ ...xf86-video-imx-viv-0001-Fix-LoadExtenions.patch | 15 ++++++ .../xdriver_xf86-video-imx-viv.mk | 32 +++++++++++ 18 files changed, 306 insertions(+), 39 deletions(-) delete mode 100644 board/congatec/qmx6/6q_bootscript.txt delete mode 100755 board/congatec/qmx6/post-build.sh create mode 100644 package/libdrm/libdrm-0001-update-arm.patch create mode 100644 package/qt5/qt5base/qt5base-0001-Force_egl_visual_ID_33.patch create mode 100644 package/qt5/qt5base/qt5base-0004-xcb-egl-fixes.patch create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/Config.in create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv-0001-Fix-LoadExtenions.patch create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
Signature · 1 line
2.1.0
PATCH 1/11 mesa3d: Fix package requirements
mesa3d requirement (as specified by configure script) are:
x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8 xcb-dri3 xcb-present xcb-sync xshmfence >= 1.1
--- package/mesa3d/Config.in | 3 +++ package/mesa3d/mesa3d.mk | 3 +++ 2 files changed, 6 insertions(+)
package/mesa3d/Config.in +3 -0
@@ -2,12 +2,15 @@ menuconfig BR2_PACKAGE_MESA3D bool "mesa3d" select BR2_PACKAGE_LIBDRM select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_XPROTO_DRI3PROTO if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XPROTO_DRI2PROTO if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XPROTO_XF86DRIPROTO if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XPROTO_PRESENTPROTO if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7 select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7 depends on BR2_PACKAGE_HAS_UDEV depends on BR2_INSTALL_LIBSTDCPP
package/mesa3d/mesa3d.mk +3 -0
@@ -28,11 +28,14 @@ ifeq ($(BR2_PACKAGE_XORG7),y) MESA3D_DEPENDENCIES += \ xproto_xf86driproto \ xproto_dri2proto \ + xproto_dri3proto \ + xproto_presentproto \ xproto_glproto \ xlib_libX11 \ xlib_libXext \ xlib_libXdamage \ xlib_libXfixes \ + xlib_libxshmfence \ libxcb MESA3D_CONF_OPT += --enable-glx # quote from mesa3d configure "Building xa requires at least one non swrast gallium driver."
Signature · 1 line
2.1.0
Bernd Kuhls
NAKPATCH 1/11 mesa3d: Fix package requirements
=?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= <jezz- [email protected]> wrote in news:1412340212-3089-2-git- send-email-jezz at sysmic.org:
Quoted 1 line
+ select
BR2_PACKAGE_XPROTO_DRI3PROTOifBR2_PACKAGE_XORG7
Hi,
nack, dri3 is an optional dependency.
Also having dri3 support in mesa3d breaks xbmc on intel systems:
https://github.com/OpenELEC/OpenELEC.tv/commit/b574ad91fe9c7b9fcf627df0d5e3c77e262a1f85
Regards, Bernd
PATCH 1/11 mesa3d: Fix package requirements
Quoted 6 lines · On Friday 03 October 2014 14:52:12 Bernd Kuhls wrote:
=?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= <jezz- kPcTzGkeZgAdnm+yROfE0A at public.gmane.org> wrote in news:1412340212-3089-2-git-
send-email-jezz at sysmic.org:Quoted 1 line
+ select
BR2_PACKAGE_XPROTO_DRI3PROTOifBR2_PACKAGE_XORG7
Quoted 7 lines
Hi,
nack, dri3 is an optional dependency.
Also having dri3 support in mesa3d breaks xbmc on intel systems:
https://github.com/OpenELEC/OpenELEC.tv/commit/b574ad91fe9c7b9fcf627df0d5e3c
77e262a1f85
I encountered problems with dri3 dependencies during my tests. By checking code more closely, my problems happens only if no DRI was selected. I will fix that.
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
PATCH 1/11 mesa3d: Fix package requirements
J?r?me Pouiller <[email protected]> wrote in
news:3045501.26YYGqRTnd at sagittea:
Quoted 4 lines
I encountered problems with dri3 dependencies during my tests. By checking code more closely, my problems happens only if no DRI was selected. I will fix that.
Hi,
did you test with latest buildroot git master? It includes this patch which should fix the problem:
http://git.buildroot.net/buildroot/commit/package/mesa3d/mesa3d.mk?
id=d0edceb9d4e9ba6536af5b6687e8523f1c5ea5d1
If it does not fix the problem please post the error message.
Regards, Bernd
PATCH 1/11 mesa3d: Fix package requirements
In reply to Jérôme PouillerQuoted 12 lines · On Friday 03 October 2014 16:14:04 J?r?me Pouiller wrote:
Quoted 11 lines · On Friday 03 October 2014 14:52:12 Bernd Kuhls wrote:
=?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= <jezz- kPcTzGkeZgAdnm+yROfE0A at public.gmane.org> wrote in news:1412340212-3089-2-git-
send-email-jezz at sysmic.org:
Quoted 1 line
+ select
BR2_PACKAGE_XPROTO_DRI3PROTOifBR2_PACKAGE_XORG7Hi,
nack, dri3 is an optional dependency.
Quoted 7 lines
Quoted 3 lines
Also having dri3 support in mesa3d breaks xbmc on intel systems:
https://github.com/OpenELEC/OpenELEC.tv/commit/b574ad91fe9c7b9fcf627df0d5e
3c 77e262a1f85I encountered problems with dri3 dependencies during my tests. By checking code more closely, my problems happens only if no DRI was selected. I will fix that.
Arf, this was fixed by d0edceb ("mesa3d: fix build without dri drivers"), but this breaks xdriver_xf86-video-imx DRI support.
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
PATCH 1/11 mesa3d: Fix package requirements
J?r?me Pouiller <[email protected]> wrote in
news:1923213.bFy6dBPsRI at sagittea:
Quoted 2 lines
Arf, this was fixed by d0edceb ("mesa3d: fix build without dri drivers"), but this breaks xdriver_xf86-video-imx DRI support.
Hi,
what about adding
depends on BR2_PACKAGE_XPROTO_DRI3PROTO
to package/x11r7/xdriver_xf86-video-imx-viv/Config.in?
Regards, Bernd
PATCH 1/11 mesa3d: Fix package requirements
Quoted 6 lines · On Friday 03 October 2014 16:45:12 Bernd Kuhls wrote:
J?r?me Pouiller <[email protected]> wrote in
news:1923213.bFy6dBPsRI at sagittea:
Quoted 2 lines
Arf, this was fixed by d0edceb ("mesa3d: fix build without dri drivers"), but this breaks xdriver_xf86-video-imx DRI support.
Quoted 7 lines
Hi,
what about adding
depends on
BR2_PACKAGE_XPROTO_DRI3PROTOto package/x11r7/xdriver_xf86-video-imx-viv/Config.in?
I need mesa3d with --enable-dri, even if no DRI drivers are selected. I am going to enable DRI if BR2_PACKAGE_MESA3D_DRI_DRIVER is set (currently, it ensable if MESA3D_DRI_DRIVERS-y is set). Therefore, I could enable BR2_PACKAGE_MESA3D_DRI_DRIVER in xdriver_xf86-video-imx package.
I will resens my serie soon.
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
PATCH 2/11 freescale-imx: bump to version 3.10.17-1.0.1
In reply to Jérôme Pouiller--- package/freescale-imx/freescale-imx.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/freescale-imx/freescale-imx.mk +1 -1
@@ -4,7 +4,7 @@ # ################################################################################ -FREESCALE_IMX_VERSION = 3.10.17-1.0.0 +FREESCALE_IMX_VERSION = 3.10.17-1.0.1 FREESCALE_IMX_SITE = http://www.freescale.com/lgfiles/NMG/MAD/YOCTO include $(sort $(wildcard package/freescale-imx/*/*.mk))
Signature · 1 line
2.1.0
PATCH 2/11 freescale-imx: bump to version 3.10.17-1.0.1
Hi Jerome,
Quoted 10 lines · J?r?me Pouiller
Signed-off-by J?r?me Pouiller <[email protected]>--- package/freescale-imx/freescale-imx.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)package/freescale-imx/freescale-imx.mk +0
-0
package/freescale-imx/freescale-imx.mk line 7
Quoted 5 lines
package/freescale-imx/freescale-imx.mk +1
-1@@ -4,7 +4,7 @@ # ################################################################################ -FREESCALE_IMX_VERSION = 3.10.17-1.0.0 +FREESCALE_IMX_VERSION = 3.10.17-1.0.1
This FREESCALE_IMX_VERSION variable is used by other packages which do not have a 1.0.1 update such as imx-lib, imx-vpu or firmware-imx. Therefore this patch would break them.
I suggest modifying only the gpu-viv package version but this implies to also modifying all the i.MX6 configs to update their kernels as it has been done in Yocto:
https://lists.yoctoproject.org/pipermail/meta-freescale/2014-August/009906.html
Let me know if you need help updating all the configurations (nitrogen6x, sabresd, wandboard etc...).
Thanks,
Gary
Quoted 5 lines
package/freescale-imx/freescale-imx.mk +0
-0FREESCALE_IMX_SITE = http://www.freescale.com/lgfiles/NMG/MAD/YOCTO include $(sort $(wildcard package/freescale-imx/*/*.mk))
PATCH 3/11 gpu-viv-bin-mx6q: provide libopenvg
In reply to Jérôme Pouiller--- package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 4 ++++ package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
package/freescale-imx/gpu-viv-bin-mx6q/Config.in +4 -0
@@ -6,6 +6,7 @@ config BR2_PACKAGE_GPU_VIV_BIN_MX6Q bool "gpu-viv-bin-mx6q" select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENVG select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 depends on BR2_arm # Only relevant for i.MX6
@@ -30,6 +31,9 @@ config BR2_PACKAGE_PROVIDES_LIBEGL config BR2_PACKAGE_PROVIDES_LIBGLES default "gpu-viv-bin-mx6q" +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "gpu-viv-bin-mx6q" + config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_EXAMPLES bool "install examples" help
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +1 -1
@@ -23,7 +23,7 @@ GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement # for which a separate license is needed... GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO -GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles +GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles libopenvg # DirectFB is not supported (wrong version) ifeq ($(BR2_PACKAGE_XORG7),y)
Signature · 1 line
2.1.0
PATCH 3/11 gpu-viv-bin-mx6q: provide libopenvg
J?r?me, All,
On 2014-10-03 14:43 +0200, J?r?me Pouiller spake thusly:
Quoted 1 line
Signed-off-by J?r?me Pouiller <[email protected]>
Regards,
Yann E. MORIN.
Quoted 47 lines
--- package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 4 ++++ package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)package/freescale-imx/gpu-viv-bin-mx6q/Config.in +4
-0@@ -6,6 +6,7 @@ config BR2_PACKAGE_GPU_VIV_BIN_MX6Q bool "gpu-viv-bin-mx6q" select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENVG select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 depends on BR2_arm # Only relevant for i.MX6@@ -30,6 +31,9 @@ config BR2_PACKAGE_PROVIDES_LIBEGL config BR2_PACKAGE_PROVIDES_LIBGLES default "gpu-viv-bin-mx6q" +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "gpu-viv-bin-mx6q" + config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_EXAMPLES bool "install examples" helppackage/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +1
-1@@ -23,7 +23,7 @@ GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement # for which a separate license is needed... GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO -GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles +GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles libopenvg # DirectFB is not supported (wrong version) ifeq ($(BR2_PACKAGE_XORG7),y)Signature · 6 lines
2.1.0 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 4/11 gpu-viv-bin-mx6q: fix compiling issues with EGL_API_FB
In reply to Jérôme PouillerTo compile with Vivante header and use framebuffer, it is necessary to pass option -DEGL_API_FB. This option is declared in pkg-config file of Vivante library. But many packages (especialy qt5 components) does not consider these flags.
So instead of patching every packages that use EGL, it is more convenient to patch Vivante headers.
This commit add #define EGL_API_FB on top of eglvivante.h when necessary.
--- package/freescale-imx/gpu-viv-bin-mx6q/egl.pc | 2 +- package/freescale-imx/gpu-viv-bin-mx6q/glesv2.pc | 2 +- package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 10 ++++++---- package/freescale-imx/gpu-viv-bin-mx6q/vg.pc | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-)
package/freescale-imx/gpu-viv-bin-mx6q/egl.pc +1 -1
@@ -7,4 +7,4 @@ Name: egl Description: Freescale gpu-viv-bin-mx6q implementation of EGL Version: 1.0 Libs: -L${libdir} -lGAL -lEGL -Cflags: -I${includedir}/ -DEGL_API_FB=1 +Cflags: -I${includedir}/
package/freescale-imx/gpu-viv-bin-mx6q/glesv2.pc +1 -1
@@ -7,4 +7,4 @@ Name: glesv2 Description: Freescale gpu-viv-bin-mx6q implementation of OpenGL ESv2 Version: 2.0 Libs: -L${libdir} -lGAL -lEGL -lGLESv2 -Cflags: -I${includedir}/ -DEGL_API_FB=1 +Cflags: -I${includedir}/
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +6 -4
@@ -58,14 +58,16 @@ endef define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS cp -r $(@D)/usr/* $(STAGING_DIR)/usr + if [ $(GPU_VIV_BIN_MX6Q_LIB_TARGET) == fb ]; then \ + $(SED) '/#define EGLAPIENTRY/ a \ + #if !defined(EGL_API_X11) && !defined(EGL_API_DFB) && !defined(EGL_API_FB) \n\ + #define EGL_API_FB \n\ + #endif' $(STAGING_DIR)/usr/include/EGL/eglvivante.h; \ + fi for lib in egl glesv2 vg; do \ $(INSTALL) -m 0644 -D \ package/freescale-imx/gpu-viv-bin-mx6q/$${lib}.pc \ $(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \ - if [ "$(GPU_VIV_BIN_MX6Q_LIB_TARGET)" != "fb" ]; then \ - $(SED) "s/-DEGL_API_FB=1//" \ - $(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \ - fi; \ done endef
package/freescale-imx/gpu-viv-bin-mx6q/vg.pc +1 -1
@@ -7,4 +7,4 @@ Name: vg Description: Freescale gpu-viv-bin-mx6q implementation of OpenVG Version: 1.1 Libs: -L${libdir} -lGAL -lEGL -lOpenVG -Cflags: -I${includedir}/ -DEGL_API_FB=1 +Cflags: -I${includedir}/
Signature · 1 line
2.1.0
PATCH 5/11 gpu-viv-bin-mx6q: fix GLESv2 support
In reply to Jérôme PouillerTested with:
QMX6 board +
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.congatec.com/arm/qmx6_kernel.git"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="9bafbcba67f7bb2a48a5e05998cecb1165aa444f"
BR2_LINUX_KERNEL_DEFCONFIG="qmx6"
BR2_LINUX_KERNEL_APPENDED_UIMAGE=y
BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000"
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-qmx6"
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
BR2_PACKAGE_QT5BASE_EXAMPLES=y
BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
BR2_PACKAGE_QT5BASE_EGLFS=y
BR2_PACKAGE_QT5BASE_DEFAULT_QPA="eglfs"
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5QUICKCONTROLS=y
BR2_PACKAGE_FREESCALE_IMX=y
BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
BR2_PACKAGE_GPU_VIV_BIN_MX6Q=y
BR2_PACKAGE_GPU_VIV_BIN_MX6Q_EXAMPLES=y--- package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +4 -3
@@ -48,12 +48,13 @@ endef # Make sure these commands are idempotent. define GPU_VIV_BIN_MX6Q_BUILD_CMDS $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h - for lib in EGL GAL VIVANTE; do \ + for lib in EGL GAL VIVANTE GLESv2; do \ ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \ $(@D)/usr/lib/lib$${lib}.so; \ done - ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1.2.0 endef define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS
@@ -84,7 +85,7 @@ endif define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS $(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES) cp -a $(@D)/usr/lib $(TARGET_DIR)/usr - for lib in EGL GAL VIVANTE; do \ + for lib in EGL GAL VIVANTE GLESv2; do \ for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \ case $$f in \ *-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \
Signature · 1 line
2.1.0
PATCH 6/11 gpu-viv-bin-mx6q: make fb/x11 choice explicit
In reply to Jérôme Pouiller--- package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 24 ++++++++++++++++++++-- .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-)
package/freescale-imx/gpu-viv-bin-mx6q/Config.in +22 -2
@@ -7,8 +7,6 @@ config BR2_PACKAGE_GPU_VIV_BIN_MX6Q select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES select BR2_PACKAGE_HAS_LIBOPENVG - select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_XORG7 - select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 depends on BR2_arm # Only relevant for i.MX6 # Library binaries are linked against libc.so.6 depends on BR2_TOOLCHAIN_USES_GLIBC
@@ -25,6 +23,28 @@ config BR2_PACKAGE_GPU_VIV_BIN_MX6Q if BR2_PACKAGE_GPU_VIV_BIN_MX6Q +choice + prompt "Output option" + help + There are two versions of this library: one for + direct framebuffer access, one for X11 rendering. + Choose here which version to install. + +config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11 + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_LIBDRM + bool "X11" + +comment "X11 backend needs Xorg package" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB + bool "Framebuffer" + +endchoice + config BR2_PACKAGE_PROVIDES_LIBEGL default "gpu-viv-bin-mx6q"
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +1 -1
@@ -26,7 +26,7 @@ GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles libopenvg # DirectFB is not supported (wrong version) -ifeq ($(BR2_PACKAGE_XORG7),y) +ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11),y) GPU_VIV_BIN_MX6Q_DEPENDENCIES = xlib_libXdamage xlib_libXext GPU_VIV_BIN_MX6Q_LIB_TARGET = x11 else
Signature · 1 line
2.1.0
PATCH 7/11 gpu-viv-bin-mx6q: change output selection mecanism
In reply to Jérôme Pouiller--- package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 5 +++++ .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 21 +++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-)
package/freescale-imx/gpu-viv-bin-mx6q/Config.in +5 -0
@@ -45,6 +45,11 @@ config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB endchoice +config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT + string + default "x11" if BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11 + default "fb" if BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB + config BR2_PACKAGE_PROVIDES_LIBEGL default "gpu-viv-bin-mx6q"
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +9 -12
@@ -24,14 +24,7 @@ GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles libopenvg - -# DirectFB is not supported (wrong version) -ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11),y) -GPU_VIV_BIN_MX6Q_DEPENDENCIES = xlib_libXdamage xlib_libXext -GPU_VIV_BIN_MX6Q_LIB_TARGET = x11 -else -GPU_VIV_BIN_MX6Q_LIB_TARGET = fb -endif +GPU_VIV_BIN_MX6Q_LIB_TARGET = $(call qstrip,$(BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT)) # The archive is a shell-self-extractor of a bzipped tar. It happens # to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z)
@@ -48,13 +41,17 @@ endef # Make sure these commands are idempotent. define GPU_VIV_BIN_MX6Q_BUILD_CMDS $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h - for lib in EGL GAL VIVANTE GLESv2; do \ - ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \ - $(@D)/usr/lib/lib$${lib}.so; \ - done ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1.2.0 + ln -sf libEGL-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libEGL.so + ln -sf libEGL-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libEGL.so.1 + ln -sf libEGL-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libEGL.so.1.0 + ln -sf libGLESv2-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libGLESv2.so + ln -sf libGLESv2-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libGLESv2.so.2 + ln -sf libGLESv2-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libGLESv2.so.2.0.0 + ln -sf libVIVANTE-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libVIVANTE.so + ln -sf libGAL-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so $(@D)/usr/lib/libGAL.so endef define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS
Signature · 1 line
2.1.0
PATCH 8/11 xdriver_xf86-video-imx-viv: new package
In reply to Jérôme PouillerXorg driver for imx6. Inspired from Yocto project.
I did not find any problem, but notice Yocto project force Xorg xserver 1.14.4 while we use 1.16.
Notice Vivante driver should be able to provide Desktop OpenGL implementation. However, this feature seems broken for a while. Yocto use Mesa3D/swraster to provide Desktop OpenGL API.
Tested with:
subsequent qt5base and libdrm fixes +
QMX6 board +
BR2_ARM_EABIHF= both tested
BR2_ARM_ENABLE_NEON=y
BR2_ARM_FPU_NEON=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.congatec.com/arm/qmx6_kernel.git"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="9bafbcba67f7bb2a48a5e05998cecb1165aa444f"
BR2_LINUX_KERNEL_DEFCONFIG="qmx6"
BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-qmx6"
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
BR2_PACKAGE_QT5BASE_EXAMPLES=y
BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
BR2_PACKAGE_QT5BASE_XCB=y
BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb"
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5QUICKCONTROLS=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XSERVER_XORG_SERVER=y
BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV=y
BR2_PACKAGE_FREESCALE_IMX=y
BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
BR2_PACKAGE_GPU_VIV_BIN_MX6Q=y
BR2_PACKAGE_GPU_VIV_BIN_MX6Q_EXAMPLES=y--- package/x11r7/Config.in | 1 + package/x11r7/xdriver_xf86-video-imx-viv/Config.in | 31 +++++++++++++++++++++ ...xf86-video-imx-viv-0001-Fix-LoadExtenions.patch | 15 ++++++++++ .../xdriver_xf86-video-imx-viv.mk | 32 ++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/Config.in create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv-0001-Fix-LoadExtenions.patch create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk
package/x11r7/Config.in +1 -0
@@ -161,6 +161,7 @@ if BR2_PACKAGE_XORG7 source package/x11r7/xdriver_xf86-video-glide/Config.in source package/x11r7/xdriver_xf86-video-glint/Config.in source package/x11r7/xdriver_xf86-video-i128/Config.in + source package/x11r7/xdriver_xf86-video-imx-viv/Config.in source package/x11r7/xdriver_xf86-video-intel/Config.in source package/x11r7/xdriver_xf86-video-mach64/Config.in source package/x11r7/xdriver_xf86-video-mga/Config.in
package/x11r7/xdriver_xf86-video-imx-viv/Config.in new file +31 -0
@@ -0,0 +1,31 @@ +if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV + bool "xf86-video-imx-viv" + depends on BR2_arm + depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11 + depends on BR2_TOOLCHAIN_USES_GLIBC # gpu-viv-bin-m6q + select BR2_PACKAGE_MESA3D # Needed in order to compile xorg with glx/dri + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + help + X.Org driver for iMX6 GPU (Vivante) + + To use this driver, add correct configuration to your + /etc/X11/xorg.conf: + + Section "Device" + [...] + Driver "vivante" + Option "vivante_fbdev" "/dev/fbX" + EndSection + + Don't forget to load galcore.ko create /dev/galcore before to + use this driver (else, Xorg will exit with an obscur message + like "Segmentation fault at address 0xc"). + +comment "xf86-video-imx-viv needs an (e)glibc toolchain and gpu-viv-bin-mx6q with X11 output" + depends on BR2_arm + depends on (!BR2_TOOLCHAIN_USES_GLIBC || !BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11) + +endif
package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv-0001-Fix-LoadExtenions.patch new file +15 -0
@@ -0,0 +1,15 @@ +Fix compilation with Xorg xserver 1.16. + +Signed-off-by: J?r?me Pouiller <[email protected]> + +--- a/EXA/src/vivante_fbdev/vivante_fbdev_driver.c 2014-07-25 15:38:24.000000000 +0200 ++++ b/EXA/src/vivante_fbdev/vivante_fbdev_driver.c 2014-10-02 21:00:58.755409342 +0200 +@@ -261,7 +261,7 @@ + setupDone = TRUE; + xf86AddDriver(&FBDEV, module, HaveDriverFuncs); + if(gVivFb) +- LoadExtension(&VIVExt, FALSE); ++ LoadExtensionList(&VIVExt, 1, FALSE); + return (pointer)1; + } else { + if (errmaj) *errmaj = LDR_ONCEONLY;
package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk new file +32 -0
@@ -0,0 +1,32 @@ +################################################################################ +# +# xdriver_xf86-video-imx-viv +# +################################################################################ + +XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = $(FREESCALE_IMX_VERSION) +XDRIVER_XF86_VIDEO_IMX_VIV_SITE = $(FREESCALE_IMX_SITE) +XDRIVER_XF86_VIDEO_IMX_VIV_SOURCE = xserver-xorg-video-imx-viv-$(XDRIVER_XF86_VIDEO_IMX_VIV_VERSION).tar.gz +XDRIVER_XF86_VIDEO_IMX_VIV_DEPENDENCIES = gpu-viv-bin-mx6q xserver_xorg-server \ + xproto_xproto xproto_xf86driproto +XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING = YES +XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD = $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)/EXA/src -f makefile.linux + +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) -I$(@D)/DRI_1.10.4/src" +endef + +define XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING_CMDS + $(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) prefix=$(STAGING_DIR)/usr install + $(INSTALL) -m 644 $(@D)/EXA/src/vivante_gal/vivante_priv.h $(STAGING_DIR)/usr/include + $(INSTALL) -m 644 $(@D)/EXA/src/vivante_gal/vivante_gal.h $(STAGING_DIR)/usr/include +endef + +define XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_TARGET_CMDS + $(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) prefix=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) +
Signature · 1 line
2.1.0
PATCH 9/11 libdrm: fix support for xserver with Vivante drivers
In reply to Jérôme Pouiller--- package/libdrm/libdrm-0001-update-arm.patch | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 package/libdrm/libdrm-0001-update-arm.patch
package/libdrm/libdrm-0001-update-arm.patch new file +37 -0
@@ -0,0 +1,37 @@ +(come from yocto) + +Add ARM support into xf86arm.h. This provides support for Xorg interface. +Without this the vivante samples will hang during close requiring a reboot + +Upstream-Status: Pending + +Signed-off-by: Lauren Post <[email protected]> +Signed-off-by: Evan Kotara <[email protected]> + +diff --git a/xf86drm.h b/xf86drm.h +--- a/xf86drm.h ++++ b/xf86drm.h +@@ -461,6 +461,23 @@ do { register unsigned int __old __asm(" + : "cr0", "memory"); \ + } while (0) + ++#elif defined(__arm__) ++ #undef DRM_DEV_MODE ++ #define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) ++ ++ #define DRM_CAS(lock,old,new,__ret) \ ++ do { \ ++ __asm__ __volatile__ ( \ ++ "1: ldrex %0, [%1]\n" \ ++ " teq %0, %2\n" \ ++ " ite eq\n" \ ++ " strexeq %0, %3, [%1]\n" \ ++ " movne %0, #1\n" \ ++ : "=&r" (__ret) \ ++ : "r" (lock), "r" (old), "r" (new) \ ++ : "cc","memory"); \ ++ } while (0) ++ + #endif /* architecture */ + #endif /* __GNUC__ >= 2 */ +
Signature · 1 line
2.1.0
PATCH 10/11 qt5base: fix Vivante x11/EGL configuration
In reply to Jérôme PouillerFix compilation with Vivante headers and bug at runtime.
--- .../qt5base-0001-Force_egl_visual_ID_33.patch | 23 ++++++++ .../qt5/qt5base/qt5base-0004-xcb-egl-fixes.patch | 63 ++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 package/qt5/qt5base/qt5base-0001-Force_egl_visual_ID_33.patch create mode 100644 package/qt5/qt5base/qt5base-0004-xcb-egl-fixes.patch
package/qt5/qt5base/qt5base-0001-Force_egl_visual_ID_33.patch new file +23 -0
@@ -0,0 +1,23 @@ +Workaround EGL initialization failure due visual mismatch + +Error: + +Warning: EGL suggested using X Visual ID 33 (RGB888) for EGL config 28 (RGB444), but this is incompatable +Unable to find an X11 visual which matches EGL config 28 +Could not initialize EGL +Aborted + +Upstream-Status: Inappropriate [workaround] + +Signed-off-by: Otavio Salvador <[email protected]> + +diff -Naur qtbase-opensource-src-5.1.1_original/src/platformsupport/eglconvenience/qxlibeglintegration.cpp qtbase-opensource-src-5.1.1/src/platformsupport/eglconvenience/qxlibeglintegration.cpp +--- qtbase-opensource-src-5.1.1_original/src/platformsupport/eglconvenience/qxlibeglintegration.cpp 2013-12-25 19:08:42.163895341 -0800 ++++ qtbase-opensource-src-5.1.1/src/platformsupport/eglconvenience/qxlibeglintegration.cpp 2013-12-25 19:09:37.207893799 -0800 +@@ -180,5 +180,5 @@ + } + + qWarning("Unable to find an X11 visual which matches EGL config %d", configId); +- return (VisualID)0; ++ return (VisualID)33; + }
package/qt5/qt5base/qt5base-0004-xcb-egl-fixes.patch new file +63 -0
63 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 11/11 qmx6_defconfig: update
In reply to Jérôme Pouiller- Update kernel
- Add u-boot configuration
- Add support for graphical drivers
- Enable Qt5 (eglfs) since most of user will it with this configuration
- 6q_bootscript.txt is no more needed by new version of u-boot
--- board/congatec/qmx6/6q_bootscript.txt | 2 -- board/congatec/qmx6/post-build.sh | 7 ----- configs/qmx6_defconfig | 49 +++++++++++++++++++++++++++++++---- 3 files changed, 44 insertions(+), 14 deletions(-) delete mode 100644 board/congatec/qmx6/6q_bootscript.txt delete mode 100755 board/congatec/qmx6/post-build.sh
board/congatec/qmx6/6q_bootscript.txt deleted +0 -2
@@ -1,2 +0,0 @@ -set bootargs console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait consoleblank=0 -${fs}load mmc ${disk}:1 10800000 /boot/uImage && bootm 10800000 ; echo "Error loading kernel image"
board/congatec/qmx6/post-build.sh deleted +0 -7
@@ -1,7 +0,0 @@ -#!/bin/sh - -TARGET_DIR=$1 -BOARD_DIR="$(dirname $0)" - -mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "boot script" \ - -d $BOARD_DIR/6q_bootscript.txt $TARGET_DIR/6q_bootscript
configs/qmx6_defconfig +44 -5
60 lines not on this page · raw message
Signature · 1 line
2.1.0