diff options
Diffstat (limited to 'meta-xilinx-mali400/dynamic-layers/qt5-layer')
11 files changed, 336 insertions, 0 deletions
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0002-egl_kms-Modify-the-default-color-format-to-RGB565.patch b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0002-egl_kms-Modify-the-default-color-format-to-RGB565.patch new file mode 100644 index 00000000..363edd4d --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0002-egl_kms-Modify-the-default-color-format-to-RGB565.patch | |||
@@ -0,0 +1,110 @@ | |||
1 | From f791102afb7c65601042b697a9d85c4f4fce5dab Mon Sep 17 00:00:00 2001 | ||
2 | From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
3 | Date: Tue, 19 Nov 2019 13:45:58 -0800 | ||
4 | Subject: [PATCH] egl_kms: Modify the default color format to RGB565 | ||
5 | |||
6 | DP supports RGB565 hence modify the default color format to RGB565. | ||
7 | |||
8 | Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
9 | Upstream-Status: Inappropriate [Xilinx specific] | ||
10 | |||
11 | --- | ||
12 | .../kmsconvenience/qkmsdevice.cpp | 4 ++-- | ||
13 | .../eglfs_kms/qeglfskmsgbmcursor.cpp | 6 +++--- | ||
14 | .../eglfs_kms/qeglfskmsgbmintegration.cpp | 2 +- | ||
15 | .../eglfs_kms_support/qeglfskmsintegration.cpp | 16 +++++++++++++--- | ||
16 | 4 files changed, 19 insertions(+), 9 deletions(-) | ||
17 | |||
18 | diff --git a/src/platformsupport/kmsconvenience/qkmsdevice.cpp b/src/platformsupport/kmsconvenience/qkmsdevice.cpp | ||
19 | index 8cd7f9b368..657b3d553e 100644 | ||
20 | --- a/src/platformsupport/kmsconvenience/qkmsdevice.cpp | ||
21 | +++ b/src/platformsupport/kmsconvenience/qkmsdevice.cpp | ||
22 | @@ -369,7 +369,7 @@ QPlatformScreen *QKmsDevice::createScreenForConnector(drmModeResPtr resources, | ||
23 | uint32_t drmFormat; | ||
24 | bool drmFormatExplicit = true; | ||
25 | if (formatStr.isEmpty()) { | ||
26 | - drmFormat = DRM_FORMAT_XRGB8888; | ||
27 | + drmFormat = DRM_FORMAT_RGB565; | ||
28 | drmFormatExplicit = false; | ||
29 | } else if (formatStr == "xrgb8888") { | ||
30 | drmFormat = DRM_FORMAT_XRGB8888; | ||
31 | @@ -393,7 +393,7 @@ QPlatformScreen *QKmsDevice::createScreenForConnector(drmModeResPtr resources, | ||
32 | drmFormat = DRM_FORMAT_ABGR2101010; | ||
33 | } else { | ||
34 | qWarning("Invalid pixel format \"%s\" for output %s", formatStr.constData(), connectorName.constData()); | ||
35 | - drmFormat = DRM_FORMAT_XRGB8888; | ||
36 | + drmFormat = DRM_FORMAT_RGB565; | ||
37 | drmFormatExplicit = false; | ||
38 | } | ||
39 | qCDebug(qLcKmsDebug) << "Format is" << Qt::hex << drmFormat << Qt::dec << "requested_by_user =" << drmFormatExplicit | ||
40 | diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp | ||
41 | index 612eec4ce0..39073a42c2 100644 | ||
42 | --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp | ||
43 | +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp | ||
44 | @@ -87,7 +87,7 @@ QEglFSKmsGbmCursor::QEglFSKmsGbmCursor(QEglFSKmsGbmScreen *screen) | ||
45 | } | ||
46 | |||
47 | m_bo = gbm_bo_create(static_cast<QEglFSKmsGbmDevice *>(m_screen->device())->gbmDevice(), m_cursorSize.width(), m_cursorSize.height(), | ||
48 | - GBM_FORMAT_ARGB8888, GBM_BO_USE_CURSOR_64X64 | GBM_BO_USE_WRITE); | ||
49 | + DRM_FORMAT_RGB565, GBM_BO_USE_CURSOR_64X64 | GBM_BO_USE_WRITE); | ||
50 | if (!m_bo) { | ||
51 | qWarning("Could not create buffer for cursor!"); | ||
52 | } else { | ||
53 | @@ -197,7 +197,7 @@ void QEglFSKmsGbmCursor::changeCursor(QCursor *windowCursor, QWindow *window) | ||
54 | if (m_cursorImage.image()->width() > m_cursorSize.width() || m_cursorImage.image()->height() > m_cursorSize.height()) | ||
55 | qWarning("Cursor larger than %dx%d, cursor will be clipped.", m_cursorSize.width(), m_cursorSize.height()); | ||
56 | |||
57 | - QImage cursorImage(m_cursorSize, QImage::Format_ARGB32); | ||
58 | + QImage cursorImage(m_cursorSize, QImage::Format_RGB16); | ||
59 | cursorImage.fill(Qt::transparent); | ||
60 | |||
61 | QPainter painter; | ||
62 | @@ -302,7 +302,7 @@ void QEglFSKmsGbmCursor::initCursorAtlas() | ||
63 | m_cursorAtlas.hotSpots << hotSpot; | ||
64 | } | ||
65 | |||
66 | - QImage image = QImage(atlas).convertToFormat(QImage::Format_ARGB32); | ||
67 | + QImage image = QImage(atlas).convertToFormat(QImage::Format_RGB16); | ||
68 | m_cursorAtlas.cursorWidth = image.width() / m_cursorAtlas.cursorsPerRow; | ||
69 | m_cursorAtlas.cursorHeight = image.height() / ((Qt::LastCursor + cursorsPerRow) / cursorsPerRow); | ||
70 | m_cursorAtlas.width = image.width(); | ||
71 | diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp | ||
72 | index caa1187b40..b8f129212c 100644 | ||
73 | --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp | ||
74 | +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp | ||
75 | @@ -96,7 +96,7 @@ EGLNativeWindowType QEglFSKmsGbmIntegration::createNativeOffscreenWindow(const Q | ||
76 | |||
77 | gbm_surface *surface = gbm_surface_create(static_cast<QEglFSKmsGbmDevice *>(device())->gbmDevice(), | ||
78 | 1, 1, | ||
79 | - GBM_FORMAT_XRGB8888, | ||
80 | + DRM_FORMAT_RGB565, | ||
81 | GBM_BO_USE_RENDERING); | ||
82 | |||
83 | return reinterpret_cast<EGLNativeWindowType>(surface); | ||
84 | diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp | ||
85 | index 28b6b7df63..91dd092311 100644 | ||
86 | --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp | ||
87 | +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp | ||
88 | @@ -102,9 +102,19 @@ QSurfaceFormat QEglFSKmsIntegration::surfaceFormatFor(const QSurfaceFormat &inpu | ||
89 | QSurfaceFormat format(inputFormat); | ||
90 | format.setRenderableType(QSurfaceFormat::OpenGLES); | ||
91 | format.setSwapBehavior(QSurfaceFormat::DoubleBuffer); | ||
92 | - format.setRedBufferSize(8); | ||
93 | - format.setGreenBufferSize(8); | ||
94 | - format.setBlueBufferSize(8); | ||
95 | + | ||
96 | + static const bool force888 = qEnvironmentVariableIntValue("QT_QPA_EGLFS_FORCE888"); | ||
97 | + if (force888){ | ||
98 | + format.setRedBufferSize(8); | ||
99 | + format.setGreenBufferSize(8); | ||
100 | + format.setBlueBufferSize(8); | ||
101 | + } | ||
102 | + else{ | ||
103 | + format.setRedBufferSize(5); | ||
104 | + format.setGreenBufferSize(6); | ||
105 | + format.setBlueBufferSize(5); | ||
106 | + } | ||
107 | + | ||
108 | return format; | ||
109 | } | ||
110 | |||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0003-qkmsdevice.cpp-Disable-hw-cursor-as-a-default-option.patch b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0003-qkmsdevice.cpp-Disable-hw-cursor-as-a-default-option.patch new file mode 100644 index 00000000..8a357d3d --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0003-qkmsdevice.cpp-Disable-hw-cursor-as-a-default-option.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From b8bdd78fc2836f7ecb8777c3bd99fc2d48dfeda4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
3 | Date: Fri, 8 Mar 2019 16:23:29 -0800 | ||
4 | Subject: [PATCH] qkmsdevice.cpp: Disable hw cursor as a default option. | ||
5 | |||
6 | Zynqmp does not support hardware cursor, hence disable it as a default | ||
7 | choice and enable pbuffer. | ||
8 | |||
9 | Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
10 | Upstream-Status: Inappropriate [Xilinx specific] | ||
11 | |||
12 | --- | ||
13 | src/platformsupport/kmsconvenience/qkmsdevice.cpp | 4 ++-- | ||
14 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/src/platformsupport/kmsconvenience/qkmsdevice.cpp b/src/platformsupport/kmsconvenience/qkmsdevice.cpp | ||
17 | index 657b3d553e..64aafb2247 100644 | ||
18 | --- a/src/platformsupport/kmsconvenience/qkmsdevice.cpp | ||
19 | +++ b/src/platformsupport/kmsconvenience/qkmsdevice.cpp | ||
20 | @@ -1028,9 +1028,9 @@ QKmsScreenConfig *QKmsDevice::screenConfig() const | ||
21 | |||
22 | QKmsScreenConfig::QKmsScreenConfig() | ||
23 | : m_headless(false) | ||
24 | - , m_hwCursor(true) | ||
25 | + , m_hwCursor(false) | ||
26 | , m_separateScreens(false) | ||
27 | - , m_pbuffers(false) | ||
28 | + , m_pbuffers(true) | ||
29 | , m_virtualDesktopLayout(VirtualDesktopLayoutHorizontal) | ||
30 | { | ||
31 | loadConfig(); | ||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend new file mode 100644 index 00000000..2e80a4c8 --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend | |||
@@ -0,0 +1,41 @@ | |||
1 | FILESEXTRAPATHS:prepend := "${THISDIR}/qtbase:" | ||
2 | |||
3 | SRC_URI:append = " \ | ||
4 | file://0002-egl_kms-Modify-the-default-color-format-to-RGB565.patch \ | ||
5 | file://0003-qkmsdevice.cpp-Disable-hw-cursor-as-a-default-option.patch \ | ||
6 | " | ||
7 | |||
8 | PACKAGECONFIG:append = " \ | ||
9 | examples accessibility tools libinput fontconfig \ | ||
10 | ${@bb.utils.contains('DISTRO_FEATURES', 'fbdev', 'linuxfb gles2 eglfs', '', d)} \ | ||
11 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gles2 eglfs', '', d)} \ | ||
12 | ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gles2 eglfs kms gbm', '', d)} \ | ||
13 | " | ||
14 | |||
15 | PACKAGECONFIG:remove = "tests" | ||
16 | |||
17 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
18 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
19 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
20 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
21 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
22 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | ||
23 | |||
24 | # There is some sort of parallel make install failure | ||
25 | # Makefile:144: recipe for target 'sub-dbus-install_subtargets' failed | ||
26 | # make[1]: *** [sub-dbus-install_subtargets] Error 2 | ||
27 | PARALLEL_MAKEINST = "-j 1" | ||
28 | |||
29 | EXTRA_OEMAKE:task-install = " \ | ||
30 | MAKEFLAGS='${PARALLEL_MAKEINST}' \ | ||
31 | OE_QMAKE_CC='${OE_QMAKE_CC}' \ | ||
32 | OE_QMAKE_CXX='${OE_QMAKE_CXX}' \ | ||
33 | OE_QMAKE_CFLAGS='${OE_QMAKE_CFLAGS}' \ | ||
34 | OE_QMAKE_CXXFLAGS='${OE_QMAKE_CXXFLAGS}' \ | ||
35 | OE_QMAKE_LINK='${OE_QMAKE_LINK}' \ | ||
36 | OE_QMAKE_LDFLAGS='${OE_QMAKE_LDFLAGS}' \ | ||
37 | OE_QMAKE_AR='${OE_QMAKE_AR}' \ | ||
38 | OE_QMAKE_OBJCOPY='${OE_QMAKE_OBJCOPY}' \ | ||
39 | OE_QMAKE_STRIP='${OE_QMAKE_STRIP}' \ | ||
40 | OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ | ||
41 | " | ||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend new file mode 100644 index 00000000..1e329fbd --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend | |||
@@ -0,0 +1,7 @@ | |||
1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'gstreamer1.0-plugins-base', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | ||
7 | # Note: gstreamer1.0-plugins-base has a dependency on opengl, which infects directly linking to it | ||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0001-Fix-regression-in-QWaylandGlContext-makeCurrent-for-.patch b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0001-Fix-regression-in-QWaylandGlContext-makeCurrent-for-.patch new file mode 100644 index 00000000..09ad1b5b --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0001-Fix-regression-in-QWaylandGlContext-makeCurrent-for-.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From eb44571eab0036a9a1bcd7c423f0187abcbf7a37 Mon Sep 17 00:00:00 2001 | ||
2 | From: Johan Klokkhammer Helsing <johan.helsing@qt.io> | ||
3 | Date: Thu, 30 Aug 2018 09:31:33 +0200 | ||
4 | Subject: [PATCH] Fix regression in QWaylandGlContext::makeCurrent for | ||
5 | offscreen surfaces | ||
6 | |||
7 | [ChangeLog][QPA plugin] Fixed a bug where offscreen surfaces would get | ||
8 | surfaceless EGL contexts. | ||
9 | |||
10 | Fixes a regression in in bf09c7a1. | ||
11 | |||
12 | The call, window->updateSurface(window->isExposed()), is problematic because | ||
13 | offscreen textures are never exposed, and consequently, eglSurface will be | ||
14 | EGL_NO_SURFACE, which will then create a surfaceless context in the call: | ||
15 | |||
16 | eglMakeCurrent(m_eglDisplay, eglSurface, eglSurface, m_context) | ||
17 | |||
18 | This reverts to the old behavior of always trying to create an EGL surface, | ||
19 | unless the window doesn't have a valid wl_surface, in which case it doesn't | ||
20 | make sense (which is what bf09c7a1 fixed, QTBUG-65553). | ||
21 | |||
22 | Task-number: QTBUG-70242 | ||
23 | Task-number: QTBUG-68605 | ||
24 | Task-number: QTBUG-67601 | ||
25 | Change-Id: I44b07bb8bf4b33c73c6379a1de8e9e5cfd220b51 | ||
26 | |||
27 | Signed-off-by: Johan Helsing <johan.helsing@qt.io> | ||
28 | Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
29 | Upstream-Status: Backport | ||
30 | --- | ||
31 | src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp | 9 ++++++--- | ||
32 | src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp | 2 +- | ||
33 | 2 files changed, 7 insertions(+), 4 deletions(-) | ||
34 | |||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0001-qwaylandwindow.cpp-Do-not-destroy-shell-suface-befor.patch b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0001-qwaylandwindow.cpp-Do-not-destroy-shell-suface-befor.patch new file mode 100644 index 00000000..8f81ffcf --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0001-qwaylandwindow.cpp-Do-not-destroy-shell-suface-befor.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From 30f5d53244ef4173544413124f319af272235cfd Mon Sep 17 00:00:00 2001 | ||
2 | From: Madhurkiran Harikrishnan <madhurki@xilinx.com> | ||
3 | Date: Wed, 16 May 2018 17:16:53 -0700 | ||
4 | Subject: [PATCH 1/3] qwaylandwindow.cpp: Do not destroy shell suface before | ||
5 | eglDestroySurface | ||
6 | |||
7 | The call to reset results in a race condition resulting in destruction | ||
8 | of shell surface before the eglSurface thereby crashing libwayland-client. | ||
9 | |||
10 | Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com> | ||
11 | Upstream-Status: Pending | ||
12 | --- | ||
13 | src/client/qwaylandwindow.cpp | 2 -- | ||
14 | 1 file changed, 2 deletions(-) | ||
15 | |||
16 | diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp | ||
17 | index 6d7c088..94c89a3 100644 | ||
18 | --- a/src/client/qwaylandwindow.cpp | ||
19 | +++ b/src/client/qwaylandwindow.cpp | ||
20 | @@ -385,8 +385,6 @@ void QWaylandWindow::setVisible(bool visible) | ||
21 | QWindowSystemInterface::flushWindowSystemEvents(); | ||
22 | if (!deleteGuard.isNull() && window()->type() == Qt::Popup) | ||
23 | closePopups(this); | ||
24 | - if (!deleteGuard.isNull()) | ||
25 | - reset(); | ||
26 | } | ||
27 | } | ||
28 | |||
29 | -- | ||
30 | 2.7.4 | ||
31 | |||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0002-Handle-maximize-minimize-fullscreen-in-xdg_shell_v6.patch b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0002-Handle-maximize-minimize-fullscreen-in-xdg_shell_v6.patch new file mode 100644 index 00000000..52db5ac2 --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0002-Handle-maximize-minimize-fullscreen-in-xdg_shell_v6.patch | |||
@@ -0,0 +1,20 @@ | |||
1 | From 75ac221b9d78d97c121b984ffc633c8cdbe3a92d Mon Sep 17 00:00:00 2001 | ||
2 | From: Giulio Camuffo <giulio.camuffo@kdab.com> | ||
3 | Date: Mon, 7 May 2018 17:40:57 -0700 | ||
4 | Subject: [PATCH 2/3] Handle maximize/minimize/fullscreen in xdg_shell_v6 | ||
5 | |||
6 | [ChangeLog][QPA plugin] Implement support for maximization, minimization | ||
7 | and fullscreen with xdg-shell unstable v6. | ||
8 | |||
9 | Task-number: QTBUG-63417 | ||
10 | Task-number: QTBUG-63748 | ||
11 | Change-Id: I385eb3279d91f1c38d2f5d46bc63b324f0456ca4 | ||
12 | |||
13 | signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com> | ||
14 | Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com> | ||
15 | Upstream-Status: Backport | ||
16 | --- | ||
17 | src/client/qwaylandxdgshellv6.cpp | 22 ++++++++++++++++++++++ | ||
18 | src/client/qwaylandxdgshellv6_p.h | 4 ++++ | ||
19 | 2 files changed, 26 insertions(+) | ||
20 | |||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0003-qwaylandeglwindow.cpp-Bind-the-context-before-callin.patch b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0003-qwaylandeglwindow.cpp-Bind-the-context-before-callin.patch new file mode 100644 index 00000000..c29edab4 --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland/0003-qwaylandeglwindow.cpp-Bind-the-context-before-callin.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From 7067fce80a6e863532a86a5aeb9d6f53e538b387 Mon Sep 17 00:00:00 2001 | ||
2 | From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
3 | Date: Wed, 5 Sep 2018 14:08:16 -0700 | ||
4 | Subject: [PATCH 3/3] qwaylandeglwindow.cpp: Bind the context before calling | ||
5 | eglDestroySurface | ||
6 | |||
7 | Call eglMakeCurrent to bind the context to the current rendering thread | ||
8 | before calling eglDestroySurface to avoid a crash caused by the post | ||
9 | processing activity of GPU driver. | ||
10 | |||
11 | Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> | ||
12 | Upstream-Status: Pending | ||
13 | --- | ||
14 | src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp | 2 ++ | ||
15 | 1 file changed, 2 insertions(+) | ||
16 | |||
17 | diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp | ||
18 | index 6b5c532..77cc433 100644 | ||
19 | --- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp | ||
20 | +++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp | ||
21 | @@ -171,6 +171,8 @@ void QWaylandEglWindow::doInvalidateSurface() | ||
22 | void QWaylandEglWindow::invalidateSurface() | ||
23 | { | ||
24 | if (m_eglSurface) { | ||
25 | + eglMakeCurrent(m_clientBufferIntegration->eglDisplay(), EGL_NO_SURFACE, | ||
26 | + EGL_NO_SURFACE, EGL_NO_CONTEXT); | ||
27 | eglDestroySurface(m_clientBufferIntegration->eglDisplay(), m_eglSurface); | ||
28 | m_eglSurface = 0; | ||
29 | } | ||
30 | -- | ||
31 | 2.7.4 | ||
32 | |||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend new file mode 100644 index 00000000..b51451a0 --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend | |||
@@ -0,0 +1,21 @@ | |||
1 | FILESEXTRAPATHS:prepend := "${THISDIR}/qtwayland:" | ||
2 | # file://0001-qwaylandwindow.cpp-Do-not-destroy-shell-suface-befor.patch | ||
3 | # file://0002-Handle-maximize-minimize-fullscreen-in-xdg_shell_v6.patch | ||
4 | SRC_URI:append = " \ | ||
5 | file://0003-qwaylandeglwindow.cpp-Bind-the-context-before-callin.patch \ | ||
6 | " | ||
7 | # file://0001-Fix-regression-in-QWaylandGlContext-makeCurrent-for-.patch | ||
8 | |||
9 | PACKAGECONFIG = " \ | ||
10 | wayland-client \ | ||
11 | wayland-server \ | ||
12 | wayland-egl \ | ||
13 | wayland-drm-egl-server-buffer \ | ||
14 | " | ||
15 | |||
16 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
17 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
18 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
19 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
20 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
21 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | ||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend new file mode 100644 index 00000000..973608d3 --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend | |||
@@ -0,0 +1 @@ | |||
PACKAGECONFIG:append = " ffmpeg opus" | |||
diff --git a/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebkit_%.bbappend b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebkit_%.bbappend new file mode 100644 index 00000000..0997181a --- /dev/null +++ b/meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebkit_%.bbappend | |||
@@ -0,0 +1,8 @@ | |||
1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'qtmultimedia', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | ||
7 | # Note: qtmultimedia has a dependency on gstreamer1.0-plugins-base, which has a dependency on opengl, which infects directly linking to it | ||
8 | |||