From 6ada5f876ef092d9509d3b76f251747143ef4974 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 8 Sep 2017 16:11:41 +0200 Subject: eglfs: Forward nativeRes.ForInteg.() to backends Expose the fd from eglfs_kms. More exposed bits will follow later on. [ChangeLog][Platform Specific Changes][eglfs] The DRM+GBM backend now exposes the DRM/GBM device handle under the key "dri_fd", queriable via nativeResourceForIntegration(). Task-number: QTBUG-63088 Change-Id: Iac95393c115bb83d1f65cb4a7acc0ea3e7d3e68f Reviewed-by: Andy Nichols --- src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp | 6 ++++++ src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h | 1 + src/plugins/platforms/eglfs/api/qeglfsintegration.cpp | 1 + .../deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp | 8 ++++++++ .../deviceintegration/eglfs_kms_support/qeglfskmsintegration.h | 1 + 5 files changed, 17 insertions(+) diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp index 7b849a2744..7c279a6b77 100644 --- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp @@ -357,6 +357,12 @@ QFunctionPointer QEglFSDeviceIntegration::platformFunction(const QByteArray &fun return nullptr; } +void *QEglFSDeviceIntegration::nativeResourceForIntegration(const QByteArray &name) +{ + Q_UNUSED(name); + return nullptr; +} + void *QEglFSDeviceIntegration::wlDisplay() const { return Q_NULLPTR; diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h index 0614db3dee..d927bc9bc6 100644 --- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h +++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h @@ -104,6 +104,7 @@ public: virtual bool supportsPBuffers() const; virtual bool supportsSurfacelessContexts() const; virtual QFunctionPointer platformFunction(const QByteArray &function) const; + virtual void *nativeResourceForIntegration(const QByteArray &name); virtual void *wlDisplay() const; diff --git a/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp index be8c466a7f..c0ecfd235f 100644 --- a/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp @@ -324,6 +324,7 @@ void *QEglFSIntegration::nativeResourceForIntegration(const QByteArray &resource result = qt_egl_device_integration()->wlDisplay(); break; default: + result = qt_egl_device_integration()->nativeResourceForIntegration(resource); break; } diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp index c77151181e..455a94d0d3 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp @@ -133,6 +133,14 @@ bool QEglFSKmsIntegration::supportsPBuffers() const return m_screenConfig->supportsPBuffers(); } +void *QEglFSKmsIntegration::nativeResourceForIntegration(const QByteArray &name) +{ + if (name == QByteArrayLiteral("dri_fd") && m_device) + return (void *) (qintptr) m_device->fd(); + + return nullptr; +} + QKmsDevice *QEglFSKmsIntegration::device() const { return m_device; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h index 9955616919..26ba2fdaec 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h @@ -69,6 +69,7 @@ public: bool hasCapability(QPlatformIntegration::Capability cap) const override; void waitForVSync(QPlatformSurface *surface) const override; bool supportsPBuffers() const override; + void *nativeResourceForIntegration(const QByteArray &name) override; QKmsDevice *device() const; QKmsScreenConfig *screenConfig() const; -- cgit v1.2.3