diff options
Diffstat (limited to 'meta-xilinx-mali400/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase')
2 files changed, 141 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(); | ||