From e0962940a2e70b8fa4a4ccc50aab12845a41f881 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Apr 2019 14:02:00 -0400 Subject: video_core/gpu: Create threads separately from initialization Like with CPU emulation, we generally don't want to fire off the threads immediately after the relevant classes are initialized, we want to do this after all necessary data is done loading first. This splits the thread creation into its own interface member function to allow controlling when these threads in particular get created. --- src/core/core.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'src/core/core.cpp') diff --git a/src/core/core.cpp b/src/core/core.cpp index 2b8ec3ca79..eb300eef73 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -3,9 +3,7 @@ // Refer to the license.txt file included. #include -#include #include -#include #include #include "common/file_util.h" @@ -38,8 +36,6 @@ #include "frontend/applets/software_keyboard.h" #include "frontend/applets/web_browser.h" #include "video_core/debug_utils/debug_utils.h" -#include "video_core/gpu_asynch.h" -#include "video_core/gpu_synch.h" #include "video_core/renderer_base.h" #include "video_core/video_core.h" @@ -135,13 +131,9 @@ struct System::Impl { return ResultStatus::ErrorVideoCore; } - is_powered_on = true; + gpu_core = VideoCore::CreateGPU(system); - if (Settings::values.use_asynchronous_gpu_emulation) { - gpu_core = std::make_unique(system, *renderer); - } else { - gpu_core = std::make_unique(system, *renderer); - } + is_powered_on = true; LOG_DEBUG(Core, "Initialized OK"); @@ -188,7 +180,8 @@ struct System::Impl { } // Main process has been loaded and been made current. - // Begin CPU execution. + // Begin GPU and CPU execution. + gpu_core->Start(); cpu_core_manager.StartThreads(); status = ResultStatus::Success; -- cgit v1.2.3