From a58799aca725e9afea8da91f5d8cba5954acee6f Mon Sep 17 00:00:00 2001 From: MrPurple666 Date: Thu, 24 Apr 2025 02:59:02 -0300 Subject: Initial RAII implementation --- src/video_core/renderer_vulkan/renderer_vulkan.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp') diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index c4fe8235c7..cf7ce0cbbc 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -106,11 +106,20 @@ RendererVulkan::RendererVulkan(Core::Frontend::EmuWindow& emu_window, std::unique_ptr context_) try : RendererBase(emu_window, std::move(context_)), device_memory(device_memory_), gpu(gpu_), library(OpenLibrary(context.get())), + // Create raw Vulkan instance first instance(CreateInstance(*library, dld, VK_API_VERSION_1_1, render_window.GetWindowInfo().type, - Settings::values.renderer_debug.GetValue())), + Settings::values.renderer_debug.GetValue())), + // Now create RAII wrappers for the resources in the correct order + raii_instance(MakeInstance(instance, dld)), + // Create debug messenger if debug is enabled debug_messenger(Settings::values.renderer_debug ? CreateDebugUtilsCallback(instance) - : vk::DebugUtilsMessenger{}), + : vk::DebugUtilsMessenger{}), + raii_debug_messenger(Settings::values.renderer_debug + ? MakeDebugUtilsMessenger(debug_messenger, instance, dld) + : RaiiDebugUtilsMessenger{}), + // Create surface surface(CreateSurface(instance, render_window.GetWindowInfo())), + raii_surface(MakeSurface(surface, instance, dld)), device(CreateDevice(instance, dld, *surface)), memory_allocator(device), state_tracker(), scheduler(device, state_tracker), swapchain(*surface, device, scheduler, render_window.GetFramebufferLayout().width, -- cgit v1.2.3