qt5base: fix "Unable to find an X11 visual" error
authorJérôme Pouiller <jezz@sysmic.org>
Thu, 30 Apr 2015 15:12:24 +0000 (17:12 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 1 May 2015 20:57:19 +0000 (22:57 +0200)
Fix "Unable to find an X11 visual" bug that produce at runtime with Vivante
drivers. Add a conditionnal patch and add variable QT5BASE_EXTRA_CFLAGS in
order to enable workaround.

This patch is actually an improvement over the fix available in Yocto:
https://github.com/Freescale/meta-fsl-arm/blob/dizzy/qt5-layer/recipes-qt/qt5/qtbase/Force_egl_visual_ID_33.patch

[Thomas:
 - Add SoB from Jérôme Pouiller inside the patch imported from Yocto.
 - Add a space between $(TARGET_CFLAGS) and $(QT5BASE_EXTRA_CFLAGS),
   and ditto for CXXFLAGS.
 - Merge the QT5BASE_EXTRA_CFLAGS into an existing
   BR2_PACKAGE_GPU_VIV_BIN_MX6Q conditional.]

Tested-by: Gary Bisson <gary.bisson@boundarydevices.com>
Reviewed-by: Gary Bisson <gary.bisson@boundarydevices.com>
Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/qt5/qt5base/0001-Force_egl_visual_ID_33.patch [new file with mode: 0644]
package/qt5/qt5base/qt5base.mk

diff --git a/package/qt5/qt5base/0001-Force_egl_visual_ID_33.patch b/package/qt5/qt5base/0001-Force_egl_visual_ID_33.patch
new file mode 100644 (file)
index 0000000..c21775f
--- /dev/null
@@ -0,0 +1,27 @@
+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 <otavio@ossystems.com.br>
+Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
+
+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,9 @@
+     }
+     qWarning("Unable to find an X11 visual which matches EGL config %d", configId);
++#ifdef ENABLE_MX6_WORKAROUND
++    return (VisualID)33;
++#else
+     return (VisualID)0;
++#endif
+ }
index 032ebed342955c22641a9151f24847df2c210175..3de824f5424b869707975d553d0345681565d3ab 100644 (file)
@@ -116,6 +116,7 @@ ifeq ($(BR2_PACKAGE_QT5BASE_EGLFS),y)
 QT5BASE_CONFIGURE_OPTS += -eglfs
 QT5BASE_DEPENDENCIES   += libegl
 ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q),y)
+QT5BASE_EXTRA_CFLAGS = -DENABLE_MX6_WORKAROUND
 QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \
        $(@D)/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp
 endif
@@ -187,8 +188,8 @@ define QT5BASE_CONFIGURE_CMDS
                -device buildroot \
                -device-option CROSS_COMPILE="$(TARGET_CROSS)" \
                -device-option BR_CCACHE="$(CCACHE)" \
-               -device-option BR_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \
-               -device-option BR_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \
+               -device-option BR_COMPILER_CFLAGS="$(TARGET_CFLAGS) $(QT5BASE_EXTRA_CFLAGS)" \
+               -device-option BR_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS) $(QT5BASE_EXTRA_CFLAGS)" \
                -device-option EGLFS_PLATFORM_HOOKS_SOURCES="$(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)" \
                $(QT5BASE_CONFIGURE_OPTS) \
        )