summaryrefslogtreecommitdiff
path: root/src/tests/core/host_timing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/core/host_timing.cpp')
-rw-r--r--src/tests/core/host_timing.cpp45
1 files changed, 19 insertions, 26 deletions
diff --git a/src/tests/core/host_timing.cpp b/src/tests/core/host_timing.cpp
index ca9c8e50a..3d0532d02 100644
--- a/src/tests/core/host_timing.cpp
+++ b/src/tests/core/host_timing.cpp
@@ -17,7 +17,7 @@
17// Numbers are chosen randomly to make sure the correct one is given. 17// Numbers are chosen randomly to make sure the correct one is given.
18static constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}}; 18static constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}};
19static constexpr int MAX_SLICE_LENGTH = 10000; // Copied from CoreTiming internals 19static constexpr int MAX_SLICE_LENGTH = 10000; // Copied from CoreTiming internals
20static constexpr std::array<u64, 5> calls_order{{2,0,1,4,3}}; 20static constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}};
21static std::array<s64, 5> delays{}; 21static std::array<s64, 5> delays{};
22 22
23static std::bitset<CB_IDS.size()> callbacks_ran_flags; 23static std::bitset<CB_IDS.size()> callbacks_ran_flags;
@@ -52,16 +52,11 @@ TEST_CASE("HostTiming[BasicOrder]", "[core]") {
52 auto& core_timing = guard.core_timing; 52 auto& core_timing = guard.core_timing;
53 std::vector<std::shared_ptr<Core::HostTiming::EventType>> events; 53 std::vector<std::shared_ptr<Core::HostTiming::EventType>> events;
54 events.resize(5); 54 events.resize(5);
55 events[0] = 55 events[0] = Core::HostTiming::CreateEvent("callbackA", HostCallbackTemplate<0>);
56 Core::HostTiming::CreateEvent("callbackA", HostCallbackTemplate<0>); 56 events[1] = Core::HostTiming::CreateEvent("callbackB", HostCallbackTemplate<1>);
57 events[1] = 57 events[2] = Core::HostTiming::CreateEvent("callbackC", HostCallbackTemplate<2>);
58 Core::HostTiming::CreateEvent("callbackB", HostCallbackTemplate<1>); 58 events[3] = Core::HostTiming::CreateEvent("callbackD", HostCallbackTemplate<3>);
59 events[2] = 59 events[4] = Core::HostTiming::CreateEvent("callbackE", HostCallbackTemplate<4>);
60 Core::HostTiming::CreateEvent("callbackC", HostCallbackTemplate<2>);
61 events[3] =
62 Core::HostTiming::CreateEvent("callbackD", HostCallbackTemplate<3>);
63 events[4] =
64 Core::HostTiming::CreateEvent("callbackE", HostCallbackTemplate<4>);
65 60
66 expected_callback = 0; 61 expected_callback = 0;
67 62
@@ -70,14 +65,15 @@ TEST_CASE("HostTiming[BasicOrder]", "[core]") {
70 u64 one_micro = 1000U; 65 u64 one_micro = 1000U;
71 for (std::size_t i = 0; i < events.size(); i++) { 66 for (std::size_t i = 0; i < events.size(); i++) {
72 u64 order = calls_order[i]; 67 u64 order = calls_order[i];
73 core_timing.ScheduleEvent(i*one_micro + 100U, events[order], CB_IDS[order]); 68 core_timing.ScheduleEvent(i * one_micro + 100U, events[order], CB_IDS[order]);
74 } 69 }
75 /// test pause 70 /// test pause
76 REQUIRE(callbacks_ran_flags.none()); 71 REQUIRE(callbacks_ran_flags.none());
77 72
78 core_timing.Pause(false); // No need to sync 73 core_timing.Pause(false); // No need to sync
79 74
80 while (core_timing.HasPendingEvents()); 75 while (core_timing.HasPendingEvents())
76 ;
81 77
82 REQUIRE(callbacks_ran_flags.all()); 78 REQUIRE(callbacks_ran_flags.all());
83 79
@@ -106,16 +102,11 @@ TEST_CASE("HostTiming[BasicOrderNoPausing]", "[core]") {
106 auto& core_timing = guard.core_timing; 102 auto& core_timing = guard.core_timing;
107 std::vector<std::shared_ptr<Core::HostTiming::EventType>> events; 103 std::vector<std::shared_ptr<Core::HostTiming::EventType>> events;
108 events.resize(5); 104 events.resize(5);
109 events[0] = 105 events[0] = Core::HostTiming::CreateEvent("callbackA", HostCallbackTemplate<0>);
110 Core::HostTiming::CreateEvent("callbackA", HostCallbackTemplate<0>); 106 events[1] = Core::HostTiming::CreateEvent("callbackB", HostCallbackTemplate<1>);
111 events[1] = 107 events[2] = Core::HostTiming::CreateEvent("callbackC", HostCallbackTemplate<2>);
112 Core::HostTiming::CreateEvent("callbackB", HostCallbackTemplate<1>); 108 events[3] = Core::HostTiming::CreateEvent("callbackD", HostCallbackTemplate<3>);
113 events[2] = 109 events[4] = Core::HostTiming::CreateEvent("callbackE", HostCallbackTemplate<4>);
114 Core::HostTiming::CreateEvent("callbackC", HostCallbackTemplate<2>);
115 events[3] =
116 Core::HostTiming::CreateEvent("callbackD", HostCallbackTemplate<3>);
117 events[4] =
118 Core::HostTiming::CreateEvent("callbackE", HostCallbackTemplate<4>);
119 110
120 core_timing.SyncPause(true); 111 core_timing.SyncPause(true);
121 core_timing.SyncPause(false); 112 core_timing.SyncPause(false);
@@ -126,13 +117,14 @@ TEST_CASE("HostTiming[BasicOrderNoPausing]", "[core]") {
126 u64 one_micro = 1000U; 117 u64 one_micro = 1000U;
127 for (std::size_t i = 0; i < events.size(); i++) { 118 for (std::size_t i = 0; i < events.size(); i++) {
128 u64 order = calls_order[i]; 119 u64 order = calls_order[i];
129 core_timing.ScheduleEvent(i*one_micro + 100U, events[order], CB_IDS[order]); 120 core_timing.ScheduleEvent(i * one_micro + 100U, events[order], CB_IDS[order]);
130 } 121 }
131 u64 end = core_timing.GetGlobalTimeNs().count(); 122 u64 end = core_timing.GetGlobalTimeNs().count();
132 const double scheduling_time = static_cast<double>(end - start); 123 const double scheduling_time = static_cast<double>(end - start);
133 const double timer_time = static_cast<double>(TestTimerSpeed(core_timing)); 124 const double timer_time = static_cast<double>(TestTimerSpeed(core_timing));
134 125
135 while (core_timing.HasPendingEvents()); 126 while (core_timing.HasPendingEvents())
127 ;
136 128
137 REQUIRE(callbacks_ran_flags.all()); 129 REQUIRE(callbacks_ran_flags.all());
138 130
@@ -146,5 +138,6 @@ TEST_CASE("HostTiming[BasicOrderNoPausing]", "[core]") {
146 const double micro = scheduling_time / 1000.0f; 138 const double micro = scheduling_time / 1000.0f;
147 const double mili = micro / 1000.0f; 139 const double mili = micro / 1000.0f;
148 printf("HostTimer No Pausing Scheduling Time: %.3f %.6f\n", micro, mili); 140 printf("HostTimer No Pausing Scheduling Time: %.3f %.6f\n", micro, mili);
149 printf("HostTimer No Pausing Timer Time: %.3f %.6f\n", timer_time / 1000.f, timer_time / 1000000.f); 141 printf("HostTimer No Pausing Timer Time: %.3f %.6f\n", timer_time / 1000.f,
142 timer_time / 1000000.f);
150} 143}