Skip to content

Reference: Ocarina of Time Duo memory measurements & DKB iPhone 17 Pro Max note - #1369

Open
oliverames wants to merge 3 commits into
seedds:mainfrom
oliverames:docs-ocarina-iphone-memory
Open

oliverames wants to merge 3 commits into
seedds:mainfrom
oliverames:docs-ocarina-iphone-memory

Conversation

@oliverames

@oliverames oliverames commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

What and why

This combined documentation PR merges the documentation-only additions for iPhone Switch 2 measurements:

  1. Ocarina of Time on an iPhone Duo (iPhone19,4, iOS 27.3) (docs/reference/memory.md and docs/agents/symptoms.md): records the bring-up measurements to the first 3D load docked, detailing the GPU memory footprint when raw global memory tables cause pools to become resident (~8.1 GB allocated) and the SubmissionsIgnored fail-stop that follows.

  2. Donkey Kong Bananza on iPhone 17 Pro Max (040074A01BF12000) (dm/games/040074A01BF12000/README.md): records measured gameplay window performance on a physical iPhone 17 Pro Max (A19 Pro, iOS 27.2) under #iphone-measurements, added beside main's community iOS report.

Commits:

  • dd99de33: Donkey Kong Bananza on an iPhone 17 Pro Max: what was measured and what was not, in the game note
  • 76fd3c24: Reference: what a Switch 2 game's first 3D load does to an iPhone's GPU memory (Ocarina of Time on an iPhone Duo)

Checked

This is a documentation-only change: no code, binaries, ROMs, keys, or CI-scoped engine tools were modified.

  • Tests: python3 dm/tools/tests/test_docs.py (OK); python3 dm/tools/docs_symptoms.py (symptoms verified)
  • Games run, with title ID and version: Donkey Kong Bananza (040074A01BF12000), version not stated; Ocarina of Time, title ID and version not stated. What was played and for how long is not stated beyond the notes' own measurements.
  • Devices and OS: iPhone Duo (iPhone19,4, iOS 27.3); iPhone 17 Pro Max (A19 Pro, iOS 27.2)

Front ends

None: no front end has to act on this.

Docs

  • The finding is in its game note or its docs/reference/<subsystem>.md entry, and python3 dm/tools/docs_symptoms.py was run (the symptom index)
  • A chain tool changed: dmsh_chain.py --header was run and dm/gfx/nvn/dmsh_chain.h is part of the change. Not applicable: no chain tool changed
  • No game files, keys or data extracted from a game in the change or the attachments

@github-actions github-actions Bot added the docs Documentation label Nov 5, 2026
gnosticgeek pushed a commit to gnosticgeek/nxforge that referenced this pull request Nov 5, 2026
…t 3D load does to an iPhone's GPU memory (Ocarina of Time on an iPhone Duo)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK29T18U8p1c9LsVY8g
gnosticgeek pushed a commit to gnosticgeek/nxforge that referenced this pull request Nov 6, 2026
) replaces the pull request heads

Upstream landed Ocarina of Time in main (chain adec7d81d970: "holds 60 fps in
Kokiri Forest, 4 GB less") and closed the pull requests it folded in, with
reworded and partly different code. Mixing a pull request head with its landed
version hunk by hunk silently broke things (two GlobalToStorage tables, a
duplicate AF2ip, two mtk_pso definitions), so the rule here is one version per
feature:

- Pull requests upstream closed (seedds#1299, seedds#1300, seedds#1312, seedds#1343, seedds#1345, seedds#1353,
  seedds#1354, seedds#1359, seedds#1360, seedds#1373, seedds#1428, seedds#1430, seedds#1434): their hunks are taken out
  of our side before the three-way merge, so upstream's landed version stands
  alone. Gone with them: bindless pool table patching (reg_bump), the ghost
  table's per-submission hold, the growing raw pool table and its write-log
  sizing, seedds#1428's pool_buf spares (upstream's pool_table_take is the same
  idea), the ixc-based indirect mesh draw (upstream uses mdx), and their tests
  (t_pool_table, t_mesh_indirect, t_gmem_raw, finalized_bindless_pool,
  test_bnsh_nvn2, test_ndve).
- Open pull requests that upstream's landing supersedes: seedds#1394 (upstream's
  mtl_pool_addressed) and seedds#1393 pool_skip_retired (upstream's budgeted pool
  walk; the profile does not use it) are dropped with their tests and docs.
  seedds#1368's mesh pipeline prewarm is dropped too: upstream kept the background
  build in nvn_geometry.inc, and the prewarm's mtk_build / mtk_claim /
  g_warm_mps went with it.
- Kept, as upstream does not have them: NXForge's own features (GPU watchdog,
  present filters and anti-aliasing, aniso floor, quick settings, pipeline
  archive compaction, upload breakdown, memory report lines) and the still
  open pull requests seedds#1304, seedds#1305, seedds#1308, seedds#1320, seedds#1331, seedds#1332, seedds#1355, seedds#1356,
  seedds#1369, seedds#1376, seedds#1377, seedds#1379, seedds#1382, seedds#1390, seedds#1391, seedds#1392, seedds#1414, seedds#1420,
  seedds#1436, seedds#1439, seedds#1446, seedds#1453.
- Combined where both sides changed the same lines: GW_N 1 << 16 with seedds#1320's
  wide-write intervals (GW_PAGES = SBW_WPAGES, 128 slots), the CPU upload log
  with upstream's linear upload route, arch_open_end before the compaction
  limit, cbn_prog in geo_gs_one (seedds#1382).
- Translator: upstream's sources and binaries, plus seedds#1414's
  InstEmitAmpereMem diff and the LDSM SubgroupBarrier in
  InstEmitAmpereTensor.cs. The binaries and dmsh_chain.lock are upstream's
  until the Mac rebuilds them (dotnet publish, tool_lock --update-lock,
  dmsh_chain --header); dmsh_chain.h is regenerated for now.
- RED_ONCE keys: upstream took 153 and 154, so the present anti-aliasing lines
  move to 156 and 157 and seedds#1420's packaged-entry line to 158 (array 159).
- Host: hle_net.c and t_net_eventfd.c are upstream's (its eventfd poll waits
  out the whole timeout, which our 5d7920c fixed another way).
- Kept ours: dm/tools/romfs_image.py and its test, so the 26 GB RomFS image is
  not packed again.

dm/tools tests on Linux: same failures as on 875449e (Linux-only quirks),
plus test_nlg4 and test_dmsh_pool_arrays, which fail on upstream main too.
Not yet built on the Mac.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK29T18U8p1c9LsVY8g
@oliverames
oliverames force-pushed the docs-ocarina-iphone-memory branch from 61cd346 to e9015c2 Compare November 6, 2026 21:10
@oliverames oliverames changed the title Reference: a Switch 2 game's first 3D load on an iPhone (Ocarina of Time on the Duo) Reference: Ocarina of Time Duo memory measurements & DKB iPhone 17 Pro Max note Nov 6, 2026
@github-actions github-actions Bot added the game: 040074A01BF12000 Donkey Kong Bananza label Nov 6, 2026
@oliverames
oliverames force-pushed the docs-ocarina-iphone-memory branch 2 times, most recently from bf3671c to 304ae57 Compare November 10, 2026 00:58
Oliver Ames added 2 commits November 10, 2026 09:00
…PU memory (Ocarina of Time on an iPhone Duo)
…at was not, in the game note

The note said iOS was untested. The update now runs a saved gameplay spot on an iPhone 17 Pro Max (A19 Pro, iOS 27.2), so the note gets an iPhone measurements section instead: the scene size and upscaler (1676x943 into MetalFX's 2304x1296, the game's 2880x1620 window presented into a 2346x1320 drawable), the encoder timings of 33 sampled frames at thermal state 2, a 70-second route on a combined local build at thermal state 0 (six windows at p99 33.34 ms, 5131 MiB footprint, 3060 MiB headroom), and the handheld and docked reruns that did not hold 30 fps. Every number comes from a log in the session's evidence folder, and each feature that is not on main (drawable capture, the native-size window copy, the scaler size log) is named with its PR. The section ends with what is not established: sustained frame rate under heat, every-dispatch scene sizes, a handheld rate above 30 fps and any change to the fur's shimmer.

The intro and the Open list point at the section, next to the community report (issue seedds#1183) that main has since added in place of "iOS untested".
@oliverames
oliverames force-pushed the docs-ocarina-iphone-memory branch from 304ae57 to dd99de3 Compare November 10, 2026 14:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation game: 040074A01BF12000 Donkey Kong Bananza

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant