1From 329c2a748739ddd5d025a44c1c69b11b5257c370 Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Thu, 14 Mar 2019 20:28:34 +0800
4Subject: [PATCH 12/28] eglfs_kms: Support EGL platform display
5
6Conflicts:
7    src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp
8
9Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
10Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
11---
12 .../eglfs/api/qeglfsdeviceintegration.cpp      | 18 +++++++++++++++++-
13 1 file changed, 17 insertions(+), 1 deletion(-)
14
15diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
16index b985386a..a9a9521f 100644
17--- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
18+++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
19@@ -192,7 +192,23 @@ EGLNativeDisplayType QEglFSDeviceIntegration::platformDisplay() const
20
21 EGLDisplay QEglFSDeviceIntegration::createDisplay(EGLNativeDisplayType nativeDisplay)
22 {
23-    return eglGetDisplay(nativeDisplay);
24+    EGLDisplay display;
25+
26+    PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
27+        reinterpret_cast<PFNEGLGETPLATFORMDISPLAYEXTPROC>(eglGetProcAddress("eglGetPlatformDisplayEXT"));
28+
29+    if (get_platform_display) {
30+        display = get_platform_display(EGL_PLATFORM_GBM_KHR,
31+                                       nativeDisplay, Q_NULLPTR);
32+    } else {
33+        qWarning("EGL_EXT_platform_device not available, falling back to legacy path!");
34+        display = eglGetDisplay(nativeDisplay);
35+    }
36+
37+    if (Q_UNLIKELY(display == EGL_NO_DISPLAY))
38+        qFatal("Could not get EGL display");
39+
40+    return display;
41 }
42
43 bool QEglFSDeviceIntegration::usesDefaultScreen()
44--
452.20.1
46
47