Add Xorg support for iMX6
v4 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.
v4:
- Fix example config in commit log of xdriver_xf86-video-imx-viv
- Add a note about OpenGL API in xdriver_xf86-video-imx-viv help
v3:
- Respin on next
- Add patch to use self-extractible helper function
- Remove 'See freescale-imx.mk' comment
- Reword patch "gpu-viv-bin-mx6q: change output selection mecanisms"
- libdrm: Apply new patch naming policy
- xdriver_xf86-video-imx-viv: Apply new patch naming policy
- xdriver_xf86-video-imx-viv: Does not depends directly on glibc
- qt5base: Apply new patch naming policy
- qmx6_defconfig: Use internal toochain
v2:
- Rebase on new version of mesa3d
- Reorder some patches (in order to make examples I provide in commit message functional)
- Do not bump version of all freescale packages
- Bump kernel version of imx6 boards
J?r?me Pouiller (14):
mesa3d: Give possibility to external backends to enable DRI/Gallium
gpu-viv-bin-mx6q: use self-extractible helper
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 mechanism xdriver_xf86-video-imx-viv: new package
libdrm: fix support for xserver with Vivante drivers
qt5base: apply new patch naming policy
qt5base: fix Vivante x11/EGL configuration
Vivante drivers: bump to version 3.10.17-1.0.1
nitrogen6x_defconfig: bump kernel to 3.10.17_1.0.1_ga freescale_imx6*_defconfig: bump kernel to 3.10.17_1.0.1_ga
qmx6_defconfig: update
board/congatec/qmx6/6q_bootscript.txt | 2 -
board/congatec/qmx6/post-build.sh | 7 ---
configs/freescale_imx6dlsabresd_defconfig | 3 +-
configs/freescale_imx6qsabresd_defconfig | 3 +-
configs/freescale_imx6sololiteevk_defconfig | 3 +-
configs/nitrogen6x_defconfig | 3 +-
configs/qmx6_defconfig | 49 +++++++++++++++--
package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 29 +++++++++-
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 | 56 ++++++++-----------
package/freescale-imx/gpu-viv-bin-mx6q/vg.pc | 2 +-
package/libdrm/0001-update-arm.patch | 37 +++++++++++++
package/mesa3d/mesa3d.mk | 4 +-
.../qt5/qt5base/0001-Force_egl_visual_ID_33.patch | 23 ++++++++
...kspecs-files.patch => 0002-mkspecs-files.patch} | 0
...clibc-no-lfs.patch => 0003-uclibc-no-lfs.patch} | 0
package/qt5/qt5base/0004-xcb-egl-fixes.patch | 63 ++++++++++++++++++++++
package/x11r7/Config.in | 1 +
.../0001-Fix-LoadExtenions.patch | 15 ++++++
package/x11r7/xdriver_xf86-video-imx-viv/Config.in | 31 +++++++++++
.../xdriver_xf86-video-imx-viv.mk | 32 +++++++++++
22 files changed, 310 insertions(+), 57 deletions(-)
delete mode 100644 board/congatec/qmx6/6q_bootscript.txt
delete mode 100755 board/congatec/qmx6/post-build.sh
create mode 100644 package/libdrm/0001-update-arm.patch
create mode 100644 package/qt5/qt5base/0001-Force_egl_visual_ID_33.patch
rename package/qt5/qt5base/{qt5base-0002-mkspecs-files.patch => 0002-mkspecs-files.patch} (100%)
rename package/qt5/qt5base/{qt5base-0003-uclibc-no-lfs.patch => 0003-uclibc-no-lfs.patch} (100%)
create mode 100644 package/qt5/qt5base/0004-xcb-egl-fixes.patch
create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/0001-Fix-LoadExtenions.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.mkSignature · 1 line
1.9.1
PATCH v4 1/14 mesa3d: Give possibility to external backends to enable DRI/Gallium
--- package/mesa3d/mesa3d.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
package/mesa3d/mesa3d.mk +2 -2
@@ -64,7 +64,7 @@ MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915) += i915 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965) += i965 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += radeon -ifeq ($(MESA3D_GALLIUM_DRIVERS-y),) +ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),) MESA3D_CONF_OPTS += \ --without-gallium-drivers else
@@ -73,7 +73,7 @@ MESA3D_CONF_OPTS += \ --with-gallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) endif -ifeq ($(MESA3D_DRI_DRIVERS-y),) +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) MESA3D_CONF_OPTS += \ --without-dri-drivers --without-dri --disable-dri3 else
Signature · 1 line
1.9.1
PATCH v4 2/14 gpu-viv-bin-mx6q: use self-extractible helper
In reply to Jérôme Pouiller--- .../freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +2 -13
@@ -15,12 +15,7 @@ GPU_VIV_BIN_MX6Q_SOURCE = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin GPU_VIV_BIN_MX6Q_INSTALL_STAGING = YES GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement - -# No license file is included in the archive; we could extract it from -# the self-extractor, but that's just too much effort. -# This is a legal minefield: the EULA specifies that -# the Board Support Package includes software and hardware (sic!) -# for which a separate license is needed... +GPU_VIV_BIN_MX6Q_LICENSE_FILES = EULA GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO GPU_VIV_BIN_MX6Q_PROVIDES = libegl libgles libopenvg
@@ -33,14 +28,8 @@ else GPU_VIV_BIN_MX6Q_LIB_TARGET = fb endif -# 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) -# The --force makes sure it doesn't fail if the source dir already exists. -# The --auto-accept skips the license check - not needed for us -# because we have legal-info. define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS - (cd $(BUILD_DIR); \ - sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE)) endef # Instead of building, we fix up the inconsistencies that exist
Signature · 1 line
1.9.1
PATCH v4 3/14 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
@@ -47,14 +47,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
1.9.1
PATCH v4 4/14 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
@@ -37,12 +37,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
@@ -73,7 +74,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
1.9.1
PATCH v4 5/14 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
@@ -21,7 +21,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
1.9.1
PATCH v4 6/14 gpu-viv-bin-mx6q: change output selection mechanism
In reply to Jérôme Pouiller - Move output selection to Config.in. It easier to add new backends selection (wayland, directfb, ...).
- Remove useless build time dependencies xlib_libXdamage and xlib_libXext (gpu-viv-bin-mx6q is provided as binary package)
- Also create libraries symbolic links with version numbers.
--- 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
@@ -19,14 +19,7 @@ GPU_VIV_BIN_MX6Q_LICENSE_FILES = EULA 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)) define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE))
@@ -37,13 +30,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
1.9.1
PATCH v4 7/14 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_ES2=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 + .../0001-Fix-LoadExtenions.patch | 15 ++++++++++ package/x11r7/xdriver_xf86-video-imx-viv/Config.in | 31 +++++++++++++++++++++ .../xdriver_xf86-video-imx-viv.mk | 32 ++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 package/x11r7/xdriver_xf86-video-imx-viv/0001-Fix-LoadExtenions.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.mk
package/x11r7/Config.in +1 -0
@@ -160,6 +160,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/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/Config.in new file +31 -0
@@ -0,0 +1,31 @@ + +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV + bool "xf86-video-imx-viv" + depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11 + select BR2_PACKAGE_MESA3D # Needed in order to compile xorg with glx/dri + select BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + help + X.Org driver for iMX6 GPU (Vivante) + + Notice EGL and GLes2 APIs are correctly supported. This driver should + also be able to provide Desktop OpenGL implementation but, this + feature seems broken for a while. + + 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 and 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 depends on gpu-viv-bin-mx6q with X11 output" + depends on BR2_arm + depends on (!BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11)
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
1.9.1
PATCH v4 8/14 libdrm: fix support for xserver with Vivante drivers
In reply to Jérôme Pouiller--- package/libdrm/0001-update-arm.patch | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 package/libdrm/0001-update-arm.patch
package/libdrm/0001-update-arm.patch new file +37 -0
@@ -0,0 +1,37 @@ +[Adapted from yocto project] + +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
1.9.1
PATCH v4 9/14 qt5base: apply new patch naming policy
In reply to Jérôme Pouiller---
.../{qt5base-0002-mkspecs-files.patch => 0002-mkspecs-files.patch} | 0
.../{qt5base-0003-uclibc-no-lfs.patch => 0003-uclibc-no-lfs.patch} | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename package/qt5/qt5base/{qt5base-0002-mkspecs-files.patch => 0002-mkspecs-files.patch} (100%)
rename package/qt5/qt5base/{qt5base-0003-uclibc-no-lfs.patch => 0003-uclibc-no-lfs.patch} (100%)package/qt5/qt5base/0002-mkspecs-files.patch renamed from package/qt5/qt5base/qt5base-0002-mkspecs-files.patch +0 -0
package/qt5/qt5base/0003-uclibc-no-lfs.patch renamed from package/qt5/qt5base/qt5base-0003-uclibc-no-lfs.patch +0 -0
Signature · 1 line
1.9.1
PATCH v4 10/14 qt5base: fix Vivante x11/EGL configuration
In reply to Jérôme PouillerFix compilation with Vivante headers and bug at runtime.
--- .../qt5/qt5base/0001-Force_egl_visual_ID_33.patch | 23 ++++++++ package/qt5/qt5base/0004-xcb-egl-fixes.patch | 63 ++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 package/qt5/qt5base/0001-Force_egl_visual_ID_33.patch create mode 100644 package/qt5/qt5base/0004-xcb-egl-fixes.patch
package/qt5/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/0004-xcb-egl-fixes.patch new file +63 -0
63 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v4 11/14 Vivante drivers: bump to version 3.10.17-1.0.1
In reply to Jérôme Pouiller--- package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 5 +++-- .../x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-)
package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk +3 -2
@@ -4,10 +4,11 @@ # ################################################################################ +GPU_VIV_BIN_MX6Q_BASE_VERSION = 3.10.17-1.0.1 ifeq ($(BR2_ARM_EABIHF),y) -GPU_VIV_BIN_MX6Q_VERSION = $(FREESCALE_IMX_VERSION)-hfp +GPU_VIV_BIN_MX6Q_VERSION = $(GPU_VIV_BIN_MX6Q_BASE_VERSION)-hfp else -GPU_VIV_BIN_MX6Q_VERSION = $(FREESCALE_IMX_VERSION)-sfp +GPU_VIV_BIN_MX6Q_VERSION = $(GPU_VIV_BIN_MX6Q_BASE_VERSION)-sfp endif GPU_VIV_BIN_MX6Q_SITE = $(FREESCALE_IMX_SITE) GPU_VIV_BIN_MX6Q_SOURCE = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin
package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk +1 -1
@@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = $(FREESCALE_IMX_VERSION) +XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = 3.10.17-1.0.1 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 \
Signature · 1 line
1.9.1
PATCH v4 12/14 nitrogen6x_defconfig: bump kernel to 3.10.17_1.0.1_ga
In reply to Jérôme Pouiller--- configs/nitrogen6x_defconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
configs/nitrogen6x_defconfig +2 -1
@@ -26,7 +26,8 @@ BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://github.com/boundarydevices/u-bo # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="http://github.com/boundarydevices/linux-imx6/tarball/898627a/linux-imx6-898627a.tar.gz" +# Last version of branch boundary-imx_3.10.17_1.0.1_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/tarball/ea957c5/linux-imx6-ea957c5.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="nitrogen6x" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000"
Signature · 1 line
1.9.1
PATCH v4 13/14 freescale_imx6*_defconfig: bump kernel to 3.10.17_1.0.1_ga
In reply to Jérôme Pouiller--- configs/freescale_imx6dlsabresd_defconfig | 3 ++- configs/freescale_imx6qsabresd_defconfig | 3 ++- configs/freescale_imx6sololiteevk_defconfig | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-)
configs/freescale_imx6dlsabresd_defconfig +2 -1
@@ -17,7 +17,8 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_3.10.17_1.0.0_ga" +# Last version of branch imx_3.10.17_1.0.1_ga +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="dac46dcf913585956a0e7a838e6f4b7465f00f57" BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" BR2_LINUX_KERNEL_DTS_SUPPORT=y
configs/freescale_imx6qsabresd_defconfig +2 -1
@@ -17,7 +17,8 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_3.10.17_1.0.0_ga" +# Last version of branch imx_3.10.17_1.0.1_ga +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="dac46dcf913585956a0e7a838e6f4b7465f00f57" BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" BR2_LINUX_KERNEL_DTS_SUPPORT=y
configs/freescale_imx6sololiteevk_defconfig +2 -1
@@ -9,7 +9,8 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_3.10.17_1.0.0_ga" +# Last version of branch imx_3.10.17_1.0.1_ga +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="dac46dcf913585956a0e7a838e6f4b7465f00f57" BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" BR2_LINUX_KERNEL_DTS_SUPPORT=y
Signature · 1 line
1.9.1
PATCH v4 14/14 qmx6_defconfig: update
In reply to Jérôme Pouiller- Update kernel
- Add u-boot configuration
- 6q_bootscript.txt is no more needed by new version of u-boot
- Add support for graphical drivers
- Enable Qt5 (eglfs) since many of users will enable it with this configuration. Sure, this is subject to debate. It depends if we want to provide demo configurations.
--- board/congatec/qmx6/6q_bootscript.txt | 2 -- board/congatec/qmx6/post-build.sh | 7 ----- configs/qmx6_defconfig | 49 ++++++++++++++++++++++++++++++++--- 3 files changed, 45 insertions(+), 13 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 +45 -4
61 lines not on this page · raw message
Signature · 1 line
1.9.1
v4 cover Add Xorg support for iMX6
In reply to Jérôme PouillerJerome, All,
Quoted 20 lines · J?r?me Pouiller
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.
v4:
- Fix example config in commit log of xdriver_xf86-video-imx-viv
- Add a note about OpenGL API in xdriver_xf86-video-imx-viv helpv3:
- Respin on next
- Add patch to use self-extractible helper function
- Remove 'See freescale-imx.mk' comment
- Reword patch "gpu-viv-bin-mx6q: change output selection mecanisms"
- libdrm: Apply new patch naming policy
- xdriver_xf86-video-imx-viv: Apply new patch naming policy
- xdriver_xf86-video-imx-viv: Does not depends directly on glibc
- qt5base: Apply new patch naming policy
-qmx6_defconfig: Use internal toochain
Quoted 8 lines
v2:
- Rebase on new version of mesa3d
- Reorder some patches (in order to make examples I provide in commit message functional)
- Do not bump version of all freescale packages
- Bump kernel version of imx6 boards[snip]
It seems I can't build Qt5 properly now... I get the following errors; In file included from ../../../../include/QtCore/qtextstream.h:1:0,
from ../../../../include/QtCore/QTextStream:1,
from qeglfsscreen.h:47,
from qeglfswindow.h:46,
from qeglfsintegration.cpp:44:../../../../include/QtCore/../../src/corelib/io/qtextstream.h:54:2:
error: #error qtextstream.h must be included before any header file that defines Status
#error qtextstream.h must be included before any header file that
defines Status
...
Makefile:1860: recipe for target '.obj/qeglfsscreen.o' failed make[6]: *** [.obj/qeglfsscreen.o] Error 1
Makefile:117: recipe for target 'sub-eglfs-make_first' failed make[5]: *** [sub-eglfs-make_first] Error 2
Could you send your entire config file? That might be easier to track down the issue this way.
Also, I'm sorry not to have said something earlier but I'm not sure about your qmx6_defconfig as it includes graphics and Qt5 by default. I thought the config files were meant to be as minimalistic as possible for the user to decide what packages he wants to use. I'm not sure that adding Qt5 by default is suitable especially since this is the only defconfig doing so.
Thanks,
Gary
v4 cover Add Xorg support for iMX6
Quoted 26 lines · On Wednesday 03 December 2014 11:25:24 Gary Bisson wrote:
Jerome, All,
Quoted 23 lines · J?r?me Pouiller
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.
v4:
- Fix example config in commit log of xdriver_xf86-video-imx-viv
- Add a note about OpenGL API in xdriver_xf86-video-imx-viv helpv3:
- Respin on next
- Add patch to use self-extractible helper function
- Remove 'See freescale-imx.mk' comment
- Reword patch "gpu-viv-bin-mx6q: change output selection mecanisms"
- libdrm: Apply new patch naming policy
- xdriver_xf86-video-imx-viv: Apply new patch naming policy
- xdriver_xf86-video-imx-viv: Does not depends directly on glibc
- qt5base: Apply new patch naming policy
-qmx6_defconfig: Use internal toochainv2:
- Rebase on new version of mesa3d
- Reorder some patches (in order to make examples I provide in commit
message
Quoted 23 lines
Quoted 5 lines
functional)
- Do not bump version of all freescale packages
- Bump kernel version of imx6 boards[snip]
It seems I can't build Qt5 properly now... I get the following errors; In file included from
../../../../include/QtCore/qtextstream.h:1:0,from ../../../../include/QtCore/QTextStream:1, from qeglfsscreen.h:47, from qeglfswindow.h:46, from qeglfsintegration.cpp:44:
../../../../include/QtCore/../../src/corelib/io/qtextstream.h:54:2:
error: #errorqtextstream.hmust be included before any header file that defines Status
#errorqtextstream.hmust be included before any header file that
defines Status
...
Makefile:1860: recipe for target '.obj/qeglfsscreen.o' failed make[6]: *** [.obj/qeglfsscreen.o] Error 1
Makefile:117: recipe for target 'sub-eglfs-make_first' failed make[5]: *** [sub-eglfs-make_first] Error 2
Quoted 2 lines
Could you send your entire config file? That might be easier to track down the issue this way.
hmmm... weird, I cannot reproduce it. Did you applied patch named "qt5base:
fix Vivante x11/EGL configuration"?
Just in case it would be useful, you will find my .config here:
https://gist.github.com/jerome-pouiller/3c5a0c5c6f3a06cd5f75
Quoted 6 lines
Also, I'm sorry not to have said something earlier but I'm not sure about your
qmx6_defconfigas it includes graphics and Qt5 by default. I thought the config files were meant to be as minimalistic as possible for the user to decide what packages he wants to use. I'm not sure that adding Qt5 by default is suitable especially since this is the only defconfig doing so.
Well, if we want to keep it as minimalist as possible, we should not enable gpu-viv-bin-mx6q. But, it does not make sense to enable gpu-viv-bin-mx6q if there no library to use it.
In add, I read in Buildroot Developer Days from ELCE 2013 report[1] that BR will begin to adding 'demo' config.
Finally I enabled Qt.
I confess I have hesitated to send this patch as is, exactly for reasons you gave (and the more time passes the less I am convinced by my arguments).
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
v4 cover Add Xorg support for iMX6
Jerome, All,
Quoted 18 lines · J?r?me Pouiller
[snip]
Quoted 17 lines
It seems I can't build Qt5 properly now... I get the following errors; In file included from
../../../../include/QtCore/qtextstream.h:1:0,from ../../../../include/QtCore/QTextStream:1, from qeglfsscreen.h:47, from qeglfswindow.h:46, from qeglfsintegration.cpp:44:
../../../../include/QtCore/../../src/corelib/io/qtextstream.h:54:2:
error: #errorqtextstream.hmust be included before any header file that defines Status
#errorqtextstream.hmust be included before any header file that
defines Status
...
Makefile:1860: recipe for target '.obj/qeglfsscreen.o' failed make[6]: *** [.obj/qeglfsscreen.o] Error 1
Makefile:117: recipe for target 'sub-eglfs-make_first' failed make[5]: *** [sub-eglfs-make_first] Error 2
Quoted 4 lines
Quoted 2 lines
Could you send your entire config file? That might be easier to track down the issue this way.
hmmm... weird, I cannot reproduce it. Did you applied patch named "qt5base:
fix Vivante x11/EGL configuration"?
Yes, here is my git log:
$ git log --oneline -15 89f26bf qmx6_defconfig: update 137294b freescale_imx6*_defconfig: bump kernel to 3.10.17_1.0.1_ga fc6af14 nitrogen6x_defconfig: bump kernel to 3.10.17_1.0.1_ga 1ccd90a Vivante drivers: bump to version 3.10.17-1.0.1 3f47b07 qt5base: fix Vivante x11/EGL configuration f15dbd5 qt5base: apply new patch naming policy 169008f libdrm: fix support for xserver with Vivante drivers c88d616 xdriver_xf86-video-imx-viv: new package c04135b gpu-viv-bin-mx6q: change output selection mechanism f160a0f gpu-viv-bin-mx6q: make fb/x11 choice explicit 75d8516 gpu-viv-bin-mx6q: fix GLESv2 support 9f07513 gpu-viv-bin-mx6q: fix compiling issues with EGL_API_FB f3288a5 gpu-viv-bin-mx6q: use self-extractible helper 85bc45d mesa3d: Give possibility to external backends to enable DRI/Gallium 820bd03 libz160: new package
Quoted 2 lines
Just in case it would be useful, you will find my .config here:
https://gist.github.com/jerome-pouiller/3c5a0c5c6f3a06cd5f75
Is it normal that your configuration is using the FB version of the vivante libs? In my case I wanted to test everything at once (X11 libs & Qt5). Have you tried with the X libs?
Quoted 9 lines
Quoted 6 lines
Also, I'm sorry not to have said something earlier but I'm not sure about your
qmx6_defconfigas it includes graphics and Qt5 by default. I thought the config files were meant to be as minimalistic as possible for the user to decide what packages he wants to use. I'm not sure that adding Qt5 by default is suitable especially since this is the only defconfig doing so.Well, if we want to keep it as minimalist as possible, we should not enable gpu-viv-bin-mx6q. But, it does not make sense to enable gpu-viv-bin-mx6q if there no library to use it.
Yes by minimalistic I mean CPU + bootloader + kernel without any custom libs.
Quoted 10 lines
In add, I read in Buildroot Developer Days from ELCE 2013 report[1] that BR will begin to adding 'demo' config.
Finally I enabled Qt.
I confess I have hesitated to send this patch as is, exactly for reasons you gave (and the more time passes the less I am convinced by my arguments).
My understanding of it is to create a demo config like qmx6_qt5_demo_defconfig whereas a qmx6_defconfig would stay minimal but I might be wrong.
Thanks,
Gary
v4 cover Add Xorg support for iMX6
Quoted 51 lines · On Thursday 04 December 2014 11:22:50 Gary Bisson wrote:
Jerome, All,
Quoted 23 lines · J?r?me Pouiller
[snip]
Quoted 21 lines
It seems I can't build Qt5 properly now... I get the following errors; In file included from
../../../../include/QtCore/qtextstream.h:1:0,from ../../../../include/QtCore/QTextStream:1, from qeglfsscreen.h:47, from qeglfswindow.h:46, from qeglfsintegration.cpp:44:
../../../../include/QtCore/../../src/corelib/io/qtextstream.h:54:2:
error: #errorqtextstream.hmust be included before any header file that defines Status#error
qtextstream.hmust be included before any header file thatdefines Status
...
Makefile:1860: recipe for target '.obj/qeglfsscreen.o' failed make[6]: *** [.obj/qeglfsscreen.o] Error 1 Makefile:117: recipe for target 'sub-eglfs-make_first' failed make[5]: *** [sub-eglfs-make_first] Error 2Quoted 6 lines
Quoted 2 lines
Could you send your entire config file? That might be easier to track down the issue this way.
hmmm... weird, I cannot reproduce it. Did you applied patch named "qt5base:
fix Vivante x11/EGL configuration"?Yes, here is my git log:
$ git log --oneline -15 89f26bf qmx6_defconfig: update 137294b freescale_imx6*_defconfig: bump kernel to 3.10.17_1.0.1_ga fc6af14 nitrogen6x_defconfig: bump kernel to 3.10.17_1.0.1_ga 1ccd90a Vivante drivers: bump to version 3.10.17-1.0.1 3f47b07 qt5base: fix Vivante x11/EGL configuration f15dbd5 qt5base: apply new patch naming policy 169008f libdrm: fix support for xserver with Vivante drivers c88d616 xdriver_xf86-video-imx-viv: new package c04135b gpu-viv-bin-mx6q: change output selection mechanism f160a0f gpu-viv-bin-mx6q: make fb/x11 choice explicit 75d8516 gpu-viv-bin-mx6q: fix GLESv2 support 9f07513 gpu-viv-bin-mx6q: fix compiling issues with EGL_API_FB f3288a5 gpu-viv-bin-mx6q: use self-extractible helper 85bc45d mesa3d: Give possibility to external backends to enable DRI/Gallium 820bd03 libz160: new package
Quoted 6 lines
Quoted 2 lines
Just in case it would be useful, you will find my .config here:
https://gist.github.com/jerome-pouiller/3c5a0c5c6f3a06cd5f75Is it normal that your configuration is using the FB version of the vivante libs? In my case I wanted to test everything at once (X11 libs & Qt5). Have you tried with the X libs?
It looks like you enabled EGLFS in Qt5. EGLFS need framebuffer version of gpu- viv-bin-mx6q. If you want to use X11, you have to enable xcb in qt5 (as in example in commit log of "07/14 xdriver_xf86-video-imx-viv").
I do not see any simple generic solution to prevent user to choose EGLFS in Qt if X11 backend is selected in gpu-viv-bin-mx6q :-(
You will find below configuration I use for X11:
https://gist.github.com/jerome-pouiller/a35bcd4a65a49d5683d1
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
v4 cover Add Xorg support for iMX6
Jerome, All,
Quoted 10 lines · J?r?me Pouiller
[snip]
Quoted 5 lines
Quoted 2 lines
Just in case it would be useful, you will find my .config here:
https://gist.github.com/jerome-pouiller/3c5a0c5c6f3a06cd5f75Is it normal that your configuration is using the FB version of the vivante libs? In my case I wanted to test everything at once (X11 libs & Qt5). Have you tried with the X libs?
It looks like you enabled EGLFS in Qt5. EGLFS need framebuffer version of gpu- viv-bin-mx6q. If you want to use X11, you have to enable xcb in qt5 (as in example in commit log of "07/14 xdriver_xf86-video-imx-viv").
Quoted 5 lines
I do not see any simple generic solution to prevent user to choose EGLFS in Qt if X11 backend is selected in gpu-viv-bin-mx6q :-(
You will find below configuration I use for X11:
https://gist.github.com/jerome-pouiller/a35bcd4a65a49d5683d1
That might be the case yes although I don't remember specifying EGLFS but I might have mixed up different configs. I'll try building the your config for X11 and let you know.
Thanks,
Gary
v4 cover Add Xorg support for iMX6
Jerome, All,
Quoted 11 lines · Gary Bisson
[snip]
Quoted 10 lines
It looks like you enabled EGLFS in Qt5. EGLFS need framebuffer version of gpu-
viv-bin-mx6q. If you want to use X11, you have to enable xcb in qt5 (as in
example in commit log of "07/14 xdriver_xf86-video-imx-viv").I do not see any simple generic solution to prevent user to choose EGLFS in Qt
if X11 backend is selected in gpu-viv-bin-mx6q :-(
Quoted 6 lines
Quoted 2 lines
You will find below configuration I use for X11:
https://gist.github.com/jerome-pouiller/a35bcd4a65a49d5683d1That might be the case yes although I don't remember specifying EGLFS but I might have mixed up different configs. I'll try building the your config for X11 and let you know.
Using your X11 config + adding the Qt worked fine. Here are the demo apps tested:
- tutorial7 from Vivante examples (to make sure 3D acceleration is working fine
- hellogl_es2 from Qt5 examples
As for the review, everything looks good to me apart from the qmx6_defconfig which I think should be split in 2 (one qmx6_defconfig minimalistic, one qmx6_qt5_demo_defconfig).
Thanks,
Gary
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141205/e42a95e3/attachment.html>
v4 cover Add Xorg support for iMX6
In reply to Jérôme PouillerDear J?r?me Pouiller,
Quoted 6 lines · J?r?me Pouiller
It looks like you enabled EGLFS in Qt5. EGLFS need framebuffer version of gpu- viv-bin-mx6q. If you want to use X11, you have to enable xcb in qt5 (as in example in commit log of "07/14 xdriver_xf86-video-imx-viv").
I do not see any simple generic solution to prevent user to choose EGLFS in Qt if X11 backend is selected in gpu-viv-bin-mx6q :-(
Well, we could always imagine something like:
config BR2_PACKAGE_QT5BASE_XCB
bool "X.org XCB support"
depends on BR2_PACKAGE_XORG7
select BR2_PACKAGE_XLIB_LIBX11
select BR2_PACKAGE_LIBXCB
select BR2_PACKAGE_XCB_UTIL_IMAGE
select BR2_PACKAGE_XCB_UTIL_KEYSYMS
select BR2_PACKAGE_XCB_UTIL_WM
select BR2_PACKAGE_LIBXKBCOMMON
+ depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11 if BR2_PACKAGE_GPU_VIV_BIN_MX6Q
comment "X.org XCB backend available if X.org is enabled"
depends on !BR2_PACKAGE_XORG7
+comment "X11 backend of gpu-viv-bin-mx6q needed to enable XCB"
+ depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q && !BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11
config BR2_PACKAGE_QT5BASE_EGLFS
bool "eglfs support"
select BR2_PACKAGE_QT5BASE_OPENGL
depends on BR2_PACKAGE_HAS_LIBEGL
depends on BR2_PACKAGE_QT5_GL_AVAILABLE
+ depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB if BR2_PACKAGE_GPU_VIV_BIN_MX6Q
+comment "FB backend of gpu-viv-bin-mx6q needed to enable EGLFS"
+ depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q && !BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB
comment "eglfs backend available if OpenGL and EGL are enabled"
depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT5_GL_AVAILABLE
For sure, it's not very generic, but at least it lets the user know about this dependency, which is not very obvious.
But I am wondering, for the X11 output to work, don't you also need the BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV option ?
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
v4 cover Add Xorg support for iMX6
Quoted 40 lines · On Friday 05 December 2014 23:44:31 Thomas Petazzoni wrote:
Dear J?r?me Pouiller,
Quoted 6 lines · J?r?me Pouiller
It looks like you enabled EGLFS in Qt5. EGLFS need framebuffer version of gpu- viv-bin-mx6q. If you want to use X11, you have to enable xcb in qt5 (as in example in commit log of "07/14 xdriver_xf86-video-imx-viv").
I do not see any simple generic solution to prevent user to choose EGLFS in Qt if X11 backend is selected in gpu-viv-bin-mx6q :-(
Well, we could always imagine something like:
config
BR2_PACKAGE_QT5BASE_XCB
bool "X.org XCB support"
depends onBR2_PACKAGE_XORG7
selectBR2_PACKAGE_XLIB_LIBX11
selectBR2_PACKAGE_LIBXCB
selectBR2_PACKAGE_XCB_UTIL_IMAGE
selectBR2_PACKAGE_XCB_UTIL_KEYSYMS
selectBR2_PACKAGE_XCB_UTIL_WM
selectBR2_PACKAGE_LIBXKBCOMMON(quoted diff) +1
-0+ depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11 if BR2_PACKAGE_GPU_VIV_BIN_MX6Qcomment "X.org XCB backend available if X.org is enabled"
depends on !BR2_PACKAGE_XORG7(quoted diff) +2
-0+comment "X11 backend of gpu-viv-bin-mx6q needed to enable XCB" + depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q && !BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_X11config
BR2_PACKAGE_QT5BASE_EGLFS
bool "eglfs support"
selectBR2_PACKAGE_QT5BASE_OPENGL
depends onBR2_PACKAGE_HAS_LIBEGL
depends onBR2_PACKAGE_QT5_GL_AVAILABLE(quoted diff) +3
-0+ depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB if BR2_PACKAGE_GPU_VIV_BIN_MX6Q +comment "FB backend of gpu-viv-bin-mx6q needed to enable EGLFS" + depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q && !BR2_PACKAGE_GPU_VIV_BIN_MX6Q_OUTPUT_FB
Quoted 8 lines
comment "eglfs backend available if OpenGL and EGL are enabled"
depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT5_GL_AVAILABLEFor sure, it's not very generic, but at least it lets the user know about this dependency, which is not very obvious.
But I am wondering, for the X11 output to work, don't you also need the
BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIVoption ?
Hmmm... I believe Vivante drivers are not the only drivers with this problem. I am not sure mesa3d works with eglfs or RPi works with xcb/GLESv2.
Maybe we should find a more generic way to solve this issue.
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
v4 cover Add Xorg support for iMX6
In reply to Gary BissonDear Gary Bisson,
Quoted 3 lines · Gary Bisson
My understanding of it is to create a demo config like
qmx6_qt5_demo_defconfigwhereas aqmx6_defconfigwould stay minimal but I might be wrong.
That's correct. I believe we want to continue to have minimal defconfig, but we don't mind having bigger "demo" defconfigs. The naming you proposed looks good to me.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com