Skip to content

0400486024DEC000's prewarm list: 84 task / mesh pipelines and 1,806 rows from 18 areas - #2466

Open
roandegraaf wants to merge 1 commit into
seedds:mainfrom
roandegraaf:prewarm-18-areas
Open

roandegraaf wants to merge 1 commit into
seedds:mainfrom
roandegraaf:prewarm-18-areas

Conversation

@roandegraaf

Copy link
Copy Markdown
Contributor

What and why

Symptom. On 0400486024DEC000, entering an area for the first time still builds pipelines at their first draw: task / mesh pipelines have no stand-in while they build, so each one stalls the frame, and render pipelines the list does not name are built in play. Testers report hitches at area entry that line up with pipeline compiles.

Change. Data and a test, no host code.

  • pso_manifest.tsv: a sweep over 18 areas of a save on an M4 Pro, started with no M rows, built 62 task / mesh pipelines at their draws in the first area and 0-14 in each later one. Of the 246 it recorded, 84 are not among the list's 164; they go with the other M rows. With all 248 prepared before the first frame, four of the areas checked built none at a draw. The sweep's 1,806 S / R / C rows that no other row names go at the end.
  • A #@after_first_frame line after every M row and before the 4,959 first-looks rows. Main's host reads it as a comment (warm_parse skips # lines), so on main every row is still built before the first frame; a host that implements the mark can build the rows after it in the background.
  • dm/tools/tests/test_pso_manifest.py (new): every shipped list's rows parse and hold at most one mark; this profile's list has no row twice, every key it names is in its shader map, and every M row comes before the mark.
  • The measurement in docs/reference/shaders.md (Native mesh pipelines compiled at their first draw) and the game note.

Overlap. 70 of the 84 new M rows are also in #2324, and 2 in #2280. Whichever lands second should drop its duplicates; test_no_row_twice catches them.

Checked

  • Tests: python3 -m pytest dm/tools/tests/test_pso_manifest.py dm/tools/tests/test_docs.py (11 passed) on this branch.
  • Games run: 0400486024DEC000 v131072, the 18-area sweep on an M4 Pro, on an older host that implements the mark.

Not checked / open.

  • No run on this branch's host. On main the 1,806 tail rows and the first-looks rows are built before the first frame, so a cold first start's prepare step takes longer; not measured.
  • No iOS run, where this game has no bundled archive and the list is all a first start has.

Docs

  • The finding is in the game note and its docs/reference/shaders.md entry (no new entry, so the symptom index is unchanged)
  • A chain tool changed: no
  • No game files, keys or data extracted from a game in the change or the attachments

…8 areas of a save, a first frame mark before its first-looks rows, and 1,806 shader and pipeline rows from the same areas after it

A sweep over 18 areas of a save on an M4 Pro, started with no M rows, built 62 task / mesh pipelines at their draws in the first area and 0-14 in each later one as its own list grew; of the 246 it recorded, 84 are not among the list's 164. With all 248 prepared before the first frame, four of the areas checked built none at a draw. The #@after_first_frame line goes after every M row and before the 4,959 first-looks rows, and the sweep's 1,806 S / R / C rows no other row names go at the end. A host that does not know the mark reads it as a comment (warm_parse skips # lines) and builds every row before the first frame. Every key the rows name is in the shader map; no row twice.

- dm/games/0400486024DEC000/pso_manifest.tsv: the rows and the header's block lines
- dm/tools/tests/test_pso_manifest.py: every shipped list's rows parse and hold at most one mark; 0400486024DEC000's has no row twice, its keys in its shader map, the mark present after every M row (fails without the change)
- docs/reference/shaders.md (Native mesh pipelines compiled at their first draw: the sweep's measurement), the game note
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation game: 0400486024DEC000 A game tools Tools and scripts (dm/tools, scripts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant