build(release): a pipeline list converted from Fritchii's shader reci… #2133
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2133
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/fritchii-recipe-list"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fritchii ships a recipe of the pipelines Ocarina of Time draws, and 1,461 of them are pipelines no list here holds that convert to whole HKSTATE2 records. This adds them as
contrib/pmwork-personal-fritchii-recipe, as discussed in #dev-work.What the recipe is. Fritchii (a Lichii fork) ships
OoT v131072 (cache v54).nx2recipe: the pipelines its testers' sessions drew plus the states it predicts. Each shader is named by a fingerprint, and the recipe holds no code (its format is innx2_recipe.h/nx2_shader_extract.hon Fritchii'soot-gather-fixbranch).How it maps.
code_keyhashes the same control and code bytes with FNV, so a player'shookshot_shaders.binnames the recipe's shaders by code key: 41,165 of 41,216.nvn_blend_stWhat it can't hold. The recipe was recorded with dynamic vertex input, so it has no vertex formats or divisors. It has no texture answers either. So a pipeline is in this list only when:
Point-topology states that the recipe predicts for programs main's lists draw as triangles are left out: 728 of the 734 checkable ones disagreed with main.
Checked against main. I converted every recipe pipeline main's lists already hold the same way. 13,323 of 19,738 match one of their records field for field, including blend, masks and clamp. The rest are:
There was no systematic difference in any field.
Files.
assets/pipeline_states/contrib/pmwork-personal-fritchii-recipe.bin.xzand.md, written bynx2/pipeline_states.py add. The note says how the list was made.assets/pipeline_states/README.md: one paragraph saying the lists namedpmwork-personal-fritchii-recipe*are converted, not recorded. They hold the same records and nothing more.The converter is a small script (recipe +
hookshot_shaders.bin+ main's merged list → HKSTATE2). It isn't in this PR; happy to add it underscripts/if you want the list reproducible.Tested.
nx2/pipeline_states.py check: merged list 26,712 pipelines (main 25,251 + 1,461).Tests:
test_pipeline_states,test_pipeline_state_sources,test_pipeline_state_counts,test_pipeline_state_portable,test_ship_state_list.python -I -B tests/run_all.pyon main with both PRs (Windows): 342 passed, 2 failed, 30 skipped (Linux-only). The two (test_precompile_compute_guard.py,test_recorder_sync.py) fail the same on main without these changes on this PC.In the game's preparation: a build of main with this list and the follow-up's (#2134) ran the Builder's shader preparation (RTX 5090, driver 621.14):
vk: state list: 38697 pipelines (38697 shipped, version 2), 14866 programs (1200 translated now, 0 with stages not in the seed), 953 variants by their textures (953 made), 4798 by nothing bound (4798 made), 38584 noted (2438 native mesh, 0 mesh fallback, 11985 by nothing bound), 113 whose program variant was not made, in 10.2 sEvery record of this list was noted. The 113 not made are records main's lists already hold that were noted without answers (1,285 such records there, none here).
Credit: the recipe is Fritchii's (Frizti), built from its testers' sessions.
🤖 Generated with Claude Code
Nice piece of cross-checking: matching 13,323 of 19,738 field for field against main's lists is good evidence that the mapping is right. The merge is clean and CI is green. Before this goes in, I think it needs a maintainer decision and a couple of changes, because it is the first list in
assets/pipeline_states/that Hookshot did not record.question (maintainer)
assets/pipeline_states/README.md:5-7: the folder's rule until now was "only lists written by Hookshot and this folder's tool go in here". This PR adds an exception for one named list. That deserves an explicit yes from the maintainer, since it opens the door to converted lists in general. Related: the recipe is Fritchii's data, built from its testers' sessions. Credit is given, but the PR doesn't say under what terms it may be redistributed inside a GPL-3.0 repo. Was permission given (the #dev-work discussion?), or is the recipe published under a licence that allows this? A link or a line in the.mdnote would settle it. The list holds only hashes and draw state, so this isn't a game-data problem. It's a question of whose data it is.should fix: the converter isn't in the PR (the body offers to add it). For a list that is converted rather than recorded, the script is the only way to review or regenerate it. That matters when main's lists change (inclusion depends on "main's lists fix one vertex input and one variant"), and when
code_keyor the record format changes. Please add it underscripts/(standard library only, per CONTRIBUTING), and have the note name the command that produced this file.should fix: predicted states. The recipe holds "the pipelines its testers' sessions drew plus the states it predicts". Your own check found that the point-topology predictions disagreed with main in 728 of 734 checkable cases. That is a strong signal that the prediction isn't reliable, and the other predicted states are kept. A wrong record costs a pipeline compiled for nothing during the Builder's preparation, on every player's PC. Could you split the 1,461 into drawn and predicted? Then either ship only the drawn ones, or show what share of the predicted ones match main where they overlap.
minor: the note says that blend enables past the last target are cleared by Lichii, and that Hookshot keys on them only on GPUs without dynamic blend state. On those GPUs, such records will not match what the game asks for. They are harmless but wasted there. Worth a sentence in the note so nobody later reads the mismatch as a bug.
I didn't review the
.bin.xzrecord by record. CI'stest_pipeline_state*checks validate its format, and they pass.This is the first list in
assets/pipeline_states/that Hookshot didn't record, so it needs a maintainer yes or no on converted lists, and a word on whether Fritchii's recipe may be redistributed under GPL-3.0. There's no game data in it.If it goes in:
scripts/, so the list can be reviewed and regenerated whencode_keychanges.The title is cut off with "…".
github-sync referenced this pull request2026-11-12 06:22:54 +00:00