From df4c20a8634a79ec081fa6a9fd9fe6de52e7d8e8 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Tue, 26 Apr 2022 14:40:35 +0600 Subject: [PATCH 1/4] vulkan: Add HiDPI support --- src/qt/qt_vulkanrenderer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qt/qt_vulkanrenderer.cpp b/src/qt/qt_vulkanrenderer.cpp index e820e3a11..c62154669 100644 --- a/src/qt/qt_vulkanrenderer.cpp +++ b/src/qt/qt_vulkanrenderer.cpp @@ -964,10 +964,10 @@ void VulkanRenderer2::startNextFrame() m_devFuncs->vkCmdBindVertexBuffers(cb, 0, 1, &m_buf, &vbOffset); VkViewport viewport; - viewport.x = destination.x(); - viewport.y = destination.y(); - viewport.width = destination.width(); - viewport.height = destination.height(); + viewport.x = destination.x() * m_window->devicePixelRatio(); + viewport.y = destination.y() * m_window->devicePixelRatio(); + viewport.width = destination.width() * m_window->devicePixelRatio(); + viewport.height = destination.height() * m_window->devicePixelRatio(); viewport.minDepth = 0; viewport.maxDepth = 1; m_devFuncs->vkCmdSetViewport(cb, 0, 1, &viewport); From 1ad7d6518703b234bdb94ff39dcb94f474b59e7c Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Tue, 26 Apr 2022 14:41:13 +0600 Subject: [PATCH 2/4] vulkan: Don't select sRGB formats for swapchain --- src/qt/qt_vulkanwindowrenderer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qt/qt_vulkanwindowrenderer.cpp b/src/qt/qt_vulkanwindowrenderer.cpp index 4563bd349..2904ae5a3 100644 --- a/src/qt/qt_vulkanwindowrenderer.cpp +++ b/src/qt/qt_vulkanwindowrenderer.cpp @@ -808,6 +808,7 @@ VulkanWindowRenderer::VulkanWindowRenderer(QWidget* parent) qDebug() << instance.layers(); setVulkanInstance(&instance); setPhysicalDeviceIndex(0); + setPreferredColorFormats({VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_A8B8G8R8_UNORM_PACK32}); setFlags(Flag::PersistentResources); buf_usage = std::vector(1); buf_usage[0].clear(); From a3880c24dfb2d1010174cef2349a8edf8091aba6 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Tue, 26 Apr 2022 14:45:24 +0600 Subject: [PATCH 3/4] vulkan: Explicitly select Vulkan version --- src/qt/qt_vulkanwindowrenderer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qt/qt_vulkanwindowrenderer.cpp b/src/qt/qt_vulkanwindowrenderer.cpp index 2904ae5a3..bd9f9d66f 100644 --- a/src/qt/qt_vulkanwindowrenderer.cpp +++ b/src/qt/qt_vulkanwindowrenderer.cpp @@ -797,6 +797,7 @@ VulkanWindowRenderer::VulkanWindowRenderer(QWidget* parent) parentWidget = parent; instance.setLayers(QByteArrayList() << "VK_LAYER_KHRONOS_validation"); instance.setExtensions(QByteArrayList() << "VK_EXT_debug_report"); + instance.setApiVersion(QVersionNumber(1, 0)); if (!instance.create()) { throw std::runtime_error("Could not create Vulkan instance"); } From 5eb0e93f5711d23c1692cea8509d6a144aa161ab Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Tue, 26 Apr 2022 16:56:44 +0600 Subject: [PATCH 4/4] qt: Attempt fixing Windows/Super key input --- src/qt/qt_mainwindow.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index d15151039..ac2f18e32 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -1453,6 +1453,10 @@ void MainWindow::keyPressEvent(QKeyEvent* event) { if (send_keyboard_input && !(kbd_req_capture && !mouse_capture && !video_fullscreen)) { + // Windows keys in Qt have one-to-one mapping. + if (event->key() == Qt::Key_Super_L || event->key() == Qt::Key_Super_R) { + keyboard_input(1, event->key() == Qt::Key_Super_L ? 0x15B : 0x15C); + } else #ifdef Q_OS_MACOS processMacKeyboardInput(true, event); #else @@ -1480,6 +1484,9 @@ void MainWindow::keyReleaseEvent(QKeyEvent* event) if (!send_keyboard_input) return; + if (event->key() == Qt::Key_Super_L || event->key() == Qt::Key_Super_R) { + keyboard_input(0, event->key() == Qt::Key_Super_L ? 0x15B : 0x15C); + } else #ifdef Q_OS_MACOS processMacKeyboardInput(false, event); #else