Use g_fxo for rsx::thread

This commit is contained in:
Nekotekina 2019-09-26 18:32:31 +03:00
parent b48cdc2260
commit 5f9c5e8765
8 changed files with 42 additions and 35 deletions

View file

@ -116,17 +116,33 @@ EmuCallbacks main_application::CreateCallbacks()
g_fxo->init<pad_thread>(get_thread(), m_game_window, title_id);
};
callbacks.get_gs_render = []() -> std::shared_ptr<GSRender>
callbacks.init_gs_render = []()
{
switch (video_renderer type = g_cfg.video.renderer)
{
case video_renderer::null: return std::make_shared<named_thread<NullGSRender>>("rsx::thread");
case video_renderer::opengl: return std::make_shared<named_thread<GLGSRender>>("rsx::thread");
case video_renderer::null:
{
g_fxo->init<rsx::thread, named_thread<NullGSRender>>();
break;
}
case video_renderer::opengl:
{
g_fxo->init<rsx::thread, named_thread<GLGSRender>>();
break;
}
#if defined(_WIN32) || defined(HAVE_VULKAN)
case video_renderer::vulkan: return std::make_shared<named_thread<VKGSRender>>("rsx::thread");
case video_renderer::vulkan:
{
g_fxo->init<rsx::thread, named_thread<VKGSRender>>();
break;
}
#endif
#ifdef _MSC_VER
case video_renderer::dx12: return std::make_shared<named_thread<D3D12GSRender>>("rsx::thread");
case video_renderer::dx12:
{
g_fxo->init<rsx::thread, named_thread<D3D12GSRender>>();
break;
}
#endif
default: fmt::throw_exception("Invalid video renderer: %s" HERE, type);
}