From 0e819a64e8779c97637d47038153203dd4eeeb44 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Fri, 20 May 2022 11:27:12 -0400
Subject: [PATCH] vulkan(Windows): verify layer VK_LAYER_KHRONOS_validation
 exists

Add a supplementary check after calling QVulkanInstance::create to
make sure the requested validation layer was created.

Gitlab: #746
Change-Id: Ibe3004fa1a1a38401be8625aaea34e0bef185d0a
---
 src/app/main.cpp | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/app/main.cpp b/src/app/main.cpp
index f886cdb98..bf56278a3 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -119,12 +119,21 @@ main(int argc, char* argv[])
 #if defined(HAS_VULKAN) && !defined(Q_OS_LINUX)
             QVulkanInstance inst;
             inst.setLayers({"VK_LAYER_KHRONOS_validation"});
-            return inst.create();
+            bool ok = inst.create();
+            if (!ok) {
+                qWarning() << "QVulkanInstance cannot be created.";
+                return false;
+            }
+            if (!inst.layers().contains("VK_LAYER_KHRONOS_validation")) {
+                qWarning() << "VK_LAYER_KHRONOS_validation layer is not available.";
+                return false;
+            }
+            return true;
 #else
             return false;
 #endif
         })
-        && qgetenv("WAYLAND_DISPLAY").isEmpty()) {
+        && qEnvironmentVariableIsEmpty("WAYLAND_DISPLAY")) {
         // https://bugreports.qt.io/browse/QTBUG-99684 - Vulkan on
         // Wayland is not really supported as window decorations are
         // removed. So we need to re-implement this (custom controls)
-- 
GitLab