diff options
Diffstat (limited to 'src/core/core.cpp')
| -rw-r--r-- | src/core/core.cpp | 25 |
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 | ||
| 482 | Core::PerfStats& System::GetPerfStats() { | 491 | Core::PerfStats& System::GetPerfStats() { |
| 483 | return impl->perf_stats; | 492 | return *impl->perf_stats; |
| 484 | } | 493 | } |
| 485 | 494 | ||
| 486 | const Core::PerfStats& System::GetPerfStats() const { | 495 | const Core::PerfStats& System::GetPerfStats() const { |
| 487 | return impl->perf_stats; | 496 | return *impl->perf_stats; |
| 488 | } | 497 | } |
| 489 | 498 | ||
| 490 | Core::FrameLimiter& System::FrameLimiter() { | 499 | Core::FrameLimiter& System::FrameLimiter() { |