General: Setup yuzu threads' microprofile, naming and registry.
This commit is contained in:
		| @@ -2,14 +2,14 @@ | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include "core/core_timing.h" | ||||
|  | ||||
| #include <algorithm> | ||||
| #include <mutex> | ||||
| #include <string> | ||||
| #include <tuple> | ||||
|  | ||||
| #include "common/assert.h" | ||||
| #include "common/microprofile.h" | ||||
| #include "core/core_timing.h" | ||||
| #include "core/core_timing_util.h" | ||||
|  | ||||
| namespace Core::Timing { | ||||
| @@ -44,6 +44,7 @@ CoreTiming::~CoreTiming() = default; | ||||
|  | ||||
| void CoreTiming::ThreadEntry(CoreTiming& instance) { | ||||
|     std::string name = "yuzu:HostTiming"; | ||||
|     MicroProfileOnThreadCreate(name.c_str()); | ||||
|     Common::SetCurrentThreadName(name.c_str()); | ||||
|     instance.on_thread_init(); | ||||
|     instance.ThreadLoop(); | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include "common/fiber.h" | ||||
| #include "common/microprofile.h" | ||||
| #include "common/thread.h" | ||||
| #include "core/arm/exclusive_monitor.h" | ||||
| #include "core/core.h" | ||||
| @@ -36,6 +37,7 @@ void CpuManager::Shutdown() { | ||||
|     Pause(false); | ||||
|     for (std::size_t core = 0; core < Core::Hardware::NUM_CPU_CORES; core++) { | ||||
|         core_data[core].host_thread->join(); | ||||
|         core_data[core].host_thread.reset(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -80,7 +82,7 @@ void CpuManager::RunGuestThread() { | ||||
|         auto& physical_core = kernel.CurrentPhysicalCore(); | ||||
|         if (!physical_core.IsInterrupted()) { | ||||
|             physical_core.Idle(); | ||||
|             //physical_core.Run(); | ||||
|             // physical_core.Run(); | ||||
|         } | ||||
|         auto& scheduler = physical_core.Scheduler(); | ||||
|         scheduler.TryDoContextSwitch(); | ||||
| @@ -159,6 +161,7 @@ void CpuManager::RunThread(std::size_t core) { | ||||
|     /// Initialization | ||||
|     system.RegisterCoreThread(core); | ||||
|     std::string name = "yuzu:CoreHostThread_" + std::to_string(core); | ||||
|     MicroProfileOnThreadCreate(name.c_str()); | ||||
|     Common::SetCurrentThreadName(name.c_str()); | ||||
|     auto& data = core_data[core]; | ||||
|     data.enter_barrier = std::make_unique<Common::Event>(); | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|  | ||||
| #include "common/assert.h" | ||||
| #include "common/microprofile.h" | ||||
| #include "common/thread.h" | ||||
| #include "core/core.h" | ||||
| #include "core/frontend/emu_window.h" | ||||
| #include "core/settings.h" | ||||
| @@ -18,7 +19,10 @@ namespace VideoCommon::GPUThread { | ||||
| static void RunThread(Core::System& system, VideoCore::RendererBase& renderer, | ||||
|                       Core::Frontend::GraphicsContext& context, Tegra::DmaPusher& dma_pusher, | ||||
|                       SynchState& state) { | ||||
|     MicroProfileOnThreadCreate("GpuThread"); | ||||
|     std::string name = "yuzu:GPU"; | ||||
|     MicroProfileOnThreadCreate(name.c_str()); | ||||
|     Common::SetCurrentThreadName(name.c_str()); | ||||
|     system.RegisterHostThread(); | ||||
|  | ||||
|     // Wait for first GPU command before acquiring the window context | ||||
|     while (state.queue.Empty()) | ||||
|   | ||||
| @@ -44,7 +44,9 @@ EmuThread::EmuThread() = default; | ||||
| EmuThread::~EmuThread() = default; | ||||
|  | ||||
| void EmuThread::run() { | ||||
|     MicroProfileOnThreadCreate("EmuThread"); | ||||
|     std::string name = "yuzu:EmuControlThread"; | ||||
|     MicroProfileOnThreadCreate(name.c_str()); | ||||
|     Common::SetCurrentThreadName(name.c_str()); | ||||
|  | ||||
|     // Main process has been loaded. Make the context current to this thread and begin GPU and CPU | ||||
|     // execution. | ||||
|   | ||||
| @@ -925,6 +925,8 @@ bool GMainWindow::LoadROM(const QString& filename) { | ||||
|         nullptr,                                     // E-Commerce | ||||
|     }); | ||||
|  | ||||
|     system.RegisterHostThread(); | ||||
|  | ||||
|     const Core::System::ResultStatus result{system.Load(*render_window, filename.toStdString())}; | ||||
|  | ||||
|     const auto drd_callout = | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include <chrono> | ||||
| #include <iostream> | ||||
| #include <memory> | ||||
| #include <string> | ||||
| @@ -237,8 +238,9 @@ int main(int argc, char** argv) { | ||||
|  | ||||
|     std::thread render_thread([&emu_window] { emu_window->Present(); }); | ||||
|     system.Run(); | ||||
|     while (emu_window->IsOpen()) | ||||
|         ; | ||||
|     while (emu_window->IsOpen()) { | ||||
|         std::this_thread::sleep_for(std::chrono::milliseconds(1)); | ||||
|     } | ||||
|     system.Pause(); | ||||
|     render_thread.join(); | ||||
|  | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include <chrono> | ||||
| #include <iostream> | ||||
| #include <memory> | ||||
| #include <string> | ||||
| @@ -256,8 +257,9 @@ int main(int argc, char** argv) { | ||||
|     system.Renderer().Rasterizer().LoadDiskResources(); | ||||
|  | ||||
|     system.Run(); | ||||
|     while (!finished) | ||||
|         ; | ||||
|     while (!finished) { | ||||
|         std::this_thread::sleep_for(std::chrono::milliseconds(1)); | ||||
|     } | ||||
|     system.Pause(); | ||||
|  | ||||
|     detached_tasks.WaitForAllTasks(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user