Files
chimera-gfx-Public/docs/phase1/VIDEOOUT_CLEAR_EXPERIMENT.md
T
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

63 lines
2.5 KiB
Markdown

# Minimal VideoOut clear-frame experiment
## Goal and non-goals
Display exactly one fixed 1920x1080 solid frame through the existing pinned
PS5 SDL2 CPU-framebuffer backend, hold it for one second, and cleanly release
SDL. This experiment does not use `libchimera-gfx` hardware contexts, GNM,
shaders, command buffers, compute, custom tiling code, input, audio, OpenGL,
OSMesa, or a render loop.
## Application sequence
Project code performs the following calls only after exact compile-time and
runtime firmware identifiers match and the literal acknowledgement is present:
1. `SDL_SetMainReady`
2. `SDL_Init(SDL_INIT_VIDEO)`
3. `SDL_CreateWindow`
4. `SDL_GetWindowSurface`
5. `SDL_MapRGBA`
6. `SDL_FillRect`
7. `SDL_UpdateWindowSurface` exactly once
8. `SDL_Delay(1000)`
9. `SDL_DestroyWindow`
10. `SDL_Quit`
The fixed color is RGBA `(0x18, 0x2a, 0x41, 0xff)`. Logs contain stage names
and booleans only.
## Indirect pinned-SDL behavior
At commit `0baf4ac49382b537ba449901b5b6d0d189bb1fbb`, the reviewed PS5 video
backend indirectly uses these public export names:
- initialization: `sceSystemServiceHideSplashScreen`, `sceVideoOutOpen`,
`sceKernelAllocateMainDirectMemory`, `sceKernelMapDirectMemory`,
`sceKernelCreateEqueue`, `sceVideoOutAddFlipEvent`,
`sceVideoOutSetFlipRate`, `sceVideoOutSetBufferAttribute2`, and
`sceVideoOutRegisterBuffers2`;
- single present: `sceVideoOutSubmitFlip` and `sceKernelWaitEqueue`;
- cleanup: `sceVideoOutDeleteFlipEvent`, `sceVideoOutClose`,
`sceKernelReleaseDirectMemory`, and `sceKernelDeleteEqueue`.
These are indirect implementation observations, not independently proven
`chimera-gfx` ABI declarations. The overlay removes keyboard and IME setup.
## Build boundary
`tools/build-phase1-videoout.sh` verifies both upstream commits, stages the
reviewed SDL overlay, disables SDL2main plus unrelated SDL subsystems, and
cross-compiles the probe and candidate. It then statically requires the exact
15-name Sce import inventory above and zero GNM, keyboard, IME, or UserService
imports. It contains no upload, run, host, port, or boot command. The default
firmware identifier is `NONE`.
## Known blocker
The pinned SDL backend waits inside `sceKernelWaitEqueue` with no publicly
proven bounded timeout in this call path. Project code cannot safely cancel
that wait. The artifact is suitable for offline inspection, but not yet for
hardware authorization until `HARDWARE_TEST_PLAN.md` records an accepted
supervisor/recovery mechanism and an exact firmware.