aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/renderer_vulkan.cpp
diff options
context:
space:
mode:
authorMrPurple666 <antoniosacramento666usa@gmail.com>2025-04-24 02:59:02 -0300
committerMrPurple666 <antoniosacramento666usa@gmail.com>2025-04-28 16:27:42 -0300
commita58799aca725e9afea8da91f5d8cba5954acee6f (patch)
treef493b78b29bfbb524fac63eebd5d456b3975f873 /src/video_core/renderer_vulkan/renderer_vulkan.cpp
parentabc7e71ecd771e2226b41a37b5e16fa12c07959e (diff)
Initial RAII implementation
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp13
1 files changed, 11 insertions, 2 deletions
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<Core::Frontend::GraphicsContext> 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,