summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2021-02-06 18:47:41 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2021-02-08 13:01:22 +0100
commitfaebfdea1b64727aa34ea3ae602a8eeeb668e0c8 (patch)
treee2f964d1f63bfdf4074f649b7251a8802af1ef19 /src/plugins/platforms/eglfs
parentd8c771c53acb58cc79cadbb795d59d5e8db7754e (diff)
Long live VK_KHR_display platform plugin!
Experiment with this once again, this time in a more forward looking manner: move the code previously placed into eglfs's eglfs_viv backend into its own plugin. Move our attention to devices like the Raspberry Pi 4, where VK_KHR_display has recently been introduced to the Mesa v3dv backend. This is not in Mesa 20.3.3, the latest release at the time of writing, but is available and functional when building master. This serves as the reference system for testing the plugin, because it looks like a fairly robust implementation. The sole thing the plugin enables at the moment is creating a QVulkanInstance and a QWindow with surfaceType VulkanSurface. This is sufficient to run plain QWindow+QRhi (with QRhi::Vulkan), Qt Quick, and Qt Quick 3D (with QSG_RHI_BACKEND=vulkan) applications. One display and mode is chosen, by default the first in the enumeration lists reported by the Vulkan extension. This can be overridden with QT_VK_DISPLAY_INDEX and QT_VK_MODE_INDEX (modeled after QT_VK_PHYSICAL_DEVICE_INDEX). The indices can be determined based on the logs printed to the debug output. Changing the mode seems to be working nicely with v3dv. Multiple screen setups, where there would be more than one VkDisplayKHR enumerated, have not been tested yet. Regardless, multiple screens (reporting more than one QScreen, with a different QWindow on each, eglfs style) are not currently supported. This may be improved later (while keeping in mind that VK_KHR_display does not have a fully-featured output management API). Multiple (non-fullscreen) windows and especially raster windows (QWidget) are not and will not be supported. Our single QWindow is always forced to fullscreen. When it comes to input, the level of support should match linuxfb and eglfs. Note that while mouse input is fully functional, there is no mouse cursor. (and this is unlikely to be implemented) [ChangeLog][Platform Specific Changes][Embedded Linux] Introduced a vkkhrdisplay platform plugin to run Vulkan-based applications in fullscreen, without a windowing system, on systems where VK_KHR_display and VK_KHR_display_swapchain are supported by the Vulkan implementation. Change-Id: I6388416f7fb2bfdc4b412a0a4971f25cc05d4668 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/plugins/platforms/eglfs')
-rw-r--r--src/plugins/platforms/eglfs/CMakeLists.txt5
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp8
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h4
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsintegration.cpp13
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsintegration_p.h3
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfswindow_p.h3
-rw-r--r--src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance.cpp280
-rw-r--r--src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance_p.h88
-rw-r--r--src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow.cpp75
-rw-r--r--src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow_p.h74
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp21
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h6
12 files changed, 0 insertions, 580 deletions
diff --git a/src/plugins/platforms/eglfs/CMakeLists.txt b/src/plugins/platforms/eglfs/CMakeLists.txt
index 4333a04df5..25223d5d3b 100644
--- a/src/plugins/platforms/eglfs/CMakeLists.txt
+++ b/src/plugins/platforms/eglfs/CMakeLists.txt
@@ -90,11 +90,6 @@ if(QT_FEATURE_cursor)
)
endif()
-qt_internal_extend_target(EglFSDeviceIntegration CONDITION QT_FEATURE_vulkan
- SOURCES
- api/vulkan/qeglfsvulkaninstance.cpp api/vulkan/qeglfsvulkaninstance_p.h
- api/vulkan/qeglfsvulkanwindow.cpp api/vulkan/qeglfsvulkanwindow_p.h
-)
#####################################################################
## QEglFSIntegrationPlugin Plugin:
#####################################################################
diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
index 3ef30f1fa9..813de2fc47 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
@@ -376,14 +376,6 @@ void *QEglFSDeviceIntegration::wlDisplay() const
return nullptr;
}
-#if QT_CONFIG(vulkan)
-QPlatformVulkanInstance *QEglFSDeviceIntegration::createPlatformVulkanInstance(QVulkanInstance *instance)
-{
- Q_UNUSED(instance);
- return nullptr;
-}
-#endif
-
EGLConfig QEglFSDeviceIntegration::chooseConfig(EGLDisplay display, const QSurfaceFormat &format)
{
class Chooser : public QEglConfigChooser {
diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h
index 29efb75137..f8c0d6c508 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h
+++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h
@@ -108,10 +108,6 @@ public:
virtual void *nativeResourceForScreen(const QByteArray &resource, QScreen *screen);
virtual void *wlDisplay() const;
-#if QT_CONFIG(vulkan)
- virtual QPlatformVulkanInstance *createPlatformVulkanInstance(QVulkanInstance *instance);
-#endif
-
static EGLConfig chooseConfig(EGLDisplay display, const QSurfaceFormat &format);
};
diff --git a/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
index a2dd426ad6..33b57353fc 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
@@ -241,13 +241,6 @@ QPlatformOffscreenSurface *QEglFSIntegration::createPlatformOffscreenSurface(QOf
}
#endif // QT_NO_OPENGL
-#if QT_CONFIG(vulkan)
-QPlatformVulkanInstance *QEglFSIntegration::createPlatformVulkanInstance(QVulkanInstance *instance) const
-{
- return qt_egl_device_integration()->createPlatformVulkanInstance(instance);
-}
-#endif
-
bool QEglFSIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
// We assume that devices will have more and not less capabilities
@@ -367,12 +360,6 @@ void *QEglFSIntegration::nativeResourceForWindow(const QByteArray &resource, QWi
if (window && window->handle())
result = reinterpret_cast<void*>(static_cast<QEglFSWindow *>(window->handle())->surface());
break;
-#if QT_CONFIG(vulkan)
- case VkSurface:
- if (window && window->handle() && window->surfaceType() == QSurface::VulkanSurface)
- result = static_cast<QEglFSWindow *>(window->handle())->vulkanSurfacePtr();
- break;
-#endif
default:
break;
}
diff --git a/src/plugins/platforms/eglfs/api/qeglfsintegration_p.h b/src/plugins/platforms/eglfs/api/qeglfsintegration_p.h
index bba1f2843f..f08ea73641 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsintegration_p.h
+++ b/src/plugins/platforms/eglfs/api/qeglfsintegration_p.h
@@ -97,9 +97,6 @@ public:
QOpenGLContext *createOpenGLContext(EGLContext context, EGLDisplay display, QOpenGLContext *shareContext) const override;
QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const override;
#endif
-#if QT_CONFIG(vulkan)
- QPlatformVulkanInstance *createPlatformVulkanInstance(QVulkanInstance *instance) const override;
-#endif
bool hasCapability(QPlatformIntegration::Capability cap) const override;
QPlatformNativeInterface *nativeInterface() const override;
diff --git a/src/plugins/platforms/eglfs/api/qeglfswindow_p.h b/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
index 130b87eef7..6b34071d1a 100644
--- a/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
+++ b/src/plugins/platforms/eglfs/api/qeglfswindow_p.h
@@ -97,9 +97,6 @@ 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); }
diff --git a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance.cpp b/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance.cpp
deleted file mode 100644
index a75251ca5f..0000000000
--- a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance.cpp
+++ /dev/null
@@ -1,280 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qeglfsvulkaninstance_p.h"
-#include "qeglfswindow_p.h"
-#include "qeglfshooks_p.h"
-#include <QLoggingCategory>
-
-QT_BEGIN_NAMESPACE
-
-Q_DECLARE_LOGGING_CATEGORY(qLcEglDevDebug)
-
-QEglFSVulkanInstance::QEglFSVulkanInstance(QVulkanInstance *instance)
- : m_instance(instance)
-{
- loadVulkanLibrary(QStringLiteral("vulkan"));
-}
-
-void QEglFSVulkanInstance::createOrAdoptInstance()
-{
- qCDebug(qLcEglDevDebug, "Creating Vulkan instance for VK_KHR_display");
-
- const QByteArray extName = QByteArrayLiteral("VK_KHR_display");
- initInstance(m_instance, { extName });
- if (!m_vkInst)
- return;
- if (!enabledExtensions().contains(extName)) {
- qWarning("Failed to enable VK_KHR_display extension");
- return;
- }
-
-#if VK_KHR_display
- m_getPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)
- m_vkGetInstanceProcAddr(m_vkInst, "vkGetPhysicalDeviceDisplayPropertiesKHR");
- m_getDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)
- m_vkGetInstanceProcAddr(m_vkInst, "vkGetDisplayModePropertiesKHR");
- m_getPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)
- m_vkGetInstanceProcAddr(m_vkInst, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
-
- m_getDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)
- m_vkGetInstanceProcAddr(m_vkInst, "vkGetDisplayPlaneSupportedDisplaysKHR");
- m_getDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)
- m_vkGetInstanceProcAddr(m_vkInst, "vkGetDisplayPlaneCapabilitiesKHR");
-
- m_createDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)
- m_vkGetInstanceProcAddr(m_vkInst, "vkCreateDisplayPlaneSurfaceKHR");
-#endif
-
- m_enumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)
- m_vkGetInstanceProcAddr(m_vkInst, "vkEnumeratePhysicalDevices");
-
- // Use for first physical device, unless overridden by QT_VK_PHYSICAL_DEVICE_INDEX.
- // This behavior matches what the Vulkan backend of QRhi would do.
-
- uint32_t physDevCount = 0;
- m_enumeratePhysicalDevices(m_vkInst, &physDevCount, nullptr);
- if (!physDevCount) {
- qWarning("No physical devices");
- return;
- }
- QVarLengthArray<VkPhysicalDevice, 4> physDevs(physDevCount);
- VkResult err = m_enumeratePhysicalDevices(m_vkInst, &physDevCount, physDevs.data());
- if (err != VK_SUCCESS || !physDevCount) {
- qWarning("Failed to enumerate physical devices: %d", err);
- return;
- }
-
- if (qEnvironmentVariableIsSet("QT_VK_PHYSICAL_DEVICE_INDEX")) {
- int requestedPhysDevIndex = qEnvironmentVariableIntValue("QT_VK_PHYSICAL_DEVICE_INDEX");
- if (requestedPhysDevIndex >= 0 && uint32_t(requestedPhysDevIndex) < physDevCount)
- m_physDev = physDevs[requestedPhysDevIndex];
- }
-
- if (m_physDev == VK_NULL_HANDLE)
- m_physDev = physDevs[0];
-}
-
-bool QEglFSVulkanInstance::supportsPresent(VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- QWindow *window)
-{
- Q_UNUSED(physicalDevice);
- Q_UNUSED(queueFamilyIndex);
- Q_UNUSED(window);
- return true;
-}
-
-VkSurfaceKHR QEglFSVulkanInstance::createSurface(QEglFSWindow *window)
-{
-#if VK_KHR_display
- qCDebug(qLcEglDevDebug, "Creating VkSurfaceKHR via VK_KHR_display for window %p", (void *) window);
-
- if (!m_physDev) {
- qWarning("No physical device, cannot create surface");
- return VK_NULL_HANDLE;
- }
-
- uint32_t displayCount = 0;
- VkResult err = m_getPhysicalDeviceDisplayPropertiesKHR(m_physDev, &displayCount, nullptr);
- if (err != VK_SUCCESS) {
- qWarning("Failed to get display properties: %d", err);
- return VK_NULL_HANDLE;
- }
-
- qCDebug(qLcEglDevDebug, "Display count: %u", displayCount);
-
- QVarLengthArray<VkDisplayPropertiesKHR, 4> displayProps(displayCount);
- m_getPhysicalDeviceDisplayPropertiesKHR(m_physDev, &displayCount, displayProps.data());
-
- VkDisplayKHR display = VK_NULL_HANDLE;
- VkDisplayModeKHR displayMode = VK_NULL_HANDLE;
- uint32_t width = 0;
- uint32_t height = 0;
-
- for (uint32_t i = 0; i < displayCount; ++i) {
- const VkDisplayPropertiesKHR &disp(displayProps[i]);
- qCDebug(qLcEglDevDebug, "Display #%u:\n display: %p\n name: %s\n dimensions: %ux%u\n resolution: %ux%u",
- i, (void *) disp.display, disp.displayName,
- disp.physicalDimensions.width, disp.physicalDimensions.height,
- disp.physicalResolution.width, disp.physicalResolution.height);
-
- // Just pick the first display and the first mode.
- if (i == 0)
- display = disp.display;
-
- uint32_t modeCount = 0;
- if (m_getDisplayModePropertiesKHR(m_physDev, disp.display, &modeCount, nullptr) != VK_SUCCESS) {
- qWarning("Failed to get modes for display");
- continue;
- }
- QVarLengthArray<VkDisplayModePropertiesKHR, 16> modeProps(modeCount);
- m_getDisplayModePropertiesKHR(m_physDev, disp.display, &modeCount, modeProps.data());
- for (uint32_t j = 0; j < modeCount; ++j) {
- const VkDisplayModePropertiesKHR &mode(modeProps[j]);
- qCDebug(qLcEglDevDebug, " Mode #%u:\n mode: %p\n visibleRegion: %ux%u\n refreshRate: %u",
- j, (void *) mode.displayMode,
- mode.parameters.visibleRegion.width, mode.parameters.visibleRegion.height,
- mode.parameters.refreshRate);
- if (j == 0) {
- displayMode = mode.displayMode;
- width = mode.parameters.visibleRegion.width;
- height = mode.parameters.visibleRegion.height;
- }
- }
- }
-
- if (display == VK_NULL_HANDLE || displayMode == VK_NULL_HANDLE) {
- qWarning("Failed to choose display and mode");
- return VK_NULL_HANDLE;
- }
- uint32_t planeCount = 0;
- err = m_getPhysicalDeviceDisplayPlanePropertiesKHR(m_physDev, &planeCount, nullptr);
- if (err != VK_SUCCESS) {
- qWarning("Failed to get plane properties: %d", err);
- return VK_NULL_HANDLE;
- }
-
- qCDebug(qLcEglDevDebug, "Plane count: %u", planeCount);
-
- QVarLengthArray<VkDisplayPlanePropertiesKHR, 4> planeProps(planeCount);
- m_getPhysicalDeviceDisplayPlanePropertiesKHR(m_physDev, &planeCount, planeProps.data());
-
- uint32_t planeIndex = UINT_MAX;
- for (uint32_t i = 0; i < planeCount; ++i) {
- uint32_t supportedDisplayCount = 0;
- err = m_getDisplayPlaneSupportedDisplaysKHR(m_physDev, i, &supportedDisplayCount, nullptr);
- if (err != VK_SUCCESS) {
- qWarning("Failed to query supported displays for plane: %d", err);
- return VK_NULL_HANDLE;
- }
-
- QVarLengthArray<VkDisplayKHR, 4> supportedDisplays(supportedDisplayCount);
- m_getDisplayPlaneSupportedDisplaysKHR(m_physDev, i, &supportedDisplayCount, supportedDisplays.data());
- qCDebug(qLcEglDevDebug, "Plane #%u supports %u displays, currently bound to display %p",
- i, supportedDisplayCount, (void *) planeProps[i].currentDisplay);
-
- VkDisplayPlaneCapabilitiesKHR caps;
- err = m_getDisplayPlaneCapabilitiesKHR(m_physDev, displayMode, i, &caps);
- if (err != VK_SUCCESS) {
- qWarning("Failed to query plane capabilities: %d", err);
- return VK_NULL_HANDLE;
- }
-
- qCDebug(qLcEglDevDebug, " supportedAlpha: %d (1=no, 2=global, 4=per pixel, 8=per pixel premul)\n"
- " minSrc=%d, %d %ux%u\n"
- " maxSrc=%d, %d %ux%u\n"
- " minDst=%d, %d %ux%u\n"
- " maxDst=%d, %d %ux%u",
- int(caps.supportedAlpha),
- caps.minSrcPosition.x, caps.minSrcPosition.y, caps.minSrcExtent.width, caps.minSrcExtent.height,
- caps.maxSrcPosition.x, caps.maxSrcPosition.y, caps.maxSrcExtent.width, caps.maxSrcExtent.height,
- caps.minDstPosition.x, caps.minDstPosition.y, caps.minDstExtent.width, caps.minDstExtent.height,
- caps.maxDstPosition.x, caps.maxDstPosition.y, caps.maxDstExtent.width, caps.maxDstExtent.height);
-
- // if the plane is not in use and supports our chosen display, use that plane
- if (supportedDisplays.contains(display)
- && (planeProps[i].currentDisplay == VK_NULL_HANDLE || planeProps[i].currentDisplay == display))
- {
- planeIndex = i;
- }
- }
-
- if (planeIndex == UINT_MAX) {
- qWarning("Failed to find a suitable plane");
- return VK_NULL_HANDLE;
- }
-
- qCDebug(qLcEglDevDebug, "Using plane #%u", planeIndex);
-
- VkDisplaySurfaceCreateInfoKHR surfaceCreateInfo = {};
- surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
- surfaceCreateInfo.displayMode = displayMode;
- surfaceCreateInfo.planeIndex = planeIndex;
- surfaceCreateInfo.planeStackIndex = planeProps[planeIndex].currentStackIndex;
- surfaceCreateInfo.transform = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR;
- surfaceCreateInfo.globalAlpha = 1.0f;
- surfaceCreateInfo.alphaMode = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR;
- surfaceCreateInfo.imageExtent = { width, height };
-
- VkSurfaceKHR surface = VK_NULL_HANDLE;
- err = m_createDisplayPlaneSurfaceKHR(m_vkInst, &surfaceCreateInfo, nullptr, &surface);
- if (err != VK_SUCCESS || surface == VK_NULL_HANDLE) {
- qWarning("Failed to create surface: %d", err);
- return VK_NULL_HANDLE;
- }
-
- qCDebug(qLcEglDevDebug, "Created surface %p", (void *) surface);
-
- return surface;
-
-#else
- Q_UNUSED(window);
- qWarning("VK_KHR_display support was not compiled in, cannot create surface");
- return VK_NULL_HANDLE;
-#endif
-}
-
-void QEglFSVulkanInstance::presentAboutToBeQueued(QWindow *window)
-{
- // support QT_QPA_EGLFS_FORCEVSYNC (i.MX8 with eglfs_viv)
- qt_egl_device_integration()->waitForVSync(window->handle());
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance_p.h b/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance_p.h
deleted file mode 100644
index 7715cc37c0..0000000000
--- a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance_p.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QEGLFSVULKANINSTANCE_H
-#define QEGLFSVULKANINSTANCE_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qeglfsglobal_p.h"
-#include <QtGui/private/qbasicvulkanplatforminstance_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QEglFSWindow;
-
-class Q_EGLFS_EXPORT QEglFSVulkanInstance : public QBasicPlatformVulkanInstance
-{
-public:
- QEglFSVulkanInstance(QVulkanInstance *instance);
-
- void createOrAdoptInstance() override;
- bool supportsPresent(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, QWindow *window) override;
- void presentAboutToBeQueued(QWindow *window) override;
-
- VkSurfaceKHR createSurface(QEglFSWindow *window);
-
-private:
- QVulkanInstance *m_instance;
- VkPhysicalDevice m_physDev = VK_NULL_HANDLE;
- PFN_vkEnumeratePhysicalDevices m_enumeratePhysicalDevices = nullptr;
-#if VK_KHR_display
- PFN_vkGetPhysicalDeviceDisplayPropertiesKHR m_getPhysicalDeviceDisplayPropertiesKHR = nullptr;
- PFN_vkGetDisplayModePropertiesKHR m_getDisplayModePropertiesKHR = nullptr;
- PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR m_getPhysicalDeviceDisplayPlanePropertiesKHR = nullptr;
- PFN_vkGetDisplayPlaneSupportedDisplaysKHR m_getDisplayPlaneSupportedDisplaysKHR = nullptr;
- PFN_vkGetDisplayPlaneCapabilitiesKHR m_getDisplayPlaneCapabilitiesKHR = nullptr;
- PFN_vkCreateDisplayPlaneSurfaceKHR m_createDisplayPlaneSurfaceKHR = nullptr;
-#endif
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow.cpp b/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow.cpp
deleted file mode 100644
index ae41ca00b6..0000000000
--- a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qeglfsvulkanwindow_p.h"
-
-QT_BEGIN_NAMESPACE
-
-QEglFSVulkanWindow::QEglFSVulkanWindow(QWindow *window)
- : QEglFSWindow(window),
- m_surface(VK_NULL_HANDLE)
-{
-}
-
-QEglFSVulkanWindow::~QEglFSVulkanWindow()
-{
- if (m_surface) {
- QVulkanInstance *inst = window()->vulkanInstance();
- if (inst)
- static_cast<QEglFSVulkanInstance *>(inst->handle())->destroySurface(m_surface);
- }
-}
-
-void *QEglFSVulkanWindow::vulkanSurfacePtr()
-{
- if (m_surface)
- return &m_surface;
-
- QVulkanInstance *inst = window()->vulkanInstance();
- if (!inst) {
- qWarning("Attempted to create Vulkan surface without an instance; was QWindow::setVulkanInstance() called?");
- return nullptr;
- }
- QEglFSVulkanInstance *eglfsInst = static_cast<QEglFSVulkanInstance *>(inst->handle());
- m_surface = eglfsInst->createSurface(this);
-
- return &m_surface;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow_p.h b/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow_p.h
deleted file mode 100644
index 492fb41ca4..0000000000
--- a/src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow_p.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QEGLFSVULKANWINDOW_H
-#define QEGLFSVULKANWINDOW_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qeglfsglobal_p.h"
-#include "qeglfswindow_p.h"
-#include "qeglfsvulkaninstance_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class Q_EGLFS_EXPORT QEglFSVulkanWindow : public QEglFSWindow
-{
-public:
- QEglFSVulkanWindow(QWindow *window);
- ~QEglFSVulkanWindow();
-
- void *vulkanSurfacePtr() override;
-
-private:
- VkSurfaceKHR m_surface;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp
index 2daf277d71..0f6e36caf7 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp
@@ -41,11 +41,6 @@
#include <EGL/eglvivante.h>
#include <QDebug>
-#if QT_CONFIG(vulkan)
-#include "private/qeglfsvulkaninstance_p.h"
-#include "private/qeglfsvulkanwindow_p.h"
-#endif
-
#ifdef Q_OS_INTEGRITY
extern "C" void VivanteInit(void);
#endif
@@ -102,20 +97,4 @@ void QEglFSVivIntegration::destroyNativeWindow(EGLNativeWindowType window)
fbDestroyWindow(window);
}
-#if QT_CONFIG(vulkan)
-
-QEglFSWindow *QEglFSVivIntegration::createWindow(QWindow *window) const
-{
- if (window->surfaceType() == QSurface::VulkanSurface)
- return new QEglFSVulkanWindow(window);
- return QEglFSDeviceIntegration::createWindow(window);
-}
-
-QPlatformVulkanInstance *QEglFSVivIntegration::createPlatformVulkanInstance(QVulkanInstance *instance)
-{
- return new QEglFSVulkanInstance(instance);
-}
-
-#endif // vulkan
-
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h
index 02b59c16b5..4d1718afcf 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h
@@ -53,12 +53,6 @@ public:
void destroyNativeWindow(EGLNativeWindowType window) override;
EGLNativeDisplayType platformDisplay() const override;
- // Vulkan support with VK_KHR_display
-#if QT_CONFIG(vulkan)
- QEglFSWindow *createWindow(QWindow *window) const override;
- QPlatformVulkanInstance *createPlatformVulkanInstance(QVulkanInstance *instance) override;
-#endif
-
private:
QSize mScreenSize;
EGLNativeDisplayType mNativeDisplay;