feat(artemis): native test lane at 120 Hz and VRR (#14523) 37aef8611c * feat(artemis): native test lane at 120 Hz and VRR * fix(artemis): refresh keeps the present mode's pacing, timing only on Artemis, no blocking refresh probe and no leaks * chore(artemis): the tool wiring filters name both lanes Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
diff --git a/.rive_head b/.rive_head index 719658c..aabac70 100644 --- a/.rive_head +++ b/.rive_head
@@ -1 +1 @@ -bd0142048bde516d4d6be3468b5971e0b1ff731e +37aef8611c6082c822b133243b7ef34a2feeea88
diff --git a/tests/common/testing_window.hpp b/tests/common/testing_window.hpp index e18b122..7aa6c31 100644 --- a/tests/common/testing_window.hpp +++ b/tests/common/testing_window.hpp
@@ -151,6 +151,16 @@ immediate, }; PresentMode presentMode = PresentMode::fifo; + + // The display refresh a window asks for where the platform lets it + // choose; others keep their default. + enum class Refresh + { + fixed60, + fixed120, + variable, + }; + Refresh refresh = Refresh::fixed60; }; enum class Visibility
diff --git a/tests/player/player.cpp b/tests/player/player.cpp index 80df1aa..299dc39 100644 --- a/tests/player/player.cpp +++ b/tests/player/player.cpp
@@ -282,6 +282,7 @@ bool onlyUbershaders = false; // Applied after parsing, since --backend resets the backend params. std::optional<TestingWindow::BackendParams::PresentMode> presentMode; + std::optional<TestingWindow::BackendParams::Refresh> refresh; for (int i = 1; i < argc; ++i) { @@ -334,6 +335,30 @@ : strcmp(fit, "fill") == 0 ? rive::Fit::fill : rive::Fit::contain; } + else if (strcmp(argv[i], "--refresh") == 0 && i + 1 < argc) + { + using RR = TestingWindow::BackendParams::Refresh; + const char* rate = argv[++i]; + if (strcmp(rate, "60") == 0) + { + refresh = RR::fixed60; + } + else if (strcmp(rate, "120") == 0) + { + refresh = RR::fixed120; + } + else if (strcmp(rate, "vrr") == 0) + { + refresh = RR::variable; + } + else + { + fprintf(stderr, + "--refresh must be 60, 120 or vrr, not %s\n", + rate); + abort(); + } + } else if (strcmp(argv[i], "--present") == 0 && i + 1 < argc) { using PM = TestingWindow::BackendParams::PresentMode; @@ -406,6 +431,10 @@ { options.backendParams.presentMode = *presentMode; } + if (refresh) + { + options.backendParams.refresh = *refresh; + } if (onlyUbershaders) { options.backendParams.shaderCompilationMode =