Merge pull request #14037 from jordan-woyak/presentation-timing

Add "Rush Frame Presentation" and "Smooth Early Presentation" settings.
This commit is contained in:
JMC47
2025-11-22 04:49:03 -05:00
committed by GitHub
15 changed files with 200 additions and 39 deletions
@@ -114,6 +114,30 @@ void AdvancedPane::CreateLayout()
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
timing_group_layout->addWidget(correct_time_drift);
auto* const rush_frame_presentation =
// i18n: "Rush" is a verb
new ConfigBool{tr("Rush Frame Presentation"), Config::MAIN_RUSH_FRAME_PRESENTATION};
rush_frame_presentation->SetDescription(
tr("Limits throttling between input and frame output,"
" speeding through emulation to reach presentation,"
" displaying sooner, and thus reducing input latency."
"<br><br>This will generally make frame pacing worse."
"<br>This setting can work either with or without Immediately Present XFB."
"<br>An Audio Buffer Size of at least 80 ms is recommended to ensure full effect."
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
timing_group_layout->addWidget(rush_frame_presentation);
auto* const smooth_early_presentation =
// i18n: "Smooth" is a verb
new ConfigBool{tr("Smooth Early Presentation"), Config::MAIN_SMOOTH_EARLY_PRESENTATION};
smooth_early_presentation->SetDescription(
tr("Adaptively adjusts the timing of early frame presentation."
"<br><br>This can improve frame pacing with Immediately Present XFB"
" and/or Rush Frame Presentation,"
" while still maintaining most of the input latency benefits."
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
timing_group_layout->addWidget(smooth_early_presentation);
// Make all labels the same width, so that the sliders are aligned.
const QFontMetrics font_metrics{font()};
const int label_width = font_metrics.boundingRect(QStringLiteral(" 500% (000.00 VPS)")).width();