diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic.cpp | 1 | ||||
| -rw-r--r-- | src/core/core.cpp | 19 | ||||
| -rw-r--r-- | src/core/core.h | 56 | ||||
| -rw-r--r-- | src/core/file_sys/savedata_factory.cpp | 1 | ||||
| -rw-r--r-- | src/core/file_sys/savedata_factory.h | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/address_arbiter.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_session.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 3 | ||||
| -rw-r--r-- | src/core/hle/service/filesystem/filesystem.h | 1 | ||||
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/elf.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 1 | ||||
| -rw-r--r-- | src/core/perf_stats.cpp | 4 | ||||
| -rw-r--r-- | src/core/perf_stats.h | 24 | ||||
| -rw-r--r-- | src/core/telemetry_session.cpp | 1 |
18 files changed, 85 insertions, 43 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index f96e08212..de44ccebd 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include "common/logging/log.h" | 9 | #include "common/logging/log.h" |
| 10 | #include "core/arm/dynarmic/arm_dynarmic.h" | 10 | #include "core/arm/dynarmic/arm_dynarmic.h" |
| 11 | #include "core/core.h" | 11 | #include "core/core.h" |
| 12 | #include "core/core_cpu.h" | ||
| 12 | #include "core/core_timing.h" | 13 | #include "core/core_timing.h" |
| 13 | #include "core/hle/kernel/process.h" | 14 | #include "core/hle/kernel/process.h" |
| 14 | #include "core/hle/kernel/svc.h" | 15 | #include "core/hle/kernel/svc.h" |
diff --git a/src/core/core.cpp b/src/core/core.cpp index 75c259068..2cfae18df 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -2,24 +2,35 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <array> | ||
| 6 | #include <map> | ||
| 5 | #include <memory> | 7 | #include <memory> |
| 8 | #include <thread> | ||
| 6 | #include <utility> | 9 | #include <utility> |
| 10 | |||
| 7 | #include "common/logging/log.h" | 11 | #include "common/logging/log.h" |
| 8 | #include "common/string_util.h" | 12 | #include "common/string_util.h" |
| 13 | #include "core/arm/exclusive_monitor.h" | ||
| 9 | #include "core/core.h" | 14 | #include "core/core.h" |
| 15 | #include "core/core_cpu.h" | ||
| 10 | #include "core/core_timing.h" | 16 | #include "core/core_timing.h" |
| 11 | #include "core/gdbstub/gdbstub.h" | 17 | #include "core/gdbstub/gdbstub.h" |
| 12 | #include "core/hle/kernel/client_port.h" | 18 | #include "core/hle/kernel/client_port.h" |
| 13 | #include "core/hle/kernel/kernel.h" | 19 | #include "core/hle/kernel/kernel.h" |
| 14 | #include "core/hle/kernel/process.h" | 20 | #include "core/hle/kernel/process.h" |
| 21 | #include "core/hle/kernel/scheduler.h" | ||
| 15 | #include "core/hle/kernel/thread.h" | 22 | #include "core/hle/kernel/thread.h" |
| 16 | #include "core/hle/service/service.h" | 23 | #include "core/hle/service/service.h" |
| 17 | #include "core/hle/service/sm/controller.h" | 24 | #include "core/hle/service/sm/controller.h" |
| 18 | #include "core/hle/service/sm/sm.h" | 25 | #include "core/hle/service/sm/sm.h" |
| 19 | #include "core/loader/loader.h" | 26 | #include "core/loader/loader.h" |
| 27 | #include "core/perf_stats.h" | ||
| 20 | #include "core/settings.h" | 28 | #include "core/settings.h" |
| 29 | #include "core/telemetry_session.h" | ||
| 21 | #include "file_sys/vfs_concat.h" | 30 | #include "file_sys/vfs_concat.h" |
| 22 | #include "file_sys/vfs_real.h" | 31 | #include "file_sys/vfs_real.h" |
| 32 | #include "video_core/debug_utils/debug_utils.h" | ||
| 33 | #include "video_core/gpu.h" | ||
| 23 | #include "video_core/renderer_base.h" | 34 | #include "video_core/renderer_base.h" |
| 24 | #include "video_core/video_core.h" | 35 | #include "video_core/video_core.h" |
| 25 | 36 | ||
| @@ -258,7 +269,7 @@ struct System::Impl { | |||
| 258 | } | 269 | } |
| 259 | } | 270 | } |
| 260 | 271 | ||
| 261 | PerfStats::Results GetAndResetPerfStats() { | 272 | PerfStatsResults GetAndResetPerfStats() { |
| 262 | return perf_stats.GetAndResetStats(CoreTiming::GetGlobalTimeUs()); | 273 | return perf_stats.GetAndResetStats(CoreTiming::GetGlobalTimeUs()); |
| 263 | } | 274 | } |
| 264 | 275 | ||
| @@ -326,7 +337,7 @@ void System::PrepareReschedule() { | |||
| 326 | CurrentCpuCore().PrepareReschedule(); | 337 | CurrentCpuCore().PrepareReschedule(); |
| 327 | } | 338 | } |
| 328 | 339 | ||
| 329 | PerfStats::Results System::GetAndResetPerfStats() { | 340 | PerfStatsResults System::GetAndResetPerfStats() { |
| 330 | return impl->GetAndResetPerfStats(); | 341 | return impl->GetAndResetPerfStats(); |
| 331 | } | 342 | } |
| 332 | 343 | ||
| @@ -433,11 +444,11 @@ std::shared_ptr<Tegra::DebugContext> System::GetGPUDebugContext() const { | |||
| 433 | return impl->debug_context; | 444 | return impl->debug_context; |
| 434 | } | 445 | } |
| 435 | 446 | ||
| 436 | void System::SetFilesystem(FileSys::VirtualFilesystem vfs) { | 447 | void System::SetFilesystem(std::shared_ptr<FileSys::VfsFilesystem> vfs) { |
| 437 | impl->virtual_filesystem = std::move(vfs); | 448 | impl->virtual_filesystem = std::move(vfs); |
| 438 | } | 449 | } |
| 439 | 450 | ||
| 440 | FileSys::VirtualFilesystem System::GetFilesystem() const { | 451 | std::shared_ptr<FileSys::VfsFilesystem> System::GetFilesystem() const { |
| 441 | return impl->virtual_filesystem; | 452 | return impl->virtual_filesystem; |
| 442 | } | 453 | } |
| 443 | 454 | ||
diff --git a/src/core/core.h b/src/core/core.h index 984e8f94c..eee1fecc1 100644 --- a/src/core/core.h +++ b/src/core/core.h | |||
| @@ -4,41 +4,55 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | 7 | #include <cstddef> |
| 8 | #include <map> | ||
| 9 | #include <memory> | 8 | #include <memory> |
| 10 | #include <string> | 9 | #include <string> |
| 11 | #include <thread> | 10 | |
| 12 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
| 13 | #include "core/arm/exclusive_monitor.h" | ||
| 14 | #include "core/core_cpu.h" | ||
| 15 | #include "core/hle/kernel/kernel.h" | ||
| 16 | #include "core/hle/kernel/object.h" | 12 | #include "core/hle/kernel/object.h" |
| 17 | #include "core/hle/kernel/scheduler.h" | ||
| 18 | #include "core/loader/loader.h" | ||
| 19 | #include "core/memory.h" | ||
| 20 | #include "core/perf_stats.h" | ||
| 21 | #include "core/telemetry_session.h" | ||
| 22 | #include "file_sys/vfs_real.h" | ||
| 23 | #include "hle/service/filesystem/filesystem.h" | ||
| 24 | #include "video_core/debug_utils/debug_utils.h" | ||
| 25 | #include "video_core/gpu.h" | ||
| 26 | 13 | ||
| 27 | namespace Core::Frontend { | 14 | namespace Core::Frontend { |
| 28 | class EmuWindow; | 15 | class EmuWindow; |
| 29 | } | 16 | } // namespace Core::Frontend |
| 17 | |||
| 18 | namespace FileSys { | ||
| 19 | class VfsFilesystem; | ||
| 20 | } // namespace FileSys | ||
| 21 | |||
| 22 | namespace Kernel { | ||
| 23 | class KernelCore; | ||
| 24 | class Process; | ||
| 25 | class Scheduler; | ||
| 26 | } // namespace Kernel | ||
| 27 | |||
| 28 | namespace Loader { | ||
| 29 | class AppLoader; | ||
| 30 | enum class ResultStatus : u16; | ||
| 31 | } // namespace Loader | ||
| 30 | 32 | ||
| 31 | namespace Service::SM { | 33 | namespace Service::SM { |
| 32 | class ServiceManager; | 34 | class ServiceManager; |
| 33 | } | 35 | } // namespace Service::SM |
| 36 | |||
| 37 | namespace Tegra { | ||
| 38 | class DebugContext; | ||
| 39 | class GPU; | ||
| 40 | } // namespace Tegra | ||
| 34 | 41 | ||
| 35 | namespace VideoCore { | 42 | namespace VideoCore { |
| 36 | class RendererBase; | 43 | class RendererBase; |
| 37 | } | 44 | } // namespace VideoCore |
| 38 | 45 | ||
| 39 | namespace Core { | 46 | namespace Core { |
| 40 | 47 | ||
| 41 | class ARM_Interface; | 48 | class ARM_Interface; |
| 49 | class Cpu; | ||
| 50 | class ExclusiveMonitor; | ||
| 51 | class FrameLimiter; | ||
| 52 | class PerfStats; | ||
| 53 | class TelemetrySession; | ||
| 54 | |||
| 55 | struct PerfStatsResults; | ||
| 42 | 56 | ||
| 43 | class System { | 57 | class System { |
| 44 | public: | 58 | public: |
| @@ -125,7 +139,7 @@ public: | |||
| 125 | void PrepareReschedule(); | 139 | void PrepareReschedule(); |
| 126 | 140 | ||
| 127 | /// Gets and resets core performance statistics | 141 | /// Gets and resets core performance statistics |
| 128 | PerfStats::Results GetAndResetPerfStats(); | 142 | PerfStatsResults GetAndResetPerfStats(); |
| 129 | 143 | ||
| 130 | /// Gets an ARM interface to the CPU core that is currently running | 144 | /// Gets an ARM interface to the CPU core that is currently running |
| 131 | ARM_Interface& CurrentArmInterface(); | 145 | ARM_Interface& CurrentArmInterface(); |
| @@ -197,9 +211,9 @@ public: | |||
| 197 | 211 | ||
| 198 | std::shared_ptr<Tegra::DebugContext> GetGPUDebugContext() const; | 212 | std::shared_ptr<Tegra::DebugContext> GetGPUDebugContext() const; |
| 199 | 213 | ||
| 200 | void SetFilesystem(FileSys::VirtualFilesystem vfs); | 214 | void SetFilesystem(std::shared_ptr<FileSys::VfsFilesystem> vfs); |
| 201 | 215 | ||
| 202 | FileSys::VirtualFilesystem GetFilesystem() const; | 216 | std::shared_ptr<FileSys::VfsFilesystem> GetFilesystem() const; |
| 203 | 217 | ||
| 204 | private: | 218 | private: |
| 205 | System(); | 219 | System(); |
diff --git a/src/core/file_sys/savedata_factory.cpp b/src/core/file_sys/savedata_factory.cpp index 034d3a78f..952bd74b3 100644 --- a/src/core/file_sys/savedata_factory.cpp +++ b/src/core/file_sys/savedata_factory.cpp | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 8 | #include "core/core.h" | 8 | #include "core/core.h" |
| 9 | #include "core/file_sys/savedata_factory.h" | 9 | #include "core/file_sys/savedata_factory.h" |
| 10 | #include "core/file_sys/vfs.h" | ||
| 10 | #include "core/hle/kernel/process.h" | 11 | #include "core/hle/kernel/process.h" |
| 11 | 12 | ||
| 12 | namespace FileSys { | 13 | namespace FileSys { |
diff --git a/src/core/file_sys/savedata_factory.h b/src/core/file_sys/savedata_factory.h index 368b36017..c6f9549f0 100644 --- a/src/core/file_sys/savedata_factory.h +++ b/src/core/file_sys/savedata_factory.h | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <string> | 8 | #include <string> |
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | #include "common/swap.h" | 10 | #include "common/swap.h" |
| 11 | #include "core/file_sys/vfs.h" | ||
| 11 | #include "core/hle/result.h" | 12 | #include "core/hle/result.h" |
| 12 | 13 | ||
| 13 | namespace FileSys { | 14 | namespace FileSys { |
diff --git a/src/core/hle/kernel/address_arbiter.cpp b/src/core/hle/kernel/address_arbiter.cpp index 03a954a9f..6657accd5 100644 --- a/src/core/hle/kernel/address_arbiter.cpp +++ b/src/core/hle/kernel/address_arbiter.cpp | |||
| @@ -8,9 +8,11 @@ | |||
| 8 | #include "common/assert.h" | 8 | #include "common/assert.h" |
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | #include "core/core.h" | 10 | #include "core/core.h" |
| 11 | #include "core/core_cpu.h" | ||
| 11 | #include "core/hle/kernel/errors.h" | 12 | #include "core/hle/kernel/errors.h" |
| 12 | #include "core/hle/kernel/object.h" | 13 | #include "core/hle/kernel/object.h" |
| 13 | #include "core/hle/kernel/process.h" | 14 | #include "core/hle/kernel/process.h" |
| 15 | #include "core/hle/kernel/scheduler.h" | ||
| 14 | #include "core/hle/kernel/thread.h" | 16 | #include "core/hle/kernel/thread.h" |
| 15 | #include "core/hle/result.h" | 17 | #include "core/hle/result.h" |
| 16 | #include "core/memory.h" | 18 | #include "core/memory.h" |
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index db7aef766..7264be906 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include "core/hle/kernel/event.h" | 18 | #include "core/hle/kernel/event.h" |
| 19 | #include "core/hle/kernel/handle_table.h" | 19 | #include "core/hle/kernel/handle_table.h" |
| 20 | #include "core/hle/kernel/hle_ipc.h" | 20 | #include "core/hle/kernel/hle_ipc.h" |
| 21 | #include "core/hle/kernel/kernel.h" | ||
| 21 | #include "core/hle/kernel/object.h" | 22 | #include "core/hle/kernel/object.h" |
| 22 | #include "core/hle/kernel/process.h" | 23 | #include "core/hle/kernel/process.h" |
| 23 | #include "core/hle/kernel/server_session.h" | 24 | #include "core/hle/kernel/server_session.h" |
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 90c9a5aff..aba0cab96 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #include "core/hle/kernel/client_session.h" | 13 | #include "core/hle/kernel/client_session.h" |
| 14 | #include "core/hle/kernel/handle_table.h" | 14 | #include "core/hle/kernel/handle_table.h" |
| 15 | #include "core/hle/kernel/hle_ipc.h" | 15 | #include "core/hle/kernel/hle_ipc.h" |
| 16 | #include "core/hle/kernel/kernel.h" | ||
| 16 | #include "core/hle/kernel/process.h" | 17 | #include "core/hle/kernel/process.h" |
| 17 | #include "core/hle/kernel/server_session.h" | 18 | #include "core/hle/kernel/server_session.h" |
| 18 | #include "core/hle/kernel/session.h" | 19 | #include "core/hle/kernel/session.h" |
| @@ -104,11 +105,10 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) { | |||
| 104 | // The ServerSession received a sync request, this means that there's new data available | 105 | // The ServerSession received a sync request, this means that there's new data available |
| 105 | // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or | 106 | // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or |
| 106 | // similar. | 107 | // similar. |
| 107 | |||
| 108 | auto& handle_table = Core::System::GetInstance().Kernel().HandleTable(); | ||
| 109 | Kernel::HLERequestContext context(this); | 108 | Kernel::HLERequestContext context(this); |
| 110 | u32* cmd_buf = (u32*)Memory::GetPointer(thread->GetTLSAddress()); | 109 | u32* cmd_buf = (u32*)Memory::GetPointer(thread->GetTLSAddress()); |
| 111 | context.PopulateFromIncomingCommandBuffer(cmd_buf, *Core::CurrentProcess(), handle_table); | 110 | context.PopulateFromIncomingCommandBuffer(cmd_buf, *Core::CurrentProcess(), |
| 111 | kernel.HandleTable()); | ||
| 112 | 112 | ||
| 113 | ResultCode result = RESULT_SUCCESS; | 113 | ResultCode result = RESULT_SUCCESS; |
| 114 | // If the session has been converted to a domain, handle the domain request | 114 | // If the session has been converted to a domain, handle the domain request |
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 099d1053f..5da71cff0 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -12,16 +12,20 @@ | |||
| 12 | #include "common/logging/log.h" | 12 | #include "common/logging/log.h" |
| 13 | #include "common/microprofile.h" | 13 | #include "common/microprofile.h" |
| 14 | #include "common/string_util.h" | 14 | #include "common/string_util.h" |
| 15 | #include "core/arm/exclusive_monitor.h" | ||
| 15 | #include "core/core.h" | 16 | #include "core/core.h" |
| 17 | #include "core/core_cpu.h" | ||
| 16 | #include "core/core_timing.h" | 18 | #include "core/core_timing.h" |
| 17 | #include "core/hle/kernel/address_arbiter.h" | 19 | #include "core/hle/kernel/address_arbiter.h" |
| 18 | #include "core/hle/kernel/client_port.h" | 20 | #include "core/hle/kernel/client_port.h" |
| 19 | #include "core/hle/kernel/client_session.h" | 21 | #include "core/hle/kernel/client_session.h" |
| 20 | #include "core/hle/kernel/event.h" | 22 | #include "core/hle/kernel/event.h" |
| 21 | #include "core/hle/kernel/handle_table.h" | 23 | #include "core/hle/kernel/handle_table.h" |
| 24 | #include "core/hle/kernel/kernel.h" | ||
| 22 | #include "core/hle/kernel/mutex.h" | 25 | #include "core/hle/kernel/mutex.h" |
| 23 | #include "core/hle/kernel/process.h" | 26 | #include "core/hle/kernel/process.h" |
| 24 | #include "core/hle/kernel/resource_limit.h" | 27 | #include "core/hle/kernel/resource_limit.h" |
| 28 | #include "core/hle/kernel/scheduler.h" | ||
| 25 | #include "core/hle/kernel/shared_memory.h" | 29 | #include "core/hle/kernel/shared_memory.h" |
| 26 | #include "core/hle/kernel/svc.h" | 30 | #include "core/hle/kernel/svc.h" |
| 27 | #include "core/hle/kernel/svc_wrap.h" | 31 | #include "core/hle/kernel/svc_wrap.h" |
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 520ea0853..3d10d9af2 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include "common/thread_queue_list.h" | 16 | #include "common/thread_queue_list.h" |
| 17 | #include "core/arm/arm_interface.h" | 17 | #include "core/arm/arm_interface.h" |
| 18 | #include "core/core.h" | 18 | #include "core/core.h" |
| 19 | #include "core/core_cpu.h" | ||
| 19 | #include "core/core_timing.h" | 20 | #include "core/core_timing.h" |
| 20 | #include "core/core_timing_util.h" | 21 | #include "core/core_timing_util.h" |
| 21 | #include "core/hle/kernel/errors.h" | 22 | #include "core/hle/kernel/errors.h" |
| @@ -23,8 +24,8 @@ | |||
| 23 | #include "core/hle/kernel/kernel.h" | 24 | #include "core/hle/kernel/kernel.h" |
| 24 | #include "core/hle/kernel/object.h" | 25 | #include "core/hle/kernel/object.h" |
| 25 | #include "core/hle/kernel/process.h" | 26 | #include "core/hle/kernel/process.h" |
| 27 | #include "core/hle/kernel/scheduler.h" | ||
| 26 | #include "core/hle/kernel/thread.h" | 28 | #include "core/hle/kernel/thread.h" |
| 27 | #include "core/hle/lock.h" | ||
| 28 | #include "core/hle/result.h" | 29 | #include "core/hle/result.h" |
| 29 | #include "core/memory.h" | 30 | #include "core/memory.h" |
| 30 | 31 | ||
diff --git a/src/core/hle/service/filesystem/filesystem.h b/src/core/hle/service/filesystem/filesystem.h index d88a66825..9ba0e2eab 100644 --- a/src/core/hle/service/filesystem/filesystem.h +++ b/src/core/hle/service/filesystem/filesystem.h | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include "common/common_types.h" | 8 | #include "common/common_types.h" |
| 9 | #include "core/file_sys/directory.h" | 9 | #include "core/file_sys/directory.h" |
| 10 | #include "core/file_sys/vfs.h" | ||
| 10 | #include "core/hle/result.h" | 11 | #include "core/hle/result.h" |
| 11 | 12 | ||
| 12 | namespace FileSys { | 13 | namespace FileSys { |
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index a53fa6e00..921b899e2 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include "core/file_sys/control_metadata.h" | 11 | #include "core/file_sys/control_metadata.h" |
| 12 | #include "core/file_sys/romfs_factory.h" | 12 | #include "core/file_sys/romfs_factory.h" |
| 13 | #include "core/gdbstub/gdbstub.h" | 13 | #include "core/gdbstub/gdbstub.h" |
| 14 | #include "core/hle/kernel/kernel.h" | ||
| 14 | #include "core/hle/kernel/process.h" | 15 | #include "core/hle/kernel/process.h" |
| 15 | #include "core/hle/kernel/resource_limit.h" | 16 | #include "core/hle/kernel/resource_limit.h" |
| 16 | #include "core/hle/service/filesystem/filesystem.h" | 17 | #include "core/hle/service/filesystem/filesystem.h" |
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 3702a8478..120e1e133 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #include "common/file_util.h" | 10 | #include "common/file_util.h" |
| 11 | #include "common/logging/log.h" | 11 | #include "common/logging/log.h" |
| 12 | #include "core/core.h" | 12 | #include "core/core.h" |
| 13 | #include "core/hle/kernel/kernel.h" | ||
| 13 | #include "core/hle/kernel/process.h" | 14 | #include "core/hle/kernel/process.h" |
| 14 | #include "core/hle/kernel/resource_limit.h" | 15 | #include "core/hle/kernel/resource_limit.h" |
| 15 | #include "core/loader/elf.h" | 16 | #include "core/loader/elf.h" |
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 00205d1d2..77026b850 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include "core/file_sys/control_metadata.h" | 14 | #include "core/file_sys/control_metadata.h" |
| 15 | #include "core/file_sys/vfs_offset.h" | 15 | #include "core/file_sys/vfs_offset.h" |
| 16 | #include "core/gdbstub/gdbstub.h" | 16 | #include "core/gdbstub/gdbstub.h" |
| 17 | #include "core/hle/kernel/kernel.h" | ||
| 17 | #include "core/hle/kernel/process.h" | 18 | #include "core/hle/kernel/process.h" |
| 18 | #include "core/hle/kernel/resource_limit.h" | 19 | #include "core/hle/kernel/resource_limit.h" |
| 19 | #include "core/loader/nro.h" | 20 | #include "core/loader/nro.h" |
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index 0c992d662..082a95d40 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include "common/swap.h" | 11 | #include "common/swap.h" |
| 12 | #include "core/core.h" | 12 | #include "core/core.h" |
| 13 | #include "core/gdbstub/gdbstub.h" | 13 | #include "core/gdbstub/gdbstub.h" |
| 14 | #include "core/hle/kernel/kernel.h" | ||
| 14 | #include "core/hle/kernel/process.h" | 15 | #include "core/hle/kernel/process.h" |
| 15 | #include "core/hle/kernel/resource_limit.h" | 16 | #include "core/hle/kernel/resource_limit.h" |
| 16 | #include "core/loader/nso.h" | 17 | #include "core/loader/nso.h" |
diff --git a/src/core/perf_stats.cpp b/src/core/perf_stats.cpp index 93d23de21..7d95816fe 100644 --- a/src/core/perf_stats.cpp +++ b/src/core/perf_stats.cpp | |||
| @@ -40,7 +40,7 @@ void PerfStats::EndGameFrame() { | |||
| 40 | game_frames += 1; | 40 | game_frames += 1; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | PerfStats::Results PerfStats::GetAndResetStats(microseconds current_system_time_us) { | 43 | PerfStatsResults PerfStats::GetAndResetStats(microseconds current_system_time_us) { |
| 44 | std::lock_guard<std::mutex> lock(object_mutex); | 44 | std::lock_guard<std::mutex> lock(object_mutex); |
| 45 | 45 | ||
| 46 | const auto now = Clock::now(); | 46 | const auto now = Clock::now(); |
| @@ -49,7 +49,7 @@ PerfStats::Results PerfStats::GetAndResetStats(microseconds current_system_time_ | |||
| 49 | 49 | ||
| 50 | const auto system_us_per_second = (current_system_time_us - reset_point_system_us) / interval; | 50 | const auto system_us_per_second = (current_system_time_us - reset_point_system_us) / interval; |
| 51 | 51 | ||
| 52 | Results results{}; | 52 | PerfStatsResults results{}; |
| 53 | results.system_fps = static_cast<double>(system_frames) / interval; | 53 | results.system_fps = static_cast<double>(system_frames) / interval; |
| 54 | results.game_fps = static_cast<double>(game_frames) / interval; | 54 | results.game_fps = static_cast<double>(game_frames) / interval; |
| 55 | results.frametime = duration_cast<DoubleSecs>(accumulated_frametime).count() / | 55 | results.frametime = duration_cast<DoubleSecs>(accumulated_frametime).count() / |
diff --git a/src/core/perf_stats.h b/src/core/perf_stats.h index 6e4619701..222ac1a63 100644 --- a/src/core/perf_stats.h +++ b/src/core/perf_stats.h | |||
| @@ -10,6 +10,17 @@ | |||
| 10 | 10 | ||
| 11 | namespace Core { | 11 | namespace Core { |
| 12 | 12 | ||
| 13 | struct PerfStatsResults { | ||
| 14 | /// System FPS (LCD VBlanks) in Hz | ||
| 15 | double system_fps; | ||
| 16 | /// Game FPS (GSP frame submissions) in Hz | ||
| 17 | double game_fps; | ||
| 18 | /// Walltime per system frame, in seconds, excluding any waits | ||
| 19 | double frametime; | ||
| 20 | /// Ratio of walltime / emulated time elapsed | ||
| 21 | double emulation_speed; | ||
| 22 | }; | ||
| 23 | |||
| 13 | /** | 24 | /** |
| 14 | * Class to manage and query performance/timing statistics. All public functions of this class are | 25 | * Class to manage and query performance/timing statistics. All public functions of this class are |
| 15 | * thread-safe unless stated otherwise. | 26 | * thread-safe unless stated otherwise. |
| @@ -18,22 +29,11 @@ class PerfStats { | |||
| 18 | public: | 29 | public: |
| 19 | using Clock = std::chrono::high_resolution_clock; | 30 | using Clock = std::chrono::high_resolution_clock; |
| 20 | 31 | ||
| 21 | struct Results { | ||
| 22 | /// System FPS (LCD VBlanks) in Hz | ||
| 23 | double system_fps; | ||
| 24 | /// Game FPS (GSP frame submissions) in Hz | ||
| 25 | double game_fps; | ||
| 26 | /// Walltime per system frame, in seconds, excluding any waits | ||
| 27 | double frametime; | ||
| 28 | /// Ratio of walltime / emulated time elapsed | ||
| 29 | double emulation_speed; | ||
| 30 | }; | ||
| 31 | |||
| 32 | void BeginSystemFrame(); | 32 | void BeginSystemFrame(); |
| 33 | void EndSystemFrame(); | 33 | void EndSystemFrame(); |
| 34 | void EndGameFrame(); | 34 | void EndGameFrame(); |
| 35 | 35 | ||
| 36 | Results GetAndResetStats(std::chrono::microseconds current_system_time_us); | 36 | PerfStatsResults GetAndResetStats(std::chrono::microseconds current_system_time_us); |
| 37 | 37 | ||
| 38 | /** | 38 | /** |
| 39 | * Gets the ratio between walltime and the emulated time of the previous system frame. This is | 39 | * Gets the ratio between walltime and the emulated time of the previous system frame. This is |
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 827a1bbd0..65571b948 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | #include "common/file_util.h" | 7 | #include "common/file_util.h" |
| 8 | 8 | ||
| 9 | #include "core/core.h" | 9 | #include "core/core.h" |
| 10 | #include "core/loader/loader.h" | ||
| 10 | #include "core/settings.h" | 11 | #include "core/settings.h" |
| 11 | #include "core/telemetry_session.h" | 12 | #include "core/telemetry_session.h" |
| 12 | 13 | ||