aboutsummaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-04-09 14:02:00 -0400
committerLioncash <mathew1800@gmail.com>2019-04-11 22:11:40 -0400
commit6d0551196d90af7f1233c655fd3b979811a14708 (patch)
tree9e91a2a79d5351360efaca57cc49be7801c7faf3 /src/core/core.cpp
parentf2331a804a2fa300d9a7dc0d012e3242b7accdaf (diff)
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.
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp15
1 files changed, 4 insertions, 11 deletions
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 <array>
-#include <map>
#include <memory>
-#include <thread>
#include <utility>
#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<VideoCommon::GPUAsynch>(system, *renderer);
- } else {
- gpu_core = std::make_unique<VideoCommon::GPUSynch>(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;