diff --git a/rpcs3/Emu/RSX/VK/VKAsyncScheduler.cpp b/rpcs3/Emu/RSX/VK/VKAsyncScheduler.cpp index 5f08968fd6..6e06490582 100644 --- a/rpcs3/Emu/RSX/VK/VKAsyncScheduler.cpp +++ b/rpcs3/Emu/RSX/VK/VKAsyncScheduler.cpp @@ -12,6 +12,14 @@ namespace vk { void AsyncTaskScheduler::operator()() { + if (g_cfg.video.renderer != video_renderer::vulkan || !g_cfg.video.vk.asynchronous_texture_streaming) + { + // Invalid renderer combination, do not proceed. This should never happen. + // NOTE: If managed by fxo, this object may be created automatically on boot. + rsx_log.notice("Vulkan async streaming is disabled. This thread will now exit."); + return; + } + init_config_options(); if (!m_use_host_scheduler) { diff --git a/rpcs3/Emu/RSX/VK/VKAsyncScheduler.h b/rpcs3/Emu/RSX/VK/VKAsyncScheduler.h index 73d6d223ae..b85370d959 100644 --- a/rpcs3/Emu/RSX/VK/VKAsyncScheduler.h +++ b/rpcs3/Emu/RSX/VK/VKAsyncScheduler.h @@ -73,7 +73,7 @@ namespace vk void insert_sync_event(); public: - AsyncTaskScheduler() = default; + AsyncTaskScheduler(const std::string_view& name) : thread_name(name) {} // This ctor stops default initialization by fxo ~AsyncTaskScheduler(); command_buffer* get_current(); @@ -86,7 +86,7 @@ namespace vk // Thread entry-point void operator()(); - static constexpr auto thread_name = "Vulkan Async Scheduler"sv; + const std::string_view thread_name; }; using async_scheduler_thread = named_thread; diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index 62bf8ddb8a..26f7f511db 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -592,7 +592,7 @@ VKGSRender::VKGSRender() : GSRender() if (backend_config.supports_asynchronous_compute) { // Run only if async compute can be used. - g_fxo->init(); + g_fxo->init("Vulkan Async Scheduler"sv); } } }