aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/renderer_vulkan.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp46
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());
}