Repository navigation
Ocarina of Time's prewarm list gets the pipelines of first looks at new places and of an iPad's own lists: on iOS, where each pipeline no list names is built at its first draw (0.1-0.9 s on an iPad Pro M5), Hyrule Field built 344 render pipelines in play and the forest bridge 362 with the iPad's lists alone; on a Mac with the rows 0 and 5 - #2124
Closed
aksmith-git wants to merge 1 commit into
Closed
aksmith-git wants to merge 1 commit into
aksmith-git wants to merge 1 commit into
Conversation
…ew places and of an iPad's own lists: on iOS, where each pipeline no list names is built at its first draw (0.1-0.9 s on an iPad Pro M5), Hyrule Field built 344 render pipelines in play and the forest bridge 362 with the iPad's lists alone; on a Mac with the rows 0 and 5 4,959 rows (3,193 S, 1,579 R, 187 C) appended in recorded order: the rows of the iPad's pso_user.tsv lists after hours of play that the list lacked, then the rows recorded on a Mac (DM_PSO_RECORD, the iPad's lists as the device list) on first looks from saves at the forest bridge (Saria's farewell), Hyrule Field, the Lost Woods and Kokiri Forest. Every S / C key and both shaders of every R row are in shader_map.tsv with the stage it gives; every R row parses with pso_skey_parse and is already in its normalized form, and none duplicates a row here. The M rows of the same runs are all here already. Mac, Smooth 60, the same routes, device list = the iPad's lists, without -> with the rows: render / compute pipelines built in play 344 / 362 / 7 / 8 -> 0 / 5 / 2 / 0 (Hyrule Field, bridge, Lost Woods, Kokiri Forest), frames over 100 ms 15 / 12 / 9 / 4 -> 2 / 5 / 3 / 4, worst frame 749 / 1,273 / 922 / 256 ms -> 236 / 385 / 174 / 257 ms (what is left: the load frame, the end-of-run shot and the bridge cutscene's own pipelines). iPad Pro (M5) with the rows: the stutter at a first look gone except in the forest's heaviest area. Cost: a cold first start's prepare step builds the added pipelines too.
Owner
|
Landed unchanged on main as 47773ed (your commit, rebased). Thanks — the first-look numbers made the case. Checked before landing: the 4,959 rows are a pure append with no duplicates; every S / C key and both shaders of every R row are in Still open, as the note says: the cold first start's prepare time on iOS with the added render pipelines has not been measured. If you get a fresh install's |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ocarina of Time's
pso_manifest.tsvgets 4,959 more rows (3,193 S, 1,579 R, 187 C). These rows stop the stutter the first time the camera looks around a new place on iOS.What stalled
On iOS this game has no bundled pipeline archive, and its pipelines are built through the MTLDevice, so any render pipeline that no list names is built on the submit thread at its first draw. That takes 0.1-0.9 s per pipeline on an iPad Pro (M5), and the frame waits for it. In places already played, the iPad's own
pso_user.tsvcovers everything (a 31-minute Kokiri Forest session showed 0 ms of submit-thread pipeline builds). The next places a player reaches were not covered: with only the iPad's lists, Hyrule Field built 344 pipelines in play and the forest bridge built 362.Task / mesh pipelines (foliage, shadows) also stalled in our tree. Main already records and prewarms them since bf420fd (#1368), so this PR has no code change. Every M row from the same runs is already in main's list.
Mac, before / after
Smooth 60, the same routes. Device list = the iPad's lists. Cold system cache.
The "before" Lost Woods and bridge runs also include task / mesh builds of up to 907 ms (main already handles those, see above). The frames still over 100 ms are the load frame, the shot at the end of the run, and the bridge cutscene's own pipelines.
iPad
iPad Pro (M5), with these rows plus the mesh prewarm: the user called it "way way better". First-look stutter is gone except in the forest's heaviest GPU area.
How the rows were made
pso_user.tsvlists (93 lists, hours of play on v131072), keeping only rows this list lacked.DM_PSO_RECORD, with the iPad's lists as the device list, so the recording holds only what those lists miss. Each run loaded a save and looked around: the forest bridge (Saria's farewell), Hyrule Field, the Lost Woods and Kokiri Forest. The Mac's render keys match the iPad's.shader_map.tsvwith the right stage.pso_skey_parse, is already normalized, and duplicates no existing row.Cost: on a cold first start the prepare step also builds the added pipelines. The bundled list goes from 9,789 to 14,748 rows.
Tests: t_pso_skey OK; t_pso_warm 123/0 (Metal 4 and MTLDevice); t_nvn 277/0; test_docs, test_game_profile and test_pso_offline OK. Prepare time and play on main's chain (d403eb0683df) were not measured: the runs above used an older chain.