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:
sceVideoOutOpenreturned positive handle0x4e100100;sceVideoOutRegisterBuffers2(handle, 0, 0, buffers, 2, attr, 0, NULL)returned0;- the diagnostic copied pixels into registered buffer zero;
sceVideoOutSubmitFlip(handle, 0, 1, 0)returned-1;- the immediately saved
errnowas0; - 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.