diff options
| author | 2024-01-01 13:56:31 -0600 | |
|---|---|---|
| committer | 2024-01-01 13:56:31 -0600 | |
| commit | aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c (patch) | |
| tree | 3f7ca8e93b7bc523b8dd357ec43d302fd794b37c /src/tests | |
| parent | Merge pull request #12466 from liamwhite/sh2 (diff) | |
| parent | core_timing: block advance thread while clearing and signal after (diff) | |
| download | yuzu-aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c.tar.gz yuzu-aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c.tar.xz yuzu-aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c.zip | |
Merge pull request #12454 from liamwhite/ct-stuff
core_timing: minor refactors
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/core/core_timing.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/tests/core/core_timing.cpp b/src/tests/core/core_timing.cpp index f08afbf9a..81898a1d3 100644 --- a/src/tests/core/core_timing.cpp +++ b/src/tests/core/core_timing.cpp | |||
| @@ -16,20 +16,16 @@ | |||
| 16 | 16 | ||
| 17 | namespace { | 17 | namespace { |
| 18 | // Numbers are chosen randomly to make sure the correct one is given. | 18 | // Numbers are chosen randomly to make sure the correct one is given. |
| 19 | constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}}; | ||
| 20 | constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}}; | 19 | constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}}; |
| 21 | std::array<s64, 5> delays{}; | 20 | std::array<s64, 5> delays{}; |
| 22 | 21 | std::bitset<5> callbacks_ran_flags; | |
| 23 | std::bitset<CB_IDS.size()> callbacks_ran_flags; | ||
| 24 | u64 expected_callback = 0; | 22 | u64 expected_callback = 0; |
| 25 | 23 | ||
| 26 | template <unsigned int IDX> | 24 | template <unsigned int IDX> |
| 27 | std::optional<std::chrono::nanoseconds> HostCallbackTemplate(std::uintptr_t user_data, s64 time, | 25 | std::optional<std::chrono::nanoseconds> HostCallbackTemplate(s64 time, |
| 28 | std::chrono::nanoseconds ns_late) { | 26 | std::chrono::nanoseconds ns_late) { |
| 29 | static_assert(IDX < CB_IDS.size(), "IDX out of range"); | 27 | static_assert(IDX < callbacks_ran_flags.size(), "IDX out of range"); |
| 30 | callbacks_ran_flags.set(IDX); | 28 | callbacks_ran_flags.set(IDX); |
| 31 | REQUIRE(CB_IDS[IDX] == user_data); | ||
| 32 | REQUIRE(CB_IDS[IDX] == CB_IDS[calls_order[expected_callback]]); | ||
| 33 | delays[IDX] = ns_late.count(); | 29 | delays[IDX] = ns_late.count(); |
| 34 | ++expected_callback; | 30 | ++expected_callback; |
| 35 | return std::nullopt; | 31 | return std::nullopt; |
| @@ -76,7 +72,7 @@ TEST_CASE("CoreTiming[BasicOrder]", "[core]") { | |||
| 76 | const u64 order = calls_order[i]; | 72 | const u64 order = calls_order[i]; |
| 77 | const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)}; | 73 | const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)}; |
| 78 | 74 | ||
| 79 | core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]); | 75 | core_timing.ScheduleEvent(future_ns, events[order]); |
| 80 | } | 76 | } |
| 81 | /// test pause | 77 | /// test pause |
| 82 | REQUIRE(callbacks_ran_flags.none()); | 78 | REQUIRE(callbacks_ran_flags.none()); |
| @@ -118,7 +114,7 @@ TEST_CASE("CoreTiming[BasicOrderNoPausing]", "[core]") { | |||
| 118 | for (std::size_t i = 0; i < events.size(); i++) { | 114 | for (std::size_t i = 0; i < events.size(); i++) { |
| 119 | const u64 order = calls_order[i]; | 115 | const u64 order = calls_order[i]; |
| 120 | const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)}; | 116 | const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)}; |
| 121 | core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]); | 117 | core_timing.ScheduleEvent(future_ns, events[order]); |
| 122 | } | 118 | } |
| 123 | 119 | ||
| 124 | const u64 end = core_timing.GetGlobalTimeNs().count(); | 120 | const u64 end = core_timing.GetGlobalTimeNs().count(); |