diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2017-09-08 16:11:41 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2017-09-19 09:21:59 +0000 |
commit | 6ada5f876ef092d9509d3b76f251747143ef4974 (patch) | |
tree | 3e45d45d7e27f458dab5a2906019523ca7106813 /src | |
parent | c6439a00b135bb1077a6c92908d3e6cc320d487b (diff) |
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 <andy.nichols@qt.io>
Diffstat (limited to 'src')
5 files changed, 17 insertions, 0 deletions
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; |