summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorGravatar bunnei2020-07-18 01:45:10 -0400
committerGravatar GitHub2020-07-18 01:45:10 -0400
commit4a8cb9a70671db5684dadf10061f3c3cf1d27741 (patch)
tree76ff712dc903f71245bd6108519b125ca6fac99e /src/tests
parentMerge pull request #4373 from lioncash/allocator (diff)
parentcore_timing: Remove unused data member (diff)
downloadyuzu-4a8cb9a70671db5684dadf10061f3c3cf1d27741.tar.gz
yuzu-4a8cb9a70671db5684dadf10061f3c3cf1d27741.tar.xz
yuzu-4a8cb9a70671db5684dadf10061f3c3cf1d27741.zip
Merge pull request #4348 from lioncash/nano
core_timing: Make usage of nanoseconds more consistent in the interface
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/core/core_timing.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/tests/core/core_timing.cpp b/src/tests/core/core_timing.cpp
index e66db1940..244463a47 100644
--- a/src/tests/core/core_timing.cpp
+++ b/src/tests/core/core_timing.cpp
@@ -6,6 +6,7 @@
6 6
7#include <array> 7#include <array>
8#include <bitset> 8#include <bitset>
9#include <chrono>
9#include <cstdlib> 10#include <cstdlib>
10#include <memory> 11#include <memory>
11#include <string> 12#include <string>
@@ -17,7 +18,6 @@
17namespace { 18namespace {
18// Numbers are chosen randomly to make sure the correct one is given. 19// Numbers are chosen randomly to make sure the correct one is given.
19constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}}; 20constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}};
20constexpr int MAX_SLICE_LENGTH = 10000; // Copied from CoreTiming internals
21constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}}; 21constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}};
22std::array<s64, 5> delays{}; 22std::array<s64, 5> delays{};
23 23
@@ -25,12 +25,12 @@ std::bitset<CB_IDS.size()> callbacks_ran_flags;
25u64 expected_callback = 0; 25u64 expected_callback = 0;
26 26
27template <unsigned int IDX> 27template <unsigned int IDX>
28void HostCallbackTemplate(u64 userdata, s64 nanoseconds_late) { 28void HostCallbackTemplate(u64 userdata, std::chrono::nanoseconds ns_late) {
29 static_assert(IDX < CB_IDS.size(), "IDX out of range"); 29 static_assert(IDX < CB_IDS.size(), "IDX out of range");
30 callbacks_ran_flags.set(IDX); 30 callbacks_ran_flags.set(IDX);
31 REQUIRE(CB_IDS[IDX] == userdata); 31 REQUIRE(CB_IDS[IDX] == userdata);
32 REQUIRE(CB_IDS[IDX] == CB_IDS[calls_order[expected_callback]]); 32 REQUIRE(CB_IDS[IDX] == CB_IDS[calls_order[expected_callback]]);
33 delays[IDX] = nanoseconds_late; 33 delays[IDX] = ns_late.count();
34 ++expected_callback; 34 ++expected_callback;
35} 35}
36 36
@@ -77,10 +77,12 @@ TEST_CASE("CoreTiming[BasicOrder]", "[core]") {
77 77
78 core_timing.SyncPause(true); 78 core_timing.SyncPause(true);
79 79
80 u64 one_micro = 1000U; 80 const u64 one_micro = 1000U;
81 for (std::size_t i = 0; i < events.size(); i++) { 81 for (std::size_t i = 0; i < events.size(); i++) {
82 u64 order = calls_order[i]; 82 const u64 order = calls_order[i];
83 core_timing.ScheduleEvent(i * one_micro + 100U, events[order], CB_IDS[order]); 83 const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)};
84
85 core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]);
84 } 86 }
85 /// test pause 87 /// test pause
86 REQUIRE(callbacks_ran_flags.none()); 88 REQUIRE(callbacks_ran_flags.none());
@@ -116,13 +118,16 @@ TEST_CASE("CoreTiming[BasicOrderNoPausing]", "[core]") {
116 118
117 expected_callback = 0; 119 expected_callback = 0;
118 120
119 u64 start = core_timing.GetGlobalTimeNs().count(); 121 const u64 start = core_timing.GetGlobalTimeNs().count();
120 u64 one_micro = 1000U; 122 const u64 one_micro = 1000U;
123
121 for (std::size_t i = 0; i < events.size(); i++) { 124 for (std::size_t i = 0; i < events.size(); i++) {
122 u64 order = calls_order[i]; 125 const u64 order = calls_order[i];
123 core_timing.ScheduleEvent(i * one_micro + 100U, events[order], CB_IDS[order]); 126 const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)};
127 core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]);
124 } 128 }
125 u64 end = core_timing.GetGlobalTimeNs().count(); 129
130 const u64 end = core_timing.GetGlobalTimeNs().count();
126 const double scheduling_time = static_cast<double>(end - start); 131 const double scheduling_time = static_cast<double>(end - start);
127 const double timer_time = static_cast<double>(TestTimerSpeed(core_timing)); 132 const double timer_time = static_cast<double>(TestTimerSpeed(core_timing));
128 133