summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2020-01-17 15:06:47 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2020-01-22 22:46:51 +0100
commite0e7c42a19316c53fd3ab21133223b5ee788ba38 (patch)
treedeb66ad7fded11f605aac833e88fe63e1b11ce15 /src/plugins/platforms/eglfs/api/qeglfswindow_p.h
parentdd23313d66846022894b56ad25b6c2c0fdb54762 (diff)
Introduce VK_KHR_display support for i.MX8 devices
The eglfs_viv backend has Vulkan support now. While the support code is common (lives in api/vulkan), we will not expose this for any other integration yet, without the appropriate testing. While putting this to eglfs seems unintuitive at first, it turns out that for Vivante in particular this is very useful, since we can rely on the existing framebuffer device infrastructure to solve certain problems (like the lack of vsync) The VK_KHR_display implementation of Vivante currently exhibits all the known issues of the old, fbdev-style EGL plumbing (presumably since it lives on top of that): - No vsync. This can be fixed by setting QT_QPA_EGLFS_FORCEVSYNC. - May need a manual call to fbset to set the correct resolution before launching the Qt app. - And of course it lacks all the multi-screen features provided by drm. - Plus, it seems the swapchain only supports a min/max buffer count of 1. This needs special handling in QRhi since until now we assumed that there was always at least 2 buffers available. [ChangeLog][Platform Specific Changes][Linux] Vulkan is now supported by eglfs (eglfs_viv backend) on i.MX8 devices with the Vivante graphics stack. This is done via VK_KHR_display so no windowing system is required. Task-number: QTBUG-78754 Change-Id: I7530aa026d4b904b9de83f9bdbdc4897ae770e71 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/plugins/platforms/eglfs/api/qeglfswindow_p.h')
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfswindow_p.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/plugins/platforms/eglfs/api/qeglfswindow_p.h b/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
index be2a0630d3..7bf74c25ee 100644
--- a/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
+++ b/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
@@ -64,6 +64,7 @@ QT_BEGIN_NAMESPACE
class QOpenGLCompositorBackingStore;
class QPlatformTextureList;
+
#ifndef QT_NO_OPENGL
class Q_EGLFS_EXPORT QEglFSWindow : public QPlatformWindow, public QOpenGLCompositorWindow
#else
@@ -96,6 +97,9 @@ public:
EGLNativeWindowType eglWindow() const;
EGLSurface surface() const;
QEglFSScreen *screen() const override;
+#if QT_CONFIG(vulkan)
+ virtual void *vulkanSurfacePtr() { return nullptr; }
+#endif
bool hasNativeWindow() const { return m_flags.testFlag(HasNativeWindow); }