summaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorGravatar David2019-09-21 20:09:55 +1000
committerGravatar GitHub2019-09-21 20:09:55 +1000
commit183c445c30ad9fa1f58660ff578ecf1b78e51b25 (patch)
tree045c4a6945449d563ea420fbf5a4916cbde1f8b3 /src/core/core.cpp
parentMerge pull request #2872 from FernandoS27/mem-gpu-opt (diff)
parentAddress review comments (diff)
downloadyuzu-183c445c30ad9fa1f58660ff578ecf1b78e51b25.tar.gz
yuzu-183c445c30ad9fa1f58660ff578ecf1b78e51b25.tar.xz
yuzu-183c445c30ad9fa1f58660ff578ecf1b78e51b25.zip
Merge pull request #2806 from FearlessTobi/port-4882
Port citra-emu/citra#4882: "Add frametime logging for tracking performance over time"
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 3d0978cbf..9ab174de2 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -160,10 +160,6 @@ struct System::Impl {
160 160
161 LOG_DEBUG(Core, "Initialized OK"); 161 LOG_DEBUG(Core, "Initialized OK");
162 162
163 // Reset counters and set time origin to current frame
164 GetAndResetPerfStats();
165 perf_stats.BeginSystemFrame();
166
167 return ResultStatus::Success; 163 return ResultStatus::Success;
168 } 164 }
169 165
@@ -206,6 +202,16 @@ struct System::Impl {
206 main_process->Run(load_parameters->main_thread_priority, 202 main_process->Run(load_parameters->main_thread_priority,
207 load_parameters->main_thread_stack_size); 203 load_parameters->main_thread_stack_size);
208 204
205 u64 title_id{0};
206 if (app_loader->ReadProgramId(title_id) != Loader::ResultStatus::Success) {
207 LOG_ERROR(Core, "Failed to find title id for ROM (Error {})",
208 static_cast<u32>(load_result));
209 }
210 perf_stats = std::make_unique<PerfStats>(title_id);
211 // Reset counters and set time origin to current frame
212 GetAndResetPerfStats();
213 perf_stats->BeginSystemFrame();
214
209 status = ResultStatus::Success; 215 status = ResultStatus::Success;
210 return status; 216 return status;
211 } 217 }
@@ -219,6 +225,8 @@ struct System::Impl {
219 perf_results.game_fps); 225 perf_results.game_fps);
220 telemetry_session->AddField(Telemetry::FieldType::Performance, "Shutdown_Frametime", 226 telemetry_session->AddField(Telemetry::FieldType::Performance, "Shutdown_Frametime",
221 perf_results.frametime * 1000.0); 227 perf_results.frametime * 1000.0);
228 telemetry_session->AddField(Telemetry::FieldType::Performance, "Mean_Frametime_MS",
229 perf_stats->GetMeanFrametime());
222 230
223 is_powered_on = false; 231 is_powered_on = false;
224 232
@@ -229,6 +237,7 @@ struct System::Impl {
229 service_manager.reset(); 237 service_manager.reset();
230 cheat_engine.reset(); 238 cheat_engine.reset();
231 telemetry_session.reset(); 239 telemetry_session.reset();
240 perf_stats.reset();
232 gpu_core.reset(); 241 gpu_core.reset();
233 242
234 // Close all CPU/threading state 243 // Close all CPU/threading state
@@ -286,7 +295,7 @@ struct System::Impl {
286 } 295 }
287 296
288 PerfStatsResults GetAndResetPerfStats() { 297 PerfStatsResults GetAndResetPerfStats() {
289 return perf_stats.GetAndResetStats(core_timing.GetGlobalTimeUs()); 298 return perf_stats->GetAndResetStats(core_timing.GetGlobalTimeUs());
290 } 299 }
291 300
292 Timing::CoreTiming core_timing; 301 Timing::CoreTiming core_timing;
@@ -327,7 +336,7 @@ struct System::Impl {
327 ResultStatus status = ResultStatus::Success; 336 ResultStatus status = ResultStatus::Success;
328 std::string status_details = ""; 337 std::string status_details = "";
329 338
330 Core::PerfStats perf_stats; 339 std::unique_ptr<Core::PerfStats> perf_stats;
331 Core::FrameLimiter frame_limiter; 340 Core::FrameLimiter frame_limiter;
332}; 341};
333 342
@@ -480,11 +489,11 @@ const Timing::CoreTiming& System::CoreTiming() const {
480} 489}
481 490
482Core::PerfStats& System::GetPerfStats() { 491Core::PerfStats& System::GetPerfStats() {
483 return impl->perf_stats; 492 return *impl->perf_stats;
484} 493}
485 494
486const Core::PerfStats& System::GetPerfStats() const { 495const Core::PerfStats& System::GetPerfStats() const {
487 return impl->perf_stats; 496 return *impl->perf_stats;
488} 497}
489 498
490Core::FrameLimiter& System::FrameLimiter() { 499Core::FrameLimiter& System::FrameLimiter() {