63 lines
2.5 KiB
Markdown
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.
|