From c35fe6d319635610fb73150aeb9b5e2296daa349 Mon Sep 17 00:00:00 2001 From: Jeffy Chen Date: Thu, 14 Mar 2019 20:28:34 +0800 Subject: [PATCH 16/31] eglfs_kms: Support EGL platform display Conflicts: src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp Signed-off-by: Jeffy Chen Signed-off-by: Ziyuan Xu --- .../eglfs/api/qeglfsdeviceintegration.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp index b985386a..a9a9521f 100644 --- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp @@ -192,7 +192,23 @@ EGLNativeDisplayType QEglFSDeviceIntegration::platformDisplay() const EGLDisplay QEglFSDeviceIntegration::createDisplay(EGLNativeDisplayType nativeDisplay) { - return eglGetDisplay(nativeDisplay); + EGLDisplay display; + + PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = + reinterpret_cast(eglGetProcAddress("eglGetPlatformDisplayEXT")); + + if (get_platform_display) { + display = get_platform_display(EGL_PLATFORM_GBM_KHR, + nativeDisplay, Q_NULLPTR); + } else { + qWarning("EGL_EXT_platform_device not available, falling back to legacy path!"); + display = eglGetDisplay(nativeDisplay); + } + + if (Q_UNLIKELY(display == EGL_NO_DISPLAY)) + qFatal("Could not get EGL display"); + + return display; } bool QEglFSDeviceIntegration::usesDefaultScreen() -- 2.20.1