summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs/deviceintegration
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2019-07-24 14:22:46 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2019-07-26 11:33:38 +0200
commita2fa624c793e0c571ac2f56d6a4786060d70bc47 (patch)
treef2d7a5e213438a9d26caec3e7356cef1cb4c0164 /src/plugins/platforms/eglfs/deviceintegration
parentfc2ed2361c32f6ab3f89adeb414fa8929f667476 (diff)
Revert "eglfs: Add vsync support when using NVIDIA eglstreams"
This reverts commit df2b76046de4af7a47fa8303d5f261e3c5d120fe. The patches causes high cpu load and it looks like vsync is done by newer NVIDIA drivers out of the box without such a implementation. Change-Id: I41c9cfcf1bbdf7da9b764394e4442768084e9a35 Fixes: QTBUG-74866 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/plugins/platforms/eglfs/deviceintegration')
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp50
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.h2
2 files changed, 0 insertions, 52 deletions
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp
index 2c6b4245b7..3e78196227 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp
@@ -114,20 +114,16 @@ public:
: QEglFSWindow(w)
, m_integration(integration)
, m_egl_stream(EGL_NO_STREAM_KHR)
- , m_framePending(false)
{ }
~QEglFSKmsEglDeviceWindow() { destroy(); }
void invalidateSurface() override;
void resetSurface() override;
- void flip();
- static void pageFlipHandler(int fd, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data);
const QEglFSKmsEglDeviceIntegration *m_integration;
EGLStreamKHR m_egl_stream;
EGLint m_latency;
- bool m_framePending;
};
void QEglFSKmsEglDeviceWindow::invalidateSurface()
@@ -148,9 +144,6 @@ void QEglFSKmsEglDeviceWindow::resetSurface()
streamAttribs[streamAttribCount++] = EGL_STREAM_FIFO_LENGTH_KHR;
streamAttribs[streamAttribCount++] = fifoLength;
}
-
- streamAttribs[streamAttribCount++] = EGL_CONSUMER_AUTO_ACQUIRE_EXT;
- streamAttribs[streamAttribCount++] = EGL_FALSE;
streamAttribs[streamAttribCount++] = EGL_NONE;
m_egl_stream = m_integration->m_funcs->create_stream(display, streamAttribs);
@@ -248,49 +241,6 @@ void QEglFSKmsEglDeviceWindow::resetSurface()
qCDebug(qLcEglfsKmsDebug, "Created stream producer surface %p", m_surface);
}
-void QEglFSKmsEglDeviceWindow::flip()
-{
- EGLDisplay display = screen()->display();
-
- EGLAttrib acquire_attribs[3] = { EGL_NONE };
-
- acquire_attribs[0] = EGL_DRM_FLIP_EVENT_DATA_NV;
- acquire_attribs[1] = (EGLAttrib)this;
- acquire_attribs[2] = EGL_NONE;
-
- if (m_egl_stream != EGL_NO_STREAM_KHR)
- if (!m_integration->m_funcs->acquire_stream_attrib_nv(display, m_egl_stream, acquire_attribs))
- qWarning("eglStreamConsumerAcquireAttribNV failed: eglError: %x", eglGetError());
-
- m_framePending = true;
-
- while (m_framePending) {
- drmEventContext drmEvent;
- memset(&drmEvent, 0, sizeof(drmEvent));
- drmEvent.version = 3;
- drmEvent.vblank_handler = nullptr;
- drmEvent.page_flip_handler = pageFlipHandler;
- drmHandleEvent(m_integration->m_device->fd(), &drmEvent);
- }
-}
-
-void QEglFSKmsEglDeviceWindow::pageFlipHandler(int fd, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)
-{
- Q_UNUSED(fd);
- Q_UNUSED(sequence);
- Q_UNUSED(tv_sec);
- Q_UNUSED(tv_usec);
-
- QEglFSKmsEglDeviceWindow *window = static_cast<QEglFSKmsEglDeviceWindow*>(user_data);
- window->m_framePending = false;
-}
-
-void QEglFSKmsEglDeviceIntegration::presentBuffer(QPlatformSurface *surface)
-{
- QEglFSKmsEglDeviceWindow *eglWindow = static_cast<QEglFSKmsEglDeviceWindow*>(surface);
- eglWindow->flip();
-}
-
QEglFSWindow *QEglFSKmsEglDeviceIntegration::createWindow(QWindow *window) const
{
QEglFSKmsEglDeviceWindow *eglWindow = new QEglFSKmsEglDeviceWindow(window, this);
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.h
index a5697ec831..5819d82ebf 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.h
@@ -62,8 +62,6 @@ public:
bool supportsPBuffers() const override;
QEglFSWindow *createWindow(QWindow *window) const override;
- void presentBuffer(QPlatformSurface *surface) override;
-
EGLDeviceEXT eglDevice() const { return m_egl_device; }
protected: