Skip to content

perf: add an opt-in OoT movie pacing workaround - #2076

Draft
baromas wants to merge 1 commit into
ly05010419:mainfrom
baromas:perf/oot-intro-movie-pacing
Draft

baromas wants to merge 1 commit into
ly05010419:mainfrom
baromas:perf/oot-intro-movie-pacing

Conversation

@baromas

@baromas baromas commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Related to #2037 and #2042.

On my M3 Pro, the OoT v131072 title movie and New Game intro ran at around 30 FPS, and the narrator lagged behind the picture. This PR adds an opt-in macOS workaround for testing and review.

Changes

TOTK_OOT_MOVIE_DIRECT=1 replaces the movie’s 13 compute reconstruction passes with one bilinear scaling pass after matching the complete shader sequence. If matching or resource preparation fails, the original passes run.

While that path is active, a saved 30 FPS lock temporarily becomes 60 FPS with interpolation off. The saved setting applies again after the movie.

OOT_MOVIE_CLOCK=1 uses AV1 timestamps to drop overdue pictures when the decoder has a newer frame ready. Both switches default to off.

Bilinear scaling changes the movie’s reconstruction quality. I’m opening this as a draft to discuss that trade-off.

Validation

Tested v131072 on an M3 Pro at 2560×1440 with the same settings in both runs. The title movie and New Game intro went from about 30 to 60 real FPS. During the New Game intro, median GPU time fell from about 28 ms to 1 ms per frame.

The first English narrator line was requested 2.9 seconds after opening the story clip, compared with 7.1 seconds in the control run. I also checked playback in the packaged Mac app.

All 55 OoT-specific tests and the native ARM64 time-step probe passed. iOS was outside this validation.

Would you prefer to keep TOTK_OOT_MOVIE_DIRECT opt-in, or enable it by default for matched opening sequences on macOS as a temporary workaround? If enabled by default, TOTK_OOT_MOVIE_DIRECT=0 could restore the original reconstruction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant