Skip to content

Read movie buffer getters exported without const by older SDKs - #966

Open
thehobbit85 wants to merge 2 commits into
seedds:mainfrom
thehobbit85:codex/movie-sdk1-accessors
Open

thehobbit85 wants to merge 2 commits into
seedds:mainfrom
thehobbit85:codex/movie-sdk1-accessors

Conversation

@thehobbit85

@thehobbit85 thehobbit85 commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Refs #960 (movie decoder only). PikaMan80 identified the three non-const SDK 1.3.1 exports in the issue and attached patch. The host previously aborted during decoder construction because it required the const spelling of each getter. It now asks for the const method first and then its mutable counterpart; a missing getter still stops initialization. No title check or guest buffer layout is needed.

Current head 2449e7d959dd1ab08ce01ed4d7328d0b8679edde. python3 -m unittest dm.tools.tests.test_docs dm.tools.tests.test_usage passed on this revision (17 tests). The feature sources, tests and documentation match the previously validated revision b28861574e59 byte for byte.

This PR includes main 6136418bcd564f086cf57cb0a59e8f997d36445e. The mutable movie-buffer entry points exported by older SDKs still need this compatibility path. The stricter movie-test lint baseline remains intact.

Local validation on b28861574e59. python3 -m unittest dm.tools.tests.test_docs dm.tools.tests.test_usage — 17 tests passed.

Both native movie fixtures passed under ASan/UBSan, including older SDK getters and the software AV1 path on this M2 Max.

GitHub checks for this revision

Author validation before this rebase

On an Apple silicon Mac, the synthetic SDK with only mutable exports aborted on main at _ZNK5movie6Buffer4DataEv. With this change, the decoder resolves and calls all three getters (data pointer, used length and capacity) against mutable-only, const-only and dual-export fixtures. The dual-export fixture verifies the modern path keeps precedence.

  • make -C dm/host/tests GAME=010015100B514000 run, make -C dm/host GAME=010015100B514000 dmhost and the native Metal graphics suite passed. Six optional external reflection samples were unavailable. The Python tool suite ran 902 tests, 16 skipped; the 11 documentation tests passed and the symptom index was regenerated. Clang-tidy 23.1.4 on both changed C files reported no findings above baseline.
  • regress.py impact origin/main..HEAD reached the three movie decoder constructors. None of the four committed usage manifests recorded those calls; 125 profiles have no manifest. I selected Super Mario Odyssey (AVC parameter buffers), Fire Emblem Engage (VP9 CPU output), Metroid Dread (VP9 native textures), Monster Hunter Rise (AVC native textures) and Dragon Quest XI S (VP9/Vorbis). regress.py check --games exited 2 because neither a regression root nor local game builds are configured. No gameplay, USF II boot, or iOS testing is claimed.

The rewriter, shader packaging and audio renderer changes in #960 are outside this PR. The movie reference now describes the ABI difference; there is no USF II profile on main.

The full C lint run on 406feed7 found one stale baseline count in the changed movie test. In 1df9a53b, the allowance for clang-analyzer-core.UndefinedBinaryOperatorResult in dm/host/tests/t_movie_vpx.c drops from two to one. LLVM 23.1.4 checked all 215 sources and matched the tightened 270-finding baseline, with zero file/check pairs above or below it.

PikaMan80 identified the three SDK 1.3.1 exports in seedds#960. Prefer the existing const methods on later SDKs and require a working getter for each operation.
@thehobbit85
thehobbit85 force-pushed the codex/movie-sdk1-accessors branch 2 times, most recently from b288615 to 2449e7d Compare November 3, 2026 03:12
@github-actions github-actions Bot added host The Horizon host: SVCs, services, threads, memory (dm/host) tools Tools and scripts (dm/tools, scripts) docs Documentation labels Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation host The Horizon host: SVCs, services, threads, memory (dm/host) tools Tools and scripts (dm/tools, scripts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants