From c7a93c4f520f0dd21e993223a1a4d4bfba45973c Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Tue, 18 Jul 2023 22:38:08 -0700 Subject: [PATCH] Warn on failed surface creation for vulkan Vulkan can technically work just fine without presenting to the user, so consider these failed window procedures as "warnings" during iteration. --- include/renderer_vk/renderer_vk.hpp | 2 ++ src/core/renderer_vk/renderer_vk.cpp | 9 ++++++--- src/emulator.cpp | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/renderer_vk/renderer_vk.hpp b/include/renderer_vk/renderer_vk.hpp index 36ad17b3..0e98213c 100644 --- a/include/renderer_vk/renderer_vk.hpp +++ b/include/renderer_vk/renderer_vk.hpp @@ -8,6 +8,8 @@ class RendererVK final : public Renderer { vk::PhysicalDevice physicalDevice = {}; vk::UniqueDevice device = {}; + vk::UniqueSurfaceKHR surface = {}; + vk::UniqueDebugUtilsMessengerEXT debugMessenger; public: diff --git a/src/core/renderer_vk/renderer_vk.cpp b/src/core/renderer_vk/renderer_vk.cpp index c3c642e3..304ab73b 100644 --- a/src/core/renderer_vk/renderer_vk.cpp +++ b/src/core/renderer_vk/renderer_vk.cpp @@ -35,7 +35,7 @@ void RendererVK::initGraphicsContext(SDL_Window* window) { #if defined(__APPLE__) VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME, #endif - VK_EXT_DEBUG_UTILS_EXTENSION_NAME, + VK_EXT_DEBUG_UTILS_EXTENSION_NAME, }); #if defined(__APPLE__) @@ -131,8 +131,11 @@ void RendererVK::initGraphicsContext(SDL_Window* window) { // Initialize device-specific function pointers VULKAN_HPP_DEFAULT_DISPATCHER.init(device.get()); - VkSurfaceKHR surface; - SDL_Vulkan_CreateSurface(window, instance.get(), &surface); + if (VkSurfaceKHR newSurface; SDL_Vulkan_CreateSurface(window, instance.get(), &newSurface)) { + surface.reset(newSurface); + } else { + Helpers::warn("Error creating Vulkan surface"); + } } void RendererVK::clearBuffer(u32 startAddress, u32 endAddress, u32 value, u32 control) {} diff --git a/src/emulator.cpp b/src/emulator.cpp index 26780852..438f4b52 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -57,7 +57,7 @@ Emulator::Emulator() window = SDL_CreateWindow("Alber", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_VULKAN); if (window == nullptr) { - // Helpers::panic("Window creation failed: %s", SDL_GetError()); + Helpers::warn("Window creation failed: %s", SDL_GetError()); } } #endif