Files
chimera-gfx-Public/docs/retroarch/phase-1.0p-videoout-submit-analysis.md
Chimera GFX release export a6037502d7
phase0-ci / build-and-audit (push) Successful in 2m14s
Publish Chimera GFX source
2026-09-03 03:27:14 +02:00

3.7 KiB

Phase 1.0P VideoOut submit analysis

Phase 1.0P is an offline postmortem of the consumed Phase-1.0O run. It adds no target source or artifact and performs no device action. The exact runtime evidence remains the M artifact (1,845,208 bytes, SHA-256 c99a0856309a357ad2667d89b4924e4063ad214cae09c8a419457b0732f583cd) and the ignored O trace (18,031 bytes, SHA-256 3d0b8811ae11f5cac2c2d331e252e1789a10588cab0e6045828a6b6af0fe1eb6).

Proven call boundary

The exact linked SDL overlay source has SHA-256 9949a280fed40241746788a8c001280455bc629e0566a88f82f16a8634d43025. Its linker map has SHA-256 6768ffc7267b9b362c3b953571e5dfeed1e70004a3e19f41ef500c3f26272719 and locates PS5_VideoInit at 0xfdc20 and PS5_PresentEarlyDiagnosticFrame at 0xfe560.

Disassembly of the exact M ELF proves that the indirect call at 0xfe7bc loads the VideoOut handle into edi, zero into esi, one into edx, and zero into ecx. The corresponding GOT slot is 0x1779b0. The code tests eax and, on failure, reads errno before emitting D07. The O trace therefore binds the following facts across source, map, disassembly and runtime:

  • sceVideoOutOpen returned positive handle 0x4e100100;
  • sceVideoOutRegisterBuffers2(handle, 0, 0, buffers, 2, attr, 0, NULL) returned 0;
  • the diagnostic copied pixels into registered buffer zero;
  • sceVideoOutSubmitFlip(handle, 0, 1, 0) returned -1;
  • the immediately saved errno was 0;
  • no flip-event wait followed the failed submit.

The unmodified public SDL source at commit 0baf4ac49382b537ba449901b5b6d0d189bb1fbb also starts frame_id at zero, uses idx = frame_id % 2, and calls the same tuple on its first normal frame. The earlier diagnostic-versus-normal first-index mismatch has therefore been eliminated and cannot explain the O result.

Evidence limits

SDK v0.41 commit d2e2e585740362976a39fdd5ccf390f199a7bc37 exports symbol stubs, but supplies no public VideoOut prototypes, structures, constants or return semantics. The SDL fork is the only local public source for the prototype, the 32-byte buffer descriptor, the opaque 80-byte attribute object and the format constant 0x8000000022000000. Buffer registration returning zero is useful runtime evidence, but it does not independently validate those opaque semantics.

Question Classification Reason
exact failure site PROVEN source/map/disassembly plus D07
raw submit return PROVEN D07 is -1
useful errno identity ABSENT saved value is 0
frame-zero difference from normal path REJECTED_CURRENT_CAUSE both paths now use zero
buffer-zero validity UNPROVEN consistent with source, not independently specified
flip-mode value 1 UNPROVEN no local public semantic definition
frame-ID zero validity UNPROVEN used by SDL, not independently specified
buffer attribute/layout semantics UNPROVEN opaque fork-local declaration
flip-master or active-app ownership UNPROVEN export names are not callable ABI evidence
visible presentation or cleanup UNPROVEN no successful submit or terminal proof

Calling sceVideoOutSetFlipMaster, a status query, or changing a submit argument based only on an export name would be an ABI guess. Phase 1.0P does not authorize or recommend such a change. Its decision is VIDEOOUT_SUBMIT_FAILURE_SITE_PROVEN_ROOT_CAUSE_UNRESOLVED.

Safe continuation gate

Before another target artifact is designed, acceptable public evidence must define the relevant VideoOut signature, arguments, structure layouts, return codes and required ownership/state. If that evidence cannot be obtained, the hardware path remains fail-closed. A later artifact also needs a corrected terminal protocol, separately audited and separately authorized before any device action.