diff options
| author | PavelBARABANOV <pavelbarabanov@noreply.localhost> | 2025-07-03 16:35:02 +0000 |
|---|---|---|
| committer | PavelBARABANOV <pavelbarabanov@noreply.localhost> | 2025-07-03 16:35:02 +0000 |
| commit | 5d4c6e085d04fd8ecf31613af757841913f3f3cb (patch) | |
| tree | 4489560619c53ae7501fbcd32002f91bf9514159 /src/video_core/renderer_vulkan/renderer_vulkan.cpp | |
| parent | a002730d68e0d700c80d11d7083d14dbc5df0977 (diff) | |
[vk, frontend] RAII Toggle (#247)
Co-authored-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/247
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
| -rw-r--r-- | src/video_core/renderer_vulkan/renderer_vulkan.cpp | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index ae88dfbddb..a91fba6725 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -110,27 +110,18 @@ try , device_memory(device_memory_) , gpu(gpu_) , library(OpenLibrary(context.get())) - , + , dld() // Create raw Vulkan instance first - instance(CreateInstance(*library, + , instance(CreateInstance(*library, dld, VK_API_VERSION_1_1, render_window.GetWindowInfo().type, Settings::values.renderer_debug.GetValue())) - , - // Now create RAII wrappers for the resources in the correct order - managed_instance(MakeManagedInstance(instance, dld)) - , // Create debug messenger if debug is enabled - debug_messenger(Settings::values.renderer_debug ? CreateDebugUtilsCallback(instance) + , debug_messenger(Settings::values.renderer_debug ? CreateDebugUtilsCallback(instance) : vk::DebugUtilsMessenger{}) - , managed_debug_messenger(Settings::values.renderer_debug - ? MakeManagedDebugUtilsMessenger(debug_messenger, instance, dld) - : ManagedDebugUtilsMessenger{}) - , // Create surface - surface(CreateSurface(instance, render_window.GetWindowInfo())) - , managed_surface(MakeManagedSurface(surface, instance, dld)) + , surface(CreateSurface(instance, render_window.GetWindowInfo())) , device(CreateDevice(instance, dld, *surface)) , memory_allocator(device) , state_tracker() @@ -138,8 +129,8 @@ try , swapchain(*surface, device, scheduler, - render_window.GetFramebufferLayout().width, - render_window.GetFramebufferLayout().height) + render_window.GetFramebufferLayout().width, + render_window.GetFramebufferLayout().height) , present_manager(instance, render_window, device, @@ -171,23 +162,22 @@ try present_manager, scheduler, PresentFiltersForAppletCapture) - , rasterizer(render_window, gpu, device_memory, device, memory_allocator, state_tracker, scheduler) - , applet_frame() { + , rasterizer(render_window, gpu, device_memory, device, memory_allocator, state_tracker, scheduler) { + + // Initialize RAII wrappers after creating the main objects + if (Settings::values.enable_raii.GetValue()) { + managed_instance = MakeManagedInstance(instance, dld); + if (Settings::values.renderer_debug) { + managed_debug_messenger = MakeManagedDebugUtilsMessenger(debug_messenger, instance, dld); + } + managed_surface = MakeManagedSurface(surface, instance, dld); + } if (Settings::values.renderer_force_max_clock.GetValue() && device.ShouldBoostClocks()) { turbo_mode.emplace(instance, dld); scheduler.RegisterOnSubmit([this] { turbo_mode->QueueSubmitted(); }); } -#ifndef ANDROID - // Release ownership from the old instance and surface - instance.release(); - surface.release(); - if (Settings::values.renderer_debug) { - debug_messenger.release(); - } -#endif - Report(); } catch (const vk::Exception& exception) { LOG_ERROR(Render_Vulkan, "Vulkan initialization failed with error: {}", exception.what()); @@ -223,12 +213,12 @@ class BooleanSetting { BooleanSetting BooleanSetting::FRAME_INTERPOLATION(false); // extern "C" JNIEXPORT jboolean JNICALL -// Java_org_uzuy_uzuy_1emu_features_settings_model_BooleanSetting_isFrameSkippingEnabled(JNIEnv* env, jobject /* this */) { +// Java_org_yuzu_yuzu_1emu_features_settings_model_BooleanSetting_isFrameSkippingEnabled(JNIEnv* env, jobject /* this */) { // return static_cast<jboolean>(BooleanSetting::FRAME_SKIPPING.getBoolean()); // } extern "C" JNIEXPORT jboolean JNICALL - Java_org_uzuy_uzuy_1emu_features_settings_model_BooleanSetting_isFrameInterpolationEnabled(JNIEnv* env, jobject /* this */) { + Java_org_yuzu_yuzu_1emu_features_settings_model_BooleanSetting_isFrameInterpolationEnabled(JNIEnv* env, jobject /* this */) { return static_cast<jboolean>(BooleanSetting::FRAME_INTERPOLATION.getBoolean()); } |
