diff options
| author | 2019-02-12 12:32:15 -0500 | |
|---|---|---|
| committer | 2019-02-12 12:42:17 -0500 | |
| commit | 48d9d66dc585477d26b4cfbf1c4f71fd637b42ea (patch) | |
| tree | f53430f173796e92b2e3dfd2570ed6752d5e8f77 | |
| parent | Merge pull request #1904 from bunnei/better-fermi-copy (diff) | |
| download | yuzu-48d9d66dc585477d26b4cfbf1c4f71fd637b42ea.tar.gz yuzu-48d9d66dc585477d26b4cfbf1c4f71fd637b42ea.tar.xz yuzu-48d9d66dc585477d26b4cfbf1c4f71fd637b42ea.zip | |
core_timing: Rename CoreTiming namespace to Core::Timing
Places all of the timing-related functionality under the existing Core
namespace to keep things consistent, rather than having the timing
utilities sitting in its own completely separate namespace.
Diffstat (limited to '')
35 files changed, 172 insertions, 174 deletions
diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp index 4ce2d374e..8ab5649df 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp | |||
| @@ -37,7 +37,7 @@ Stream::Stream(u32 sample_rate, Format format, ReleaseCallback&& release_callbac | |||
| 37 | : sample_rate{sample_rate}, format{format}, release_callback{std::move(release_callback)}, | 37 | : sample_rate{sample_rate}, format{format}, release_callback{std::move(release_callback)}, |
| 38 | sink_stream{sink_stream}, name{std::move(name_)} { | 38 | sink_stream{sink_stream}, name{std::move(name_)} { |
| 39 | 39 | ||
| 40 | release_event = CoreTiming::RegisterEvent( | 40 | release_event = Core::Timing::RegisterEvent( |
| 41 | name, [this](u64 userdata, int cycles_late) { ReleaseActiveBuffer(); }); | 41 | name, [this](u64 userdata, int cycles_late) { ReleaseActiveBuffer(); }); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| @@ -57,7 +57,7 @@ Stream::State Stream::GetState() const { | |||
| 57 | 57 | ||
| 58 | s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const { | 58 | s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const { |
| 59 | const std::size_t num_samples{buffer.GetSamples().size() / GetNumChannels()}; | 59 | const std::size_t num_samples{buffer.GetSamples().size() / GetNumChannels()}; |
| 60 | return CoreTiming::usToCycles((static_cast<u64>(num_samples) * 1000000) / sample_rate); | 60 | return Core::Timing::usToCycles((static_cast<u64>(num_samples) * 1000000) / sample_rate); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | static void VolumeAdjustSamples(std::vector<s16>& samples) { | 63 | static void VolumeAdjustSamples(std::vector<s16>& samples) { |
| @@ -99,7 +99,8 @@ void Stream::PlayNextBuffer() { | |||
| 99 | 99 | ||
| 100 | sink_stream.EnqueueSamples(GetNumChannels(), active_buffer->GetSamples()); | 100 | sink_stream.EnqueueSamples(GetNumChannels(), active_buffer->GetSamples()); |
| 101 | 101 | ||
| 102 | CoreTiming::ScheduleEventThreadsafe(GetBufferReleaseCycles(*active_buffer), release_event, {}); | 102 | Core::Timing::ScheduleEventThreadsafe(GetBufferReleaseCycles(*active_buffer), release_event, |
| 103 | {}); | ||
| 103 | } | 104 | } |
| 104 | 105 | ||
| 105 | void Stream::ReleaseActiveBuffer() { | 106 | void Stream::ReleaseActiveBuffer() { |
diff --git a/src/audio_core/stream.h b/src/audio_core/stream.h index aebfeb51d..caa775544 100644 --- a/src/audio_core/stream.h +++ b/src/audio_core/stream.h | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #include "audio_core/buffer.h" | 13 | #include "audio_core/buffer.h" |
| 14 | #include "common/common_types.h" | 14 | #include "common/common_types.h" |
| 15 | 15 | ||
| 16 | namespace CoreTiming { | 16 | namespace Core::Timing { |
| 17 | struct EventType; | 17 | struct EventType; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| @@ -91,16 +91,16 @@ private: | |||
| 91 | /// Gets the number of core cycles when the specified buffer will be released | 91 | /// Gets the number of core cycles when the specified buffer will be released |
| 92 | s64 GetBufferReleaseCycles(const Buffer& buffer) const; | 92 | s64 GetBufferReleaseCycles(const Buffer& buffer) const; |
| 93 | 93 | ||
| 94 | u32 sample_rate; ///< Sample rate of the stream | 94 | u32 sample_rate; ///< Sample rate of the stream |
| 95 | Format format; ///< Format of the stream | 95 | Format format; ///< Format of the stream |
| 96 | ReleaseCallback release_callback; ///< Buffer release callback for the stream | 96 | ReleaseCallback release_callback; ///< Buffer release callback for the stream |
| 97 | State state{State::Stopped}; ///< Playback state of the stream | 97 | State state{State::Stopped}; ///< Playback state of the stream |
| 98 | CoreTiming::EventType* release_event{}; ///< Core timing release event for the stream | 98 | Core::Timing::EventType* release_event{}; ///< Core timing release event for the stream |
| 99 | BufferPtr active_buffer; ///< Actively playing buffer in the stream | 99 | BufferPtr active_buffer; ///< Actively playing buffer in the stream |
| 100 | std::queue<BufferPtr> queued_buffers; ///< Buffers queued to be played in the stream | 100 | std::queue<BufferPtr> queued_buffers; ///< Buffers queued to be played in the stream |
| 101 | std::queue<BufferPtr> released_buffers; ///< Buffers recently released from the stream | 101 | std::queue<BufferPtr> released_buffers; ///< Buffers recently released from the stream |
| 102 | SinkStream& sink_stream; ///< Output sink for the stream | 102 | SinkStream& sink_stream; ///< Output sink for the stream |
| 103 | std::string name; ///< Name of the stream, must be unique | 103 | std::string name; ///< Name of the stream, must be unique |
| 104 | }; | 104 | }; |
| 105 | 105 | ||
| 106 | using StreamPtr = std::shared_ptr<Stream>; | 106 | using StreamPtr = std::shared_ptr<Stream>; |
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index afbda8d8b..f28951f8a 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp | |||
| @@ -112,14 +112,14 @@ public: | |||
| 112 | // Always execute at least one tick. | 112 | // Always execute at least one tick. |
| 113 | amortized_ticks = std::max<u64>(amortized_ticks, 1); | 113 | amortized_ticks = std::max<u64>(amortized_ticks, 1); |
| 114 | 114 | ||
| 115 | CoreTiming::AddTicks(amortized_ticks); | 115 | Timing::AddTicks(amortized_ticks); |
| 116 | num_interpreted_instructions = 0; | 116 | num_interpreted_instructions = 0; |
| 117 | } | 117 | } |
| 118 | u64 GetTicksRemaining() override { | 118 | u64 GetTicksRemaining() override { |
| 119 | return std::max(CoreTiming::GetDowncount(), 0); | 119 | return std::max(Timing::GetDowncount(), 0); |
| 120 | } | 120 | } |
| 121 | u64 GetCNTPCT() override { | 121 | u64 GetCNTPCT() override { |
| 122 | return CoreTiming::GetTicks(); | 122 | return Timing::GetTicks(); |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | ARM_Dynarmic& parent; | 125 | ARM_Dynarmic& parent; |
diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp index c455c81fb..c36c15c02 100644 --- a/src/core/arm/unicorn/arm_unicorn.cpp +++ b/src/core/arm/unicorn/arm_unicorn.cpp | |||
| @@ -177,7 +177,7 @@ void ARM_Unicorn::Run() { | |||
| 177 | if (GDBStub::IsServerEnabled()) { | 177 | if (GDBStub::IsServerEnabled()) { |
| 178 | ExecuteInstructions(std::max(4000000, 0)); | 178 | ExecuteInstructions(std::max(4000000, 0)); |
| 179 | } else { | 179 | } else { |
| 180 | ExecuteInstructions(std::max(CoreTiming::GetDowncount(), 0)); | 180 | ExecuteInstructions(std::max(Timing::GetDowncount(), 0)); |
| 181 | } | 181 | } |
| 182 | } | 182 | } |
| 183 | 183 | ||
| @@ -190,7 +190,7 @@ MICROPROFILE_DEFINE(ARM_Jit_Unicorn, "ARM JIT", "Unicorn", MP_RGB(255, 64, 64)); | |||
| 190 | void ARM_Unicorn::ExecuteInstructions(int num_instructions) { | 190 | void ARM_Unicorn::ExecuteInstructions(int num_instructions) { |
| 191 | MICROPROFILE_SCOPE(ARM_Jit_Unicorn); | 191 | MICROPROFILE_SCOPE(ARM_Jit_Unicorn); |
| 192 | CHECKED(uc_emu_start(uc, GetPC(), 1ULL << 63, 0, num_instructions)); | 192 | CHECKED(uc_emu_start(uc, GetPC(), 1ULL << 63, 0, num_instructions)); |
| 193 | CoreTiming::AddTicks(num_instructions); | 193 | Timing::AddTicks(num_instructions); |
| 194 | if (GDBStub::IsServerEnabled()) { | 194 | if (GDBStub::IsServerEnabled()) { |
| 195 | if (last_bkpt_hit) { | 195 | if (last_bkpt_hit) { |
| 196 | uc_reg_write(uc, UC_ARM64_REG_PC, &last_bkpt.address); | 196 | uc_reg_write(uc, UC_ARM64_REG_PC, &last_bkpt.address); |
diff --git a/src/core/core.cpp b/src/core/core.cpp index 1dd576c26..4d9d21ee4 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -94,7 +94,7 @@ struct System::Impl { | |||
| 94 | ResultStatus Init(System& system, Frontend::EmuWindow& emu_window) { | 94 | ResultStatus Init(System& system, Frontend::EmuWindow& emu_window) { |
| 95 | LOG_DEBUG(HW_Memory, "initialized OK"); | 95 | LOG_DEBUG(HW_Memory, "initialized OK"); |
| 96 | 96 | ||
| 97 | CoreTiming::Init(); | 97 | Timing::Init(); |
| 98 | kernel.Initialize(); | 98 | kernel.Initialize(); |
| 99 | 99 | ||
| 100 | const auto current_time = std::chrono::duration_cast<std::chrono::seconds>( | 100 | const auto current_time = std::chrono::duration_cast<std::chrono::seconds>( |
| @@ -205,7 +205,7 @@ struct System::Impl { | |||
| 205 | 205 | ||
| 206 | // Shutdown kernel and core timing | 206 | // Shutdown kernel and core timing |
| 207 | kernel.Shutdown(); | 207 | kernel.Shutdown(); |
| 208 | CoreTiming::Shutdown(); | 208 | Timing::Shutdown(); |
| 209 | 209 | ||
| 210 | // Close app loader | 210 | // Close app loader |
| 211 | app_loader.reset(); | 211 | app_loader.reset(); |
| @@ -232,7 +232,7 @@ struct System::Impl { | |||
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | PerfStatsResults GetAndResetPerfStats() { | 234 | PerfStatsResults GetAndResetPerfStats() { |
| 235 | return perf_stats.GetAndResetStats(CoreTiming::GetGlobalTimeUs()); | 235 | return perf_stats.GetAndResetStats(Timing::GetGlobalTimeUs()); |
| 236 | } | 236 | } |
| 237 | 237 | ||
| 238 | Kernel::KernelCore kernel; | 238 | Kernel::KernelCore kernel; |
diff --git a/src/core/core_cpu.cpp b/src/core/core_cpu.cpp index fffda8a99..452366250 100644 --- a/src/core/core_cpu.cpp +++ b/src/core/core_cpu.cpp | |||
| @@ -93,14 +93,14 @@ void Cpu::RunLoop(bool tight_loop) { | |||
| 93 | 93 | ||
| 94 | if (IsMainCore()) { | 94 | if (IsMainCore()) { |
| 95 | // TODO(Subv): Only let CoreTiming idle if all 4 cores are idling. | 95 | // TODO(Subv): Only let CoreTiming idle if all 4 cores are idling. |
| 96 | CoreTiming::Idle(); | 96 | Timing::Idle(); |
| 97 | CoreTiming::Advance(); | 97 | Timing::Advance(); |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | PrepareReschedule(); | 100 | PrepareReschedule(); |
| 101 | } else { | 101 | } else { |
| 102 | if (IsMainCore()) { | 102 | if (IsMainCore()) { |
| 103 | CoreTiming::Advance(); | 103 | Timing::Advance(); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | if (tight_loop) { | 106 | if (tight_loop) { |
diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp index 7953c8720..2b7ca9766 100644 --- a/src/core/core_timing.cpp +++ b/src/core/core_timing.cpp | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include "common/threadsafe_queue.h" | 15 | #include "common/threadsafe_queue.h" |
| 16 | #include "core/core_timing_util.h" | 16 | #include "core/core_timing_util.h" |
| 17 | 17 | ||
| 18 | namespace CoreTiming { | 18 | namespace Core::Timing { |
| 19 | 19 | ||
| 20 | static s64 global_timer; | 20 | static s64 global_timer; |
| 21 | static int slice_length; | 21 | static int slice_length; |
| @@ -242,4 +242,4 @@ int GetDowncount() { | |||
| 242 | return downcount; | 242 | return downcount; |
| 243 | } | 243 | } |
| 244 | 244 | ||
| 245 | } // namespace CoreTiming | 245 | } // namespace Core::Timing |
diff --git a/src/core/core_timing.h b/src/core/core_timing.h index 9ed757bd7..093989d4c 100644 --- a/src/core/core_timing.h +++ b/src/core/core_timing.h | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <string> | 22 | #include <string> |
| 23 | #include "common/common_types.h" | 23 | #include "common/common_types.h" |
| 24 | 24 | ||
| 25 | namespace CoreTiming { | 25 | namespace Core::Timing { |
| 26 | 26 | ||
| 27 | struct EventType; | 27 | struct EventType; |
| 28 | 28 | ||
| @@ -92,4 +92,4 @@ std::chrono::microseconds GetGlobalTimeUs(); | |||
| 92 | 92 | ||
| 93 | int GetDowncount(); | 93 | int GetDowncount(); |
| 94 | 94 | ||
| 95 | } // namespace CoreTiming | 95 | } // namespace Core::Timing |
diff --git a/src/core/core_timing_util.cpp b/src/core/core_timing_util.cpp index 73dea4edb..88ff70233 100644 --- a/src/core/core_timing_util.cpp +++ b/src/core/core_timing_util.cpp | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | #include <limits> | 8 | #include <limits> |
| 9 | #include "common/logging/log.h" | 9 | #include "common/logging/log.h" |
| 10 | 10 | ||
| 11 | namespace CoreTiming { | 11 | namespace Core::Timing { |
| 12 | 12 | ||
| 13 | constexpr u64 MAX_VALUE_TO_MULTIPLY = std::numeric_limits<s64>::max() / BASE_CLOCK_RATE; | 13 | constexpr u64 MAX_VALUE_TO_MULTIPLY = std::numeric_limits<s64>::max() / BASE_CLOCK_RATE; |
| 14 | 14 | ||
| @@ -60,4 +60,4 @@ s64 nsToCycles(u64 ns) { | |||
| 60 | return (BASE_CLOCK_RATE * static_cast<s64>(ns)) / 1000000000; | 60 | return (BASE_CLOCK_RATE * static_cast<s64>(ns)) / 1000000000; |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | } // namespace CoreTiming | 63 | } // namespace Core::Timing |
diff --git a/src/core/core_timing_util.h b/src/core/core_timing_util.h index 5c3718782..513cfac1b 100644 --- a/src/core/core_timing_util.h +++ b/src/core/core_timing_util.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include "common/common_types.h" | 7 | #include "common/common_types.h" |
| 8 | 8 | ||
| 9 | namespace CoreTiming { | 9 | namespace Core::Timing { |
| 10 | 10 | ||
| 11 | // The below clock rate is based on Switch's clockspeed being widely known as 1.020GHz | 11 | // The below clock rate is based on Switch's clockspeed being widely known as 1.020GHz |
| 12 | // The exact value used is of course unverified. | 12 | // The exact value used is of course unverified. |
| @@ -61,4 +61,4 @@ inline u64 cyclesToMs(s64 cycles) { | |||
| 61 | return cycles * 1000 / BASE_CLOCK_RATE; | 61 | return cycles * 1000 / BASE_CLOCK_RATE; |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | } // namespace CoreTiming | 64 | } // namespace Core::Timing |
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 7a524ce5a..3721ae8fe 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -124,7 +124,7 @@ struct KernelCore::Impl { | |||
| 124 | 124 | ||
| 125 | void InitializeThreads() { | 125 | void InitializeThreads() { |
| 126 | thread_wakeup_event_type = | 126 | thread_wakeup_event_type = |
| 127 | CoreTiming::RegisterEvent("ThreadWakeupCallback", ThreadWakeupCallback); | 127 | Core::Timing::RegisterEvent("ThreadWakeupCallback", ThreadWakeupCallback); |
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | std::atomic<u32> next_object_id{0}; | 130 | std::atomic<u32> next_object_id{0}; |
| @@ -137,7 +137,7 @@ struct KernelCore::Impl { | |||
| 137 | 137 | ||
| 138 | SharedPtr<ResourceLimit> system_resource_limit; | 138 | SharedPtr<ResourceLimit> system_resource_limit; |
| 139 | 139 | ||
| 140 | CoreTiming::EventType* thread_wakeup_event_type = nullptr; | 140 | Core::Timing::EventType* thread_wakeup_event_type = nullptr; |
| 141 | // TODO(yuriks): This can be removed if Thread objects are explicitly pooled in the future, | 141 | // TODO(yuriks): This can be removed if Thread objects are explicitly pooled in the future, |
| 142 | // allowing us to simply use a pool index or similar. | 142 | // allowing us to simply use a pool index or similar. |
| 143 | Kernel::HandleTable thread_wakeup_callback_handle_table; | 143 | Kernel::HandleTable thread_wakeup_callback_handle_table; |
| @@ -213,7 +213,7 @@ u64 KernelCore::CreateNewProcessID() { | |||
| 213 | return impl->next_process_id++; | 213 | return impl->next_process_id++; |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | CoreTiming::EventType* KernelCore::ThreadWakeupCallbackEventType() const { | 216 | Core::Timing::EventType* KernelCore::ThreadWakeupCallbackEventType() const { |
| 217 | return impl->thread_wakeup_event_type; | 217 | return impl->thread_wakeup_event_type; |
| 218 | } | 218 | } |
| 219 | 219 | ||
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index c643a6401..7406f107e 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | template <typename T> | 11 | template <typename T> |
| 12 | class ResultVal; | 12 | class ResultVal; |
| 13 | 13 | ||
| 14 | namespace CoreTiming { | 14 | namespace Core::Timing { |
| 15 | struct EventType; | 15 | struct EventType; |
| 16 | } | 16 | } |
| 17 | 17 | ||
| @@ -89,7 +89,7 @@ private: | |||
| 89 | u64 CreateNewThreadID(); | 89 | u64 CreateNewThreadID(); |
| 90 | 90 | ||
| 91 | /// Retrieves the event type used for thread wakeup callbacks. | 91 | /// Retrieves the event type used for thread wakeup callbacks. |
| 92 | CoreTiming::EventType* ThreadWakeupCallbackEventType() const; | 92 | Core::Timing::EventType* ThreadWakeupCallbackEventType() const; |
| 93 | 93 | ||
| 94 | /// Provides a reference to the thread wakeup callback handle table. | 94 | /// Provides a reference to the thread wakeup callback handle table. |
| 95 | Kernel::HandleTable& ThreadWakeupCallbackHandleTable(); | 95 | Kernel::HandleTable& ThreadWakeupCallbackHandleTable(); |
diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp index df4d6cf0a..9e2517e1b 100644 --- a/src/core/hle/kernel/scheduler.cpp +++ b/src/core/hle/kernel/scheduler.cpp | |||
| @@ -111,7 +111,7 @@ void Scheduler::SwitchContext(Thread* new_thread) { | |||
| 111 | 111 | ||
| 112 | void Scheduler::UpdateLastContextSwitchTime(Thread* thread, Process* process) { | 112 | void Scheduler::UpdateLastContextSwitchTime(Thread* thread, Process* process) { |
| 113 | const u64 prev_switch_ticks = last_context_switch_time; | 113 | const u64 prev_switch_ticks = last_context_switch_time; |
| 114 | const u64 most_recent_switch_ticks = CoreTiming::GetTicks(); | 114 | const u64 most_recent_switch_ticks = Core::Timing::GetTicks(); |
| 115 | const u64 update_ticks = most_recent_switch_ticks - prev_switch_ticks; | 115 | const u64 update_ticks = most_recent_switch_ticks - prev_switch_ticks; |
| 116 | 116 | ||
| 117 | if (thread != nullptr) { | 117 | if (thread != nullptr) { |
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 7cfecb68c..5f040f79f 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -927,9 +927,9 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) | |||
| 927 | if (same_thread && info_sub_id == 0xFFFFFFFFFFFFFFFF) { | 927 | if (same_thread && info_sub_id == 0xFFFFFFFFFFFFFFFF) { |
| 928 | const u64 thread_ticks = current_thread->GetTotalCPUTimeTicks(); | 928 | const u64 thread_ticks = current_thread->GetTotalCPUTimeTicks(); |
| 929 | 929 | ||
| 930 | out_ticks = thread_ticks + (CoreTiming::GetTicks() - prev_ctx_ticks); | 930 | out_ticks = thread_ticks + (Core::Timing::GetTicks() - prev_ctx_ticks); |
| 931 | } else if (same_thread && info_sub_id == system.CurrentCoreIndex()) { | 931 | } else if (same_thread && info_sub_id == system.CurrentCoreIndex()) { |
| 932 | out_ticks = CoreTiming::GetTicks() - prev_ctx_ticks; | 932 | out_ticks = Core::Timing::GetTicks() - prev_ctx_ticks; |
| 933 | } | 933 | } |
| 934 | 934 | ||
| 935 | *result = out_ticks; | 935 | *result = out_ticks; |
| @@ -1546,10 +1546,10 @@ static ResultCode SignalToAddress(VAddr address, u32 type, s32 value, s32 num_to | |||
| 1546 | static u64 GetSystemTick() { | 1546 | static u64 GetSystemTick() { |
| 1547 | LOG_TRACE(Kernel_SVC, "called"); | 1547 | LOG_TRACE(Kernel_SVC, "called"); |
| 1548 | 1548 | ||
| 1549 | const u64 result{CoreTiming::GetTicks()}; | 1549 | const u64 result{Core::Timing::GetTicks()}; |
| 1550 | 1550 | ||
| 1551 | // Advance time to defeat dumb games that busy-wait for the frame to end. | 1551 | // Advance time to defeat dumb games that busy-wait for the frame to end. |
| 1552 | CoreTiming::AddTicks(400); | 1552 | Core::Timing::AddTicks(400); |
| 1553 | 1553 | ||
| 1554 | return result; | 1554 | return result; |
| 1555 | } | 1555 | } |
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index d3984dfc4..7881c2b90 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -43,7 +43,7 @@ Thread::~Thread() = default; | |||
| 43 | 43 | ||
| 44 | void Thread::Stop() { | 44 | void Thread::Stop() { |
| 45 | // Cancel any outstanding wakeup events for this thread | 45 | // Cancel any outstanding wakeup events for this thread |
| 46 | CoreTiming::UnscheduleEvent(kernel.ThreadWakeupCallbackEventType(), callback_handle); | 46 | Core::Timing::UnscheduleEvent(kernel.ThreadWakeupCallbackEventType(), callback_handle); |
| 47 | kernel.ThreadWakeupCallbackHandleTable().Close(callback_handle); | 47 | kernel.ThreadWakeupCallbackHandleTable().Close(callback_handle); |
| 48 | callback_handle = 0; | 48 | callback_handle = 0; |
| 49 | 49 | ||
| @@ -85,12 +85,13 @@ void Thread::WakeAfterDelay(s64 nanoseconds) { | |||
| 85 | 85 | ||
| 86 | // This function might be called from any thread so we have to be cautious and use the | 86 | // This function might be called from any thread so we have to be cautious and use the |
| 87 | // thread-safe version of ScheduleEvent. | 87 | // thread-safe version of ScheduleEvent. |
| 88 | CoreTiming::ScheduleEventThreadsafe(CoreTiming::nsToCycles(nanoseconds), | 88 | Core::Timing::ScheduleEventThreadsafe(Core::Timing::nsToCycles(nanoseconds), |
| 89 | kernel.ThreadWakeupCallbackEventType(), callback_handle); | 89 | kernel.ThreadWakeupCallbackEventType(), callback_handle); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | void Thread::CancelWakeupTimer() { | 92 | void Thread::CancelWakeupTimer() { |
| 93 | CoreTiming::UnscheduleEventThreadsafe(kernel.ThreadWakeupCallbackEventType(), callback_handle); | 93 | Core::Timing::UnscheduleEventThreadsafe(kernel.ThreadWakeupCallbackEventType(), |
| 94 | callback_handle); | ||
| 94 | } | 95 | } |
| 95 | 96 | ||
| 96 | static std::optional<s32> GetNextProcessorId(u64 mask) { | 97 | static std::optional<s32> GetNextProcessorId(u64 mask) { |
| @@ -197,7 +198,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(KernelCore& kernel, std::string name | |||
| 197 | thread->stack_top = stack_top; | 198 | thread->stack_top = stack_top; |
| 198 | thread->tpidr_el0 = 0; | 199 | thread->tpidr_el0 = 0; |
| 199 | thread->nominal_priority = thread->current_priority = priority; | 200 | thread->nominal_priority = thread->current_priority = priority; |
| 200 | thread->last_running_ticks = CoreTiming::GetTicks(); | 201 | thread->last_running_ticks = Core::Timing::GetTicks(); |
| 201 | thread->processor_id = processor_id; | 202 | thread->processor_id = processor_id; |
| 202 | thread->ideal_core = processor_id; | 203 | thread->ideal_core = processor_id; |
| 203 | thread->affinity_mask = 1ULL << processor_id; | 204 | thread->affinity_mask = 1ULL << processor_id; |
| @@ -257,7 +258,7 @@ void Thread::SetStatus(ThreadStatus new_status) { | |||
| 257 | } | 258 | } |
| 258 | 259 | ||
| 259 | if (status == ThreadStatus::Running) { | 260 | if (status == ThreadStatus::Running) { |
| 260 | last_running_ticks = CoreTiming::GetTicks(); | 261 | last_running_ticks = Core::Timing::GetTicks(); |
| 261 | } | 262 | } |
| 262 | 263 | ||
| 263 | status = new_status; | 264 | status = new_status; |
diff --git a/src/core/hle/service/hid/controllers/debug_pad.cpp b/src/core/hle/service/hid/controllers/debug_pad.cpp index c22357d8c..b264c9503 100644 --- a/src/core/hle/service/hid/controllers/debug_pad.cpp +++ b/src/core/hle/service/hid/controllers/debug_pad.cpp | |||
| @@ -22,7 +22,7 @@ void Controller_DebugPad::OnInit() {} | |||
| 22 | void Controller_DebugPad::OnRelease() {} | 22 | void Controller_DebugPad::OnRelease() {} |
| 23 | 23 | ||
| 24 | void Controller_DebugPad::OnUpdate(u8* data, std::size_t size) { | 24 | void Controller_DebugPad::OnUpdate(u8* data, std::size_t size) { |
| 25 | shared_memory.header.timestamp = CoreTiming::GetTicks(); | 25 | shared_memory.header.timestamp = Core::Timing::GetTicks(); |
| 26 | shared_memory.header.total_entry_count = 17; | 26 | shared_memory.header.total_entry_count = 17; |
| 27 | 27 | ||
| 28 | if (!IsControllerActivated()) { | 28 | if (!IsControllerActivated()) { |
diff --git a/src/core/hle/service/hid/controllers/gesture.cpp b/src/core/hle/service/hid/controllers/gesture.cpp index 898572277..6d21f1a7d 100644 --- a/src/core/hle/service/hid/controllers/gesture.cpp +++ b/src/core/hle/service/hid/controllers/gesture.cpp | |||
| @@ -18,7 +18,7 @@ void Controller_Gesture::OnInit() {} | |||
| 18 | void Controller_Gesture::OnRelease() {} | 18 | void Controller_Gesture::OnRelease() {} |
| 19 | 19 | ||
| 20 | void Controller_Gesture::OnUpdate(u8* data, std::size_t size) { | 20 | void Controller_Gesture::OnUpdate(u8* data, std::size_t size) { |
| 21 | shared_memory.header.timestamp = CoreTiming::GetTicks(); | 21 | shared_memory.header.timestamp = Core::Timing::GetTicks(); |
| 22 | shared_memory.header.total_entry_count = 17; | 22 | shared_memory.header.total_entry_count = 17; |
| 23 | 23 | ||
| 24 | if (!IsControllerActivated()) { | 24 | if (!IsControllerActivated()) { |
diff --git a/src/core/hle/service/hid/controllers/keyboard.cpp b/src/core/hle/service/hid/controllers/keyboard.cpp index ca75adc2b..798f30436 100644 --- a/src/core/hle/service/hid/controllers/keyboard.cpp +++ b/src/core/hle/service/hid/controllers/keyboard.cpp | |||
| @@ -20,7 +20,7 @@ void Controller_Keyboard::OnInit() {} | |||
| 20 | void Controller_Keyboard::OnRelease() {} | 20 | void Controller_Keyboard::OnRelease() {} |
| 21 | 21 | ||
| 22 | void Controller_Keyboard::OnUpdate(u8* data, std::size_t size) { | 22 | void Controller_Keyboard::OnUpdate(u8* data, std::size_t size) { |
| 23 | shared_memory.header.timestamp = CoreTiming::GetTicks(); | 23 | shared_memory.header.timestamp = Core::Timing::GetTicks(); |
| 24 | shared_memory.header.total_entry_count = 17; | 24 | shared_memory.header.total_entry_count = 17; |
| 25 | 25 | ||
| 26 | if (!IsControllerActivated()) { | 26 | if (!IsControllerActivated()) { |
diff --git a/src/core/hle/service/hid/controllers/mouse.cpp b/src/core/hle/service/hid/controllers/mouse.cpp index 63391dbe9..4985037be 100644 --- a/src/core/hle/service/hid/controllers/mouse.cpp +++ b/src/core/hle/service/hid/controllers/mouse.cpp | |||
| @@ -18,7 +18,7 @@ void Controller_Mouse::OnInit() {} | |||
| 18 | void Controller_Mouse::OnRelease() {} | 18 | void Controller_Mouse::OnRelease() {} |
| 19 | 19 | ||
| 20 | void Controller_Mouse::OnUpdate(u8* data, std::size_t size) { | 20 | void Controller_Mouse::OnUpdate(u8* data, std::size_t size) { |
| 21 | shared_memory.header.timestamp = CoreTiming::GetTicks(); | 21 | shared_memory.header.timestamp = Core::Timing::GetTicks(); |
| 22 | shared_memory.header.total_entry_count = 17; | 22 | shared_memory.header.total_entry_count = 17; |
| 23 | 23 | ||
| 24 | if (!IsControllerActivated()) { | 24 | if (!IsControllerActivated()) { |
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 04c8c35a8..ffdd1c593 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -308,7 +308,7 @@ void Controller_NPad::OnUpdate(u8* data, std::size_t data_len) { | |||
| 308 | const auto& last_entry = | 308 | const auto& last_entry = |
| 309 | main_controller->npad[main_controller->common.last_entry_index]; | 309 | main_controller->npad[main_controller->common.last_entry_index]; |
| 310 | 310 | ||
| 311 | main_controller->common.timestamp = CoreTiming::GetTicks(); | 311 | main_controller->common.timestamp = Core::Timing::GetTicks(); |
| 312 | main_controller->common.last_entry_index = | 312 | main_controller->common.last_entry_index = |
| 313 | (main_controller->common.last_entry_index + 1) % 17; | 313 | (main_controller->common.last_entry_index + 1) % 17; |
| 314 | 314 | ||
diff --git a/src/core/hle/service/hid/controllers/stubbed.cpp b/src/core/hle/service/hid/controllers/stubbed.cpp index 02fcfadd9..cca4dca1d 100644 --- a/src/core/hle/service/hid/controllers/stubbed.cpp +++ b/src/core/hle/service/hid/controllers/stubbed.cpp | |||
| @@ -22,7 +22,7 @@ void Controller_Stubbed::OnUpdate(u8* data, std::size_t size) { | |||
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | CommonHeader header{}; | 24 | CommonHeader header{}; |
| 25 | header.timestamp = CoreTiming::GetTicks(); | 25 | header.timestamp = Core::Timing::GetTicks(); |
| 26 | header.total_entry_count = 17; | 26 | header.total_entry_count = 17; |
| 27 | header.entry_count = 0; | 27 | header.entry_count = 0; |
| 28 | header.last_entry_index = 0; | 28 | header.last_entry_index = 0; |
diff --git a/src/core/hle/service/hid/controllers/touchscreen.cpp b/src/core/hle/service/hid/controllers/touchscreen.cpp index f666b1bd8..a7c8acc72 100644 --- a/src/core/hle/service/hid/controllers/touchscreen.cpp +++ b/src/core/hle/service/hid/controllers/touchscreen.cpp | |||
| @@ -21,7 +21,7 @@ void Controller_Touchscreen::OnInit() {} | |||
| 21 | void Controller_Touchscreen::OnRelease() {} | 21 | void Controller_Touchscreen::OnRelease() {} |
| 22 | 22 | ||
| 23 | void Controller_Touchscreen::OnUpdate(u8* data, std::size_t size) { | 23 | void Controller_Touchscreen::OnUpdate(u8* data, std::size_t size) { |
| 24 | shared_memory.header.timestamp = CoreTiming::GetTicks(); | 24 | shared_memory.header.timestamp = Core::Timing::GetTicks(); |
| 25 | shared_memory.header.total_entry_count = 17; | 25 | shared_memory.header.total_entry_count = 17; |
| 26 | 26 | ||
| 27 | if (!IsControllerActivated()) { | 27 | if (!IsControllerActivated()) { |
| @@ -48,7 +48,7 @@ void Controller_Touchscreen::OnUpdate(u8* data, std::size_t size) { | |||
| 48 | touch_entry.diameter_x = Settings::values.touchscreen.diameter_x; | 48 | touch_entry.diameter_x = Settings::values.touchscreen.diameter_x; |
| 49 | touch_entry.diameter_y = Settings::values.touchscreen.diameter_y; | 49 | touch_entry.diameter_y = Settings::values.touchscreen.diameter_y; |
| 50 | touch_entry.rotation_angle = Settings::values.touchscreen.rotation_angle; | 50 | touch_entry.rotation_angle = Settings::values.touchscreen.rotation_angle; |
| 51 | const u64 tick = CoreTiming::GetTicks(); | 51 | const u64 tick = Core::Timing::GetTicks(); |
| 52 | touch_entry.delta_time = tick - last_touch; | 52 | touch_entry.delta_time = tick - last_touch; |
| 53 | last_touch = tick; | 53 | last_touch = tick; |
| 54 | touch_entry.finger = Settings::values.touchscreen.finger; | 54 | touch_entry.finger = Settings::values.touchscreen.finger; |
diff --git a/src/core/hle/service/hid/controllers/xpad.cpp b/src/core/hle/service/hid/controllers/xpad.cpp index cd397c70b..eff03d14e 100644 --- a/src/core/hle/service/hid/controllers/xpad.cpp +++ b/src/core/hle/service/hid/controllers/xpad.cpp | |||
| @@ -19,7 +19,7 @@ void Controller_XPad::OnRelease() {} | |||
| 19 | 19 | ||
| 20 | void Controller_XPad::OnUpdate(u8* data, std::size_t size) { | 20 | void Controller_XPad::OnUpdate(u8* data, std::size_t size) { |
| 21 | for (auto& xpad_entry : shared_memory.shared_memory_entries) { | 21 | for (auto& xpad_entry : shared_memory.shared_memory_entries) { |
| 22 | xpad_entry.header.timestamp = CoreTiming::GetTicks(); | 22 | xpad_entry.header.timestamp = Core::Timing::GetTicks(); |
| 23 | xpad_entry.header.total_entry_count = 17; | 23 | xpad_entry.header.total_entry_count = 17; |
| 24 | 24 | ||
| 25 | if (!IsControllerActivated()) { | 25 | if (!IsControllerActivated()) { |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 008bf3f02..79c320d04 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -36,9 +36,9 @@ namespace Service::HID { | |||
| 36 | 36 | ||
| 37 | // Updating period for each HID device. | 37 | // Updating period for each HID device. |
| 38 | // TODO(ogniK): Find actual polling rate of hid | 38 | // TODO(ogniK): Find actual polling rate of hid |
| 39 | constexpr u64 pad_update_ticks = CoreTiming::BASE_CLOCK_RATE / 66; | 39 | constexpr u64 pad_update_ticks = Core::Timing::BASE_CLOCK_RATE / 66; |
| 40 | constexpr u64 accelerometer_update_ticks = CoreTiming::BASE_CLOCK_RATE / 100; | 40 | constexpr u64 accelerometer_update_ticks = Core::Timing::BASE_CLOCK_RATE / 100; |
| 41 | constexpr u64 gyroscope_update_ticks = CoreTiming::BASE_CLOCK_RATE / 100; | 41 | constexpr u64 gyroscope_update_ticks = Core::Timing::BASE_CLOCK_RATE / 100; |
| 42 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; | 42 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; |
| 43 | 43 | ||
| 44 | IAppletResource::IAppletResource() : ServiceFramework("IAppletResource") { | 44 | IAppletResource::IAppletResource() : ServiceFramework("IAppletResource") { |
| @@ -73,14 +73,13 @@ IAppletResource::IAppletResource() : ServiceFramework("IAppletResource") { | |||
| 73 | GetController<Controller_Stubbed>(HidController::Unknown3).SetCommonHeaderOffset(0x5000); | 73 | GetController<Controller_Stubbed>(HidController::Unknown3).SetCommonHeaderOffset(0x5000); |
| 74 | 74 | ||
| 75 | // Register update callbacks | 75 | // Register update callbacks |
| 76 | pad_update_event = | 76 | pad_update_event = Core::Timing::RegisterEvent( |
| 77 | CoreTiming::RegisterEvent("HID::UpdatePadCallback", [this](u64 userdata, int cycles_late) { | 77 | "HID::UpdatePadCallback", |
| 78 | UpdateControllers(userdata, cycles_late); | 78 | [this](u64 userdata, int cycles_late) { UpdateControllers(userdata, cycles_late); }); |
| 79 | }); | ||
| 80 | 79 | ||
| 81 | // TODO(shinyquagsire23): Other update callbacks? (accel, gyro?) | 80 | // TODO(shinyquagsire23): Other update callbacks? (accel, gyro?) |
| 82 | 81 | ||
| 83 | CoreTiming::ScheduleEvent(pad_update_ticks, pad_update_event); | 82 | Core::Timing::ScheduleEvent(pad_update_ticks, pad_update_event); |
| 84 | 83 | ||
| 85 | ReloadInputDevices(); | 84 | ReloadInputDevices(); |
| 86 | } | 85 | } |
| @@ -94,7 +93,7 @@ void IAppletResource::DeactivateController(HidController controller) { | |||
| 94 | } | 93 | } |
| 95 | 94 | ||
| 96 | IAppletResource ::~IAppletResource() { | 95 | IAppletResource ::~IAppletResource() { |
| 97 | CoreTiming::UnscheduleEvent(pad_update_event, 0); | 96 | Core::Timing::UnscheduleEvent(pad_update_event, 0); |
| 98 | } | 97 | } |
| 99 | 98 | ||
| 100 | void IAppletResource::GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) { | 99 | void IAppletResource::GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) { |
| @@ -114,7 +113,7 @@ void IAppletResource::UpdateControllers(u64 userdata, int cycles_late) { | |||
| 114 | controller->OnUpdate(shared_mem->GetPointer(), SHARED_MEMORY_SIZE); | 113 | controller->OnUpdate(shared_mem->GetPointer(), SHARED_MEMORY_SIZE); |
| 115 | } | 114 | } |
| 116 | 115 | ||
| 117 | CoreTiming::ScheduleEvent(pad_update_ticks - cycles_late, pad_update_event); | 116 | Core::Timing::ScheduleEvent(pad_update_ticks - cycles_late, pad_update_event); |
| 118 | } | 117 | } |
| 119 | 118 | ||
| 120 | class IActiveVibrationDeviceList final : public ServiceFramework<IActiveVibrationDeviceList> { | 119 | class IActiveVibrationDeviceList final : public ServiceFramework<IActiveVibrationDeviceList> { |
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h index eca27c056..6d897c842 100644 --- a/src/core/hle/service/hid/hid.h +++ b/src/core/hle/service/hid/hid.h | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | #include "controllers/controller_base.h" | 7 | #include "controllers/controller_base.h" |
| 8 | #include "core/hle/service/service.h" | 8 | #include "core/hle/service/service.h" |
| 9 | 9 | ||
| 10 | namespace CoreTiming { | 10 | namespace Core::Timing { |
| 11 | struct EventType; | 11 | struct EventType; |
| 12 | } | 12 | } |
| 13 | 13 | ||
| @@ -66,7 +66,7 @@ private: | |||
| 66 | 66 | ||
| 67 | Kernel::SharedPtr<Kernel::SharedMemory> shared_mem; | 67 | Kernel::SharedPtr<Kernel::SharedMemory> shared_mem; |
| 68 | 68 | ||
| 69 | CoreTiming::EventType* pad_update_event; | 69 | Core::Timing::EventType* pad_update_event; |
| 70 | 70 | ||
| 71 | std::array<std::unique_ptr<ControllerBase>, static_cast<size_t>(HidController::MaxControllers)> | 71 | std::array<std::unique_ptr<ControllerBase>, static_cast<size_t>(HidController::MaxControllers)> |
| 72 | controllers{}; | 72 | controllers{}; |
diff --git a/src/core/hle/service/hid/irs.cpp b/src/core/hle/service/hid/irs.cpp index 3c7f8b1ee..b427d4068 100644 --- a/src/core/hle/service/hid/irs.cpp +++ b/src/core/hle/service/hid/irs.cpp | |||
| @@ -98,7 +98,7 @@ void IRS::GetImageTransferProcessorState(Kernel::HLERequestContext& ctx) { | |||
| 98 | 98 | ||
| 99 | IPC::ResponseBuilder rb{ctx, 5}; | 99 | IPC::ResponseBuilder rb{ctx, 5}; |
| 100 | rb.Push(RESULT_SUCCESS); | 100 | rb.Push(RESULT_SUCCESS); |
| 101 | rb.PushRaw<u64>(CoreTiming::GetTicks()); | 101 | rb.PushRaw<u64>(Core::Timing::GetTicks()); |
| 102 | rb.PushRaw<u32>(0); | 102 | rb.PushRaw<u32>(0); |
| 103 | } | 103 | } |
| 104 | 104 | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp index d57a54ee8..88d80ba06 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp | |||
| @@ -184,7 +184,7 @@ u32 nvhost_ctrl_gpu::GetGpuTime(const std::vector<u8>& input, std::vector<u8>& o | |||
| 184 | 184 | ||
| 185 | IoctlGetGpuTime params{}; | 185 | IoctlGetGpuTime params{}; |
| 186 | std::memcpy(¶ms, input.data(), input.size()); | 186 | std::memcpy(¶ms, input.data(), input.size()); |
| 187 | params.gpu_time = CoreTiming::cyclesToNs(CoreTiming::GetTicks()); | 187 | params.gpu_time = Core::Timing::cyclesToNs(Core::Timing::GetTicks()); |
| 188 | std::memcpy(output.data(), ¶ms, output.size()); | 188 | std::memcpy(output.data(), ¶ms, output.size()); |
| 189 | return 0; | 189 | return 0; |
| 190 | } | 190 | } |
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h index b171f256c..ab90d591e 100644 --- a/src/core/hle/service/nvflinger/buffer_queue.h +++ b/src/core/hle/service/nvflinger/buffer_queue.h | |||
| @@ -13,10 +13,6 @@ | |||
| 13 | #include "core/hle/kernel/object.h" | 13 | #include "core/hle/kernel/object.h" |
| 14 | #include "core/hle/kernel/writable_event.h" | 14 | #include "core/hle/kernel/writable_event.h" |
| 15 | 15 | ||
| 16 | namespace CoreTiming { | ||
| 17 | struct EventType; | ||
| 18 | } | ||
| 19 | |||
| 20 | namespace Service::NVFlinger { | 16 | namespace Service::NVFlinger { |
| 21 | 17 | ||
| 22 | struct IGBPBuffer { | 18 | struct IGBPBuffer { |
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp index cde06916d..ce1b59860 100644 --- a/src/core/hle/service/nvflinger/nvflinger.cpp +++ b/src/core/hle/service/nvflinger/nvflinger.cpp | |||
| @@ -25,21 +25,21 @@ | |||
| 25 | namespace Service::NVFlinger { | 25 | namespace Service::NVFlinger { |
| 26 | 26 | ||
| 27 | constexpr std::size_t SCREEN_REFRESH_RATE = 60; | 27 | constexpr std::size_t SCREEN_REFRESH_RATE = 60; |
| 28 | constexpr u64 frame_ticks = static_cast<u64>(CoreTiming::BASE_CLOCK_RATE / SCREEN_REFRESH_RATE); | 28 | constexpr u64 frame_ticks = static_cast<u64>(Core::Timing::BASE_CLOCK_RATE / SCREEN_REFRESH_RATE); |
| 29 | 29 | ||
| 30 | NVFlinger::NVFlinger() { | 30 | NVFlinger::NVFlinger() { |
| 31 | // Schedule the screen composition events | 31 | // Schedule the screen composition events |
| 32 | composition_event = | 32 | composition_event = |
| 33 | CoreTiming::RegisterEvent("ScreenComposition", [this](u64 userdata, int cycles_late) { | 33 | Core::Timing::RegisterEvent("ScreenComposition", [this](u64 userdata, int cycles_late) { |
| 34 | Compose(); | 34 | Compose(); |
| 35 | CoreTiming::ScheduleEvent(frame_ticks - cycles_late, composition_event); | 35 | Core::Timing::ScheduleEvent(frame_ticks - cycles_late, composition_event); |
| 36 | }); | 36 | }); |
| 37 | 37 | ||
| 38 | CoreTiming::ScheduleEvent(frame_ticks, composition_event); | 38 | Core::Timing::ScheduleEvent(frame_ticks, composition_event); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | NVFlinger::~NVFlinger() { | 41 | NVFlinger::~NVFlinger() { |
| 42 | CoreTiming::UnscheduleEvent(composition_event, 0); | 42 | Core::Timing::UnscheduleEvent(composition_event, 0); |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | void NVFlinger::SetNVDrvInstance(std::shared_ptr<Nvidia::Module> instance) { | 45 | void NVFlinger::SetNVDrvInstance(std::shared_ptr<Nvidia::Module> instance) { |
diff --git a/src/core/hle/service/nvflinger/nvflinger.h b/src/core/hle/service/nvflinger/nvflinger.h index 4c55e99f4..6d8bcbd30 100644 --- a/src/core/hle/service/nvflinger/nvflinger.h +++ b/src/core/hle/service/nvflinger/nvflinger.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #include "common/common_types.h" | 14 | #include "common/common_types.h" |
| 15 | #include "core/hle/kernel/object.h" | 15 | #include "core/hle/kernel/object.h" |
| 16 | 16 | ||
| 17 | namespace CoreTiming { | 17 | namespace Core::Timing { |
| 18 | struct EventType; | 18 | struct EventType; |
| 19 | } | 19 | } |
| 20 | 20 | ||
| @@ -115,8 +115,8 @@ private: | |||
| 115 | /// layers. | 115 | /// layers. |
| 116 | u32 next_buffer_queue_id = 1; | 116 | u32 next_buffer_queue_id = 1; |
| 117 | 117 | ||
| 118 | /// CoreTiming event that handles screen composition. | 118 | /// Event that handles screen composition. |
| 119 | CoreTiming::EventType* composition_event; | 119 | Core::Timing::EventType* composition_event; |
| 120 | }; | 120 | }; |
| 121 | 121 | ||
| 122 | } // namespace Service::NVFlinger | 122 | } // namespace Service::NVFlinger |
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index c13640ad8..efebd1b24 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp | |||
| @@ -106,8 +106,8 @@ private: | |||
| 106 | void GetCurrentTimePoint(Kernel::HLERequestContext& ctx) { | 106 | void GetCurrentTimePoint(Kernel::HLERequestContext& ctx) { |
| 107 | LOG_DEBUG(Service_Time, "called"); | 107 | LOG_DEBUG(Service_Time, "called"); |
| 108 | 108 | ||
| 109 | SteadyClockTimePoint steady_clock_time_point{ | 109 | const SteadyClockTimePoint steady_clock_time_point{ |
| 110 | CoreTiming::cyclesToMs(CoreTiming::GetTicks()) / 1000}; | 110 | Core::Timing::cyclesToMs(Core::Timing::GetTicks()) / 1000}; |
| 111 | IPC::ResponseBuilder rb{ctx, (sizeof(SteadyClockTimePoint) / 4) + 2}; | 111 | IPC::ResponseBuilder rb{ctx, (sizeof(SteadyClockTimePoint) / 4) + 2}; |
| 112 | rb.Push(RESULT_SUCCESS); | 112 | rb.Push(RESULT_SUCCESS); |
| 113 | rb.PushRaw(steady_clock_time_point); | 113 | rb.PushRaw(steady_clock_time_point); |
| @@ -282,7 +282,7 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { | |||
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | const SteadyClockTimePoint steady_clock_time_point{ | 284 | const SteadyClockTimePoint steady_clock_time_point{ |
| 285 | CoreTiming::cyclesToMs(CoreTiming::GetTicks()) / 1000, {}}; | 285 | Core::Timing::cyclesToMs(Core::Timing::GetTicks()) / 1000, {}}; |
| 286 | 286 | ||
| 287 | CalendarTime calendar_time{}; | 287 | CalendarTime calendar_time{}; |
| 288 | calendar_time.year = tm->tm_year + 1900; | 288 | calendar_time.year = tm->tm_year + 1900; |
diff --git a/src/tests/core/core_timing.cpp b/src/tests/core/core_timing.cpp index 2242c14cf..77607a755 100644 --- a/src/tests/core/core_timing.cpp +++ b/src/tests/core/core_timing.cpp | |||
| @@ -31,10 +31,10 @@ void CallbackTemplate(u64 userdata, s64 cycles_late) { | |||
| 31 | class ScopeInit final { | 31 | class ScopeInit final { |
| 32 | public: | 32 | public: |
| 33 | ScopeInit() { | 33 | ScopeInit() { |
| 34 | CoreTiming::Init(); | 34 | Core::Timing::Init(); |
| 35 | } | 35 | } |
| 36 | ~ScopeInit() { | 36 | ~ScopeInit() { |
| 37 | CoreTiming::Shutdown(); | 37 | Core::Timing::Shutdown(); |
| 38 | } | 38 | } |
| 39 | }; | 39 | }; |
| 40 | 40 | ||
| @@ -44,37 +44,37 @@ static void AdvanceAndCheck(u32 idx, int downcount, int expected_lateness = 0, | |||
| 44 | expected_callback = CB_IDS[idx]; | 44 | expected_callback = CB_IDS[idx]; |
| 45 | lateness = expected_lateness; | 45 | lateness = expected_lateness; |
| 46 | 46 | ||
| 47 | CoreTiming::AddTicks(CoreTiming::GetDowncount() - | 47 | // Pretend we executed X cycles of instructions. |
| 48 | cpu_downcount); // Pretend we executed X cycles of instructions. | 48 | Core::Timing::AddTicks(Core::Timing::GetDowncount() - cpu_downcount); |
| 49 | CoreTiming::Advance(); | 49 | Core::Timing::Advance(); |
| 50 | 50 | ||
| 51 | REQUIRE(decltype(callbacks_ran_flags)().set(idx) == callbacks_ran_flags); | 51 | REQUIRE(decltype(callbacks_ran_flags)().set(idx) == callbacks_ran_flags); |
| 52 | REQUIRE(downcount == CoreTiming::GetDowncount()); | 52 | REQUIRE(downcount == Core::Timing::GetDowncount()); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | TEST_CASE("CoreTiming[BasicOrder]", "[core]") { | 55 | TEST_CASE("CoreTiming[BasicOrder]", "[core]") { |
| 56 | ScopeInit guard; | 56 | ScopeInit guard; |
| 57 | 57 | ||
| 58 | CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>); | 58 | Core::Timing::EventType* cb_a = Core::Timing::RegisterEvent("callbackA", CallbackTemplate<0>); |
| 59 | CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>); | 59 | Core::Timing::EventType* cb_b = Core::Timing::RegisterEvent("callbackB", CallbackTemplate<1>); |
| 60 | CoreTiming::EventType* cb_c = CoreTiming::RegisterEvent("callbackC", CallbackTemplate<2>); | 60 | Core::Timing::EventType* cb_c = Core::Timing::RegisterEvent("callbackC", CallbackTemplate<2>); |
| 61 | CoreTiming::EventType* cb_d = CoreTiming::RegisterEvent("callbackD", CallbackTemplate<3>); | 61 | Core::Timing::EventType* cb_d = Core::Timing::RegisterEvent("callbackD", CallbackTemplate<3>); |
| 62 | CoreTiming::EventType* cb_e = CoreTiming::RegisterEvent("callbackE", CallbackTemplate<4>); | 62 | Core::Timing::EventType* cb_e = Core::Timing::RegisterEvent("callbackE", CallbackTemplate<4>); |
| 63 | 63 | ||
| 64 | // Enter slice 0 | 64 | // Enter slice 0 |
| 65 | CoreTiming::Advance(); | 65 | Core::Timing::Advance(); |
| 66 | 66 | ||
| 67 | // D -> B -> C -> A -> E | 67 | // D -> B -> C -> A -> E |
| 68 | CoreTiming::ScheduleEvent(1000, cb_a, CB_IDS[0]); | 68 | Core::Timing::ScheduleEvent(1000, cb_a, CB_IDS[0]); |
| 69 | REQUIRE(1000 == CoreTiming::GetDowncount()); | 69 | REQUIRE(1000 == Core::Timing::GetDowncount()); |
| 70 | CoreTiming::ScheduleEvent(500, cb_b, CB_IDS[1]); | 70 | Core::Timing::ScheduleEvent(500, cb_b, CB_IDS[1]); |
| 71 | REQUIRE(500 == CoreTiming::GetDowncount()); | 71 | REQUIRE(500 == Core::Timing::GetDowncount()); |
| 72 | CoreTiming::ScheduleEvent(800, cb_c, CB_IDS[2]); | 72 | Core::Timing::ScheduleEvent(800, cb_c, CB_IDS[2]); |
| 73 | REQUIRE(500 == CoreTiming::GetDowncount()); | 73 | REQUIRE(500 == Core::Timing::GetDowncount()); |
| 74 | CoreTiming::ScheduleEvent(100, cb_d, CB_IDS[3]); | 74 | Core::Timing::ScheduleEvent(100, cb_d, CB_IDS[3]); |
| 75 | REQUIRE(100 == CoreTiming::GetDowncount()); | 75 | REQUIRE(100 == Core::Timing::GetDowncount()); |
| 76 | CoreTiming::ScheduleEvent(1200, cb_e, CB_IDS[4]); | 76 | Core::Timing::ScheduleEvent(1200, cb_e, CB_IDS[4]); |
| 77 | REQUIRE(100 == CoreTiming::GetDowncount()); | 77 | REQUIRE(100 == Core::Timing::GetDowncount()); |
| 78 | 78 | ||
| 79 | AdvanceAndCheck(3, 400); | 79 | AdvanceAndCheck(3, 400); |
| 80 | AdvanceAndCheck(1, 300); | 80 | AdvanceAndCheck(1, 300); |
| @@ -86,36 +86,36 @@ TEST_CASE("CoreTiming[BasicOrder]", "[core]") { | |||
| 86 | TEST_CASE("CoreTiming[Threadsave]", "[core]") { | 86 | TEST_CASE("CoreTiming[Threadsave]", "[core]") { |
| 87 | ScopeInit guard; | 87 | ScopeInit guard; |
| 88 | 88 | ||
| 89 | CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>); | 89 | Core::Timing::EventType* cb_a = Core::Timing::RegisterEvent("callbackA", CallbackTemplate<0>); |
| 90 | CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>); | 90 | Core::Timing::EventType* cb_b = Core::Timing::RegisterEvent("callbackB", CallbackTemplate<1>); |
| 91 | CoreTiming::EventType* cb_c = CoreTiming::RegisterEvent("callbackC", CallbackTemplate<2>); | 91 | Core::Timing::EventType* cb_c = Core::Timing::RegisterEvent("callbackC", CallbackTemplate<2>); |
| 92 | CoreTiming::EventType* cb_d = CoreTiming::RegisterEvent("callbackD", CallbackTemplate<3>); | 92 | Core::Timing::EventType* cb_d = Core::Timing::RegisterEvent("callbackD", CallbackTemplate<3>); |
| 93 | CoreTiming::EventType* cb_e = CoreTiming::RegisterEvent("callbackE", CallbackTemplate<4>); | 93 | Core::Timing::EventType* cb_e = Core::Timing::RegisterEvent("callbackE", CallbackTemplate<4>); |
| 94 | 94 | ||
| 95 | // Enter slice 0 | 95 | // Enter slice 0 |
| 96 | CoreTiming::Advance(); | 96 | Core::Timing::Advance(); |
| 97 | 97 | ||
| 98 | // D -> B -> C -> A -> E | 98 | // D -> B -> C -> A -> E |
| 99 | CoreTiming::ScheduleEventThreadsafe(1000, cb_a, CB_IDS[0]); | 99 | Core::Timing::ScheduleEventThreadsafe(1000, cb_a, CB_IDS[0]); |
| 100 | // Manually force since ScheduleEventThreadsafe doesn't call it | 100 | // Manually force since ScheduleEventThreadsafe doesn't call it |
| 101 | CoreTiming::ForceExceptionCheck(1000); | 101 | Core::Timing::ForceExceptionCheck(1000); |
| 102 | REQUIRE(1000 == CoreTiming::GetDowncount()); | 102 | REQUIRE(1000 == Core::Timing::GetDowncount()); |
| 103 | CoreTiming::ScheduleEventThreadsafe(500, cb_b, CB_IDS[1]); | 103 | Core::Timing::ScheduleEventThreadsafe(500, cb_b, CB_IDS[1]); |
| 104 | // Manually force since ScheduleEventThreadsafe doesn't call it | 104 | // Manually force since ScheduleEventThreadsafe doesn't call it |
| 105 | CoreTiming::ForceExceptionCheck(500); | 105 | Core::Timing::ForceExceptionCheck(500); |
| 106 | REQUIRE(500 == CoreTiming::GetDowncount()); | 106 | REQUIRE(500 == Core::Timing::GetDowncount()); |
| 107 | CoreTiming::ScheduleEventThreadsafe(800, cb_c, CB_IDS[2]); | 107 | Core::Timing::ScheduleEventThreadsafe(800, cb_c, CB_IDS[2]); |
| 108 | // Manually force since ScheduleEventThreadsafe doesn't call it | 108 | // Manually force since ScheduleEventThreadsafe doesn't call it |
| 109 | CoreTiming::ForceExceptionCheck(800); | 109 | Core::Timing::ForceExceptionCheck(800); |
| 110 | REQUIRE(500 == CoreTiming::GetDowncount()); | 110 | REQUIRE(500 == Core::Timing::GetDowncount()); |
| 111 | CoreTiming::ScheduleEventThreadsafe(100, cb_d, CB_IDS[3]); | 111 | Core::Timing::ScheduleEventThreadsafe(100, cb_d, CB_IDS[3]); |
| 112 | // Manually force since ScheduleEventThreadsafe doesn't call it | 112 | // Manually force since ScheduleEventThreadsafe doesn't call it |
| 113 | CoreTiming::ForceExceptionCheck(100); | 113 | Core::Timing::ForceExceptionCheck(100); |
| 114 | REQUIRE(100 == CoreTiming::GetDowncount()); | 114 | REQUIRE(100 == Core::Timing::GetDowncount()); |
| 115 | CoreTiming::ScheduleEventThreadsafe(1200, cb_e, CB_IDS[4]); | 115 | Core::Timing::ScheduleEventThreadsafe(1200, cb_e, CB_IDS[4]); |
| 116 | // Manually force since ScheduleEventThreadsafe doesn't call it | 116 | // Manually force since ScheduleEventThreadsafe doesn't call it |
| 117 | CoreTiming::ForceExceptionCheck(1200); | 117 | Core::Timing::ForceExceptionCheck(1200); |
| 118 | REQUIRE(100 == CoreTiming::GetDowncount()); | 118 | REQUIRE(100 == Core::Timing::GetDowncount()); |
| 119 | 119 | ||
| 120 | AdvanceAndCheck(3, 400); | 120 | AdvanceAndCheck(3, 400); |
| 121 | AdvanceAndCheck(1, 300); | 121 | AdvanceAndCheck(1, 300); |
| @@ -143,42 +143,42 @@ TEST_CASE("CoreTiming[SharedSlot]", "[core]") { | |||
| 143 | 143 | ||
| 144 | ScopeInit guard; | 144 | ScopeInit guard; |
| 145 | 145 | ||
| 146 | CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", FifoCallback<0>); | 146 | Core::Timing::EventType* cb_a = Core::Timing::RegisterEvent("callbackA", FifoCallback<0>); |
| 147 | CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", FifoCallback<1>); | 147 | Core::Timing::EventType* cb_b = Core::Timing::RegisterEvent("callbackB", FifoCallback<1>); |
| 148 | CoreTiming::EventType* cb_c = CoreTiming::RegisterEvent("callbackC", FifoCallback<2>); | 148 | Core::Timing::EventType* cb_c = Core::Timing::RegisterEvent("callbackC", FifoCallback<2>); |
| 149 | CoreTiming::EventType* cb_d = CoreTiming::RegisterEvent("callbackD", FifoCallback<3>); | 149 | Core::Timing::EventType* cb_d = Core::Timing::RegisterEvent("callbackD", FifoCallback<3>); |
| 150 | CoreTiming::EventType* cb_e = CoreTiming::RegisterEvent("callbackE", FifoCallback<4>); | 150 | Core::Timing::EventType* cb_e = Core::Timing::RegisterEvent("callbackE", FifoCallback<4>); |
| 151 | 151 | ||
| 152 | CoreTiming::ScheduleEvent(1000, cb_a, CB_IDS[0]); | 152 | Core::Timing::ScheduleEvent(1000, cb_a, CB_IDS[0]); |
| 153 | CoreTiming::ScheduleEvent(1000, cb_b, CB_IDS[1]); | 153 | Core::Timing::ScheduleEvent(1000, cb_b, CB_IDS[1]); |
| 154 | CoreTiming::ScheduleEvent(1000, cb_c, CB_IDS[2]); | 154 | Core::Timing::ScheduleEvent(1000, cb_c, CB_IDS[2]); |
| 155 | CoreTiming::ScheduleEvent(1000, cb_d, CB_IDS[3]); | 155 | Core::Timing::ScheduleEvent(1000, cb_d, CB_IDS[3]); |
| 156 | CoreTiming::ScheduleEvent(1000, cb_e, CB_IDS[4]); | 156 | Core::Timing::ScheduleEvent(1000, cb_e, CB_IDS[4]); |
| 157 | 157 | ||
| 158 | // Enter slice 0 | 158 | // Enter slice 0 |
| 159 | CoreTiming::Advance(); | 159 | Core::Timing::Advance(); |
| 160 | REQUIRE(1000 == CoreTiming::GetDowncount()); | 160 | REQUIRE(1000 == Core::Timing::GetDowncount()); |
| 161 | 161 | ||
| 162 | callbacks_ran_flags = 0; | 162 | callbacks_ran_flags = 0; |
| 163 | counter = 0; | 163 | counter = 0; |
| 164 | lateness = 0; | 164 | lateness = 0; |
| 165 | CoreTiming::AddTicks(CoreTiming::GetDowncount()); | 165 | Core::Timing::AddTicks(Core::Timing::GetDowncount()); |
| 166 | CoreTiming::Advance(); | 166 | Core::Timing::Advance(); |
| 167 | REQUIRE(MAX_SLICE_LENGTH == CoreTiming::GetDowncount()); | 167 | REQUIRE(MAX_SLICE_LENGTH == Core::Timing::GetDowncount()); |
| 168 | REQUIRE(0x1FULL == callbacks_ran_flags.to_ullong()); | 168 | REQUIRE(0x1FULL == callbacks_ran_flags.to_ullong()); |
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | TEST_CASE("CoreTiming[PredictableLateness]", "[core]") { | 171 | TEST_CASE("Core::Timing[PredictableLateness]", "[core]") { |
| 172 | ScopeInit guard; | 172 | ScopeInit guard; |
| 173 | 173 | ||
| 174 | CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>); | 174 | Core::Timing::EventType* cb_a = Core::Timing::RegisterEvent("callbackA", CallbackTemplate<0>); |
| 175 | CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>); | 175 | Core::Timing::EventType* cb_b = Core::Timing::RegisterEvent("callbackB", CallbackTemplate<1>); |
| 176 | 176 | ||
| 177 | // Enter slice 0 | 177 | // Enter slice 0 |
| 178 | CoreTiming::Advance(); | 178 | Core::Timing::Advance(); |
| 179 | 179 | ||
| 180 | CoreTiming::ScheduleEvent(100, cb_a, CB_IDS[0]); | 180 | Core::Timing::ScheduleEvent(100, cb_a, CB_IDS[0]); |
| 181 | CoreTiming::ScheduleEvent(200, cb_b, CB_IDS[1]); | 181 | Core::Timing::ScheduleEvent(200, cb_b, CB_IDS[1]); |
| 182 | 182 | ||
| 183 | AdvanceAndCheck(0, 90, 10, -10); // (100 - 10) | 183 | AdvanceAndCheck(0, 90, 10, -10); // (100 - 10) |
| 184 | AdvanceAndCheck(1, MAX_SLICE_LENGTH, 50, -50); | 184 | AdvanceAndCheck(1, MAX_SLICE_LENGTH, 50, -50); |
| @@ -192,9 +192,10 @@ static void RescheduleCallback(u64 userdata, s64 cycles_late) { | |||
| 192 | REQUIRE(reschedules >= 0); | 192 | REQUIRE(reschedules >= 0); |
| 193 | REQUIRE(lateness == cycles_late); | 193 | REQUIRE(lateness == cycles_late); |
| 194 | 194 | ||
| 195 | if (reschedules > 0) | 195 | if (reschedules > 0) { |
| 196 | CoreTiming::ScheduleEvent(1000, reinterpret_cast<CoreTiming::EventType*>(userdata), | 196 | Core::Timing::ScheduleEvent(1000, reinterpret_cast<Core::Timing::EventType*>(userdata), |
| 197 | userdata); | 197 | userdata); |
| 198 | } | ||
| 198 | } | 199 | } |
| 199 | } // namespace ChainSchedulingTest | 200 | } // namespace ChainSchedulingTest |
| 200 | 201 | ||
| @@ -203,35 +204,35 @@ TEST_CASE("CoreTiming[ChainScheduling]", "[core]") { | |||
| 203 | 204 | ||
| 204 | ScopeInit guard; | 205 | ScopeInit guard; |
| 205 | 206 | ||
| 206 | CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>); | 207 | Core::Timing::EventType* cb_a = Core::Timing::RegisterEvent("callbackA", CallbackTemplate<0>); |
| 207 | CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>); | 208 | Core::Timing::EventType* cb_b = Core::Timing::RegisterEvent("callbackB", CallbackTemplate<1>); |
| 208 | CoreTiming::EventType* cb_c = CoreTiming::RegisterEvent("callbackC", CallbackTemplate<2>); | 209 | Core::Timing::EventType* cb_c = Core::Timing::RegisterEvent("callbackC", CallbackTemplate<2>); |
| 209 | CoreTiming::EventType* cb_rs = | 210 | Core::Timing::EventType* cb_rs = |
| 210 | CoreTiming::RegisterEvent("callbackReschedule", RescheduleCallback); | 211 | Core::Timing::RegisterEvent("callbackReschedule", RescheduleCallback); |
| 211 | 212 | ||
| 212 | // Enter slice 0 | 213 | // Enter slice 0 |
| 213 | CoreTiming::Advance(); | 214 | Core::Timing::Advance(); |
| 214 | 215 | ||
| 215 | CoreTiming::ScheduleEvent(800, cb_a, CB_IDS[0]); | 216 | Core::Timing::ScheduleEvent(800, cb_a, CB_IDS[0]); |
| 216 | CoreTiming::ScheduleEvent(1000, cb_b, CB_IDS[1]); | 217 | Core::Timing::ScheduleEvent(1000, cb_b, CB_IDS[1]); |
| 217 | CoreTiming::ScheduleEvent(2200, cb_c, CB_IDS[2]); | 218 | Core::Timing::ScheduleEvent(2200, cb_c, CB_IDS[2]); |
| 218 | CoreTiming::ScheduleEvent(1000, cb_rs, reinterpret_cast<u64>(cb_rs)); | 219 | Core::Timing::ScheduleEvent(1000, cb_rs, reinterpret_cast<u64>(cb_rs)); |
| 219 | REQUIRE(800 == CoreTiming::GetDowncount()); | 220 | REQUIRE(800 == Core::Timing::GetDowncount()); |
| 220 | 221 | ||
| 221 | reschedules = 3; | 222 | reschedules = 3; |
| 222 | AdvanceAndCheck(0, 200); // cb_a | 223 | AdvanceAndCheck(0, 200); // cb_a |
| 223 | AdvanceAndCheck(1, 1000); // cb_b, cb_rs | 224 | AdvanceAndCheck(1, 1000); // cb_b, cb_rs |
| 224 | REQUIRE(2 == reschedules); | 225 | REQUIRE(2 == reschedules); |
| 225 | 226 | ||
| 226 | CoreTiming::AddTicks(CoreTiming::GetDowncount()); | 227 | Core::Timing::AddTicks(Core::Timing::GetDowncount()); |
| 227 | CoreTiming::Advance(); // cb_rs | 228 | Core::Timing::Advance(); // cb_rs |
| 228 | REQUIRE(1 == reschedules); | 229 | REQUIRE(1 == reschedules); |
| 229 | REQUIRE(200 == CoreTiming::GetDowncount()); | 230 | REQUIRE(200 == Core::Timing::GetDowncount()); |
| 230 | 231 | ||
| 231 | AdvanceAndCheck(2, 800); // cb_c | 232 | AdvanceAndCheck(2, 800); // cb_c |
| 232 | 233 | ||
| 233 | CoreTiming::AddTicks(CoreTiming::GetDowncount()); | 234 | Core::Timing::AddTicks(Core::Timing::GetDowncount()); |
| 234 | CoreTiming::Advance(); // cb_rs | 235 | Core::Timing::Advance(); // cb_rs |
| 235 | REQUIRE(0 == reschedules); | 236 | REQUIRE(0 == reschedules); |
| 236 | REQUIRE(MAX_SLICE_LENGTH == CoreTiming::GetDowncount()); | 237 | REQUIRE(MAX_SLICE_LENGTH == Core::Timing::GetDowncount()); |
| 237 | } | 238 | } |
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 10eae6a65..19b6b14b2 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -317,7 +317,7 @@ void Maxwell3D::ProcessQueryGet() { | |||
| 317 | LongQueryResult query_result{}; | 317 | LongQueryResult query_result{}; |
| 318 | query_result.value = result; | 318 | query_result.value = result; |
| 319 | // TODO(Subv): Generate a real GPU timestamp and write it here instead of CoreTiming | 319 | // TODO(Subv): Generate a real GPU timestamp and write it here instead of CoreTiming |
| 320 | query_result.timestamp = CoreTiming::GetTicks(); | 320 | query_result.timestamp = Core::Timing::GetTicks(); |
| 321 | Memory::WriteBlock(*address, &query_result, sizeof(query_result)); | 321 | Memory::WriteBlock(*address, &query_result, sizeof(query_result)); |
| 322 | } | 322 | } |
| 323 | dirty_flags.OnMemoryWrite(); | 323 | dirty_flags.OnMemoryWrite(); |
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index d3d32a359..d2ba1103e 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp | |||
| @@ -282,7 +282,7 @@ void GPU::ProcessSemaphoreTriggerMethod() { | |||
| 282 | block.sequence = regs.semaphore_sequence; | 282 | block.sequence = regs.semaphore_sequence; |
| 283 | // TODO(Kmather73): Generate a real GPU timestamp and write it here instead of | 283 | // TODO(Kmather73): Generate a real GPU timestamp and write it here instead of |
| 284 | // CoreTiming | 284 | // CoreTiming |
| 285 | block.timestamp = CoreTiming::GetTicks(); | 285 | block.timestamp = Core::Timing::GetTicks(); |
| 286 | Memory::WriteBlock(*address, &block, sizeof(block)); | 286 | Memory::WriteBlock(*address, &block, sizeof(block)); |
| 287 | } else { | 287 | } else { |
| 288 | const auto address = | 288 | const auto address = |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 6476a9e1a..843c034e7 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -137,7 +137,7 @@ void RendererOpenGL::SwapBuffers( | |||
| 137 | 137 | ||
| 138 | render_window.PollEvents(); | 138 | render_window.PollEvents(); |
| 139 | 139 | ||
| 140 | Core::System::GetInstance().FrameLimiter().DoFrameLimiting(CoreTiming::GetGlobalTimeUs()); | 140 | Core::System::GetInstance().FrameLimiter().DoFrameLimiting(Core::Timing::GetGlobalTimeUs()); |
| 141 | Core::System::GetInstance().GetPerfStats().BeginSystemFrame(); | 141 | Core::System::GetInstance().GetPerfStats().BeginSystemFrame(); |
| 142 | 142 | ||
| 143 | // Restore the rasterizer state | 143 | // Restore the rasterizer state |