Publish Chimera GFX source
phase0-ci / build-and-audit (push) Successful in 2m14s

This commit is contained in:
Chimera GFX release export
2026-09-03 03:27:14 +02:00
commit a6037502d7
828 changed files with 100454 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
# Hardware approval package
Status: **not authorized; offline review artifacts only**.
## Current offline review artifacts
| Artifact | Firmware | SHA-256 | Transfer/execution |
|---|---|---|---|
| `chimera-gfx-capability-probe.elf` | `NONE` | `f0f74978ac62490ff2482386e9c4efa3ad6d6cc46e10d54c41cb8669b4449f36` | false / false |
| `chimera-gfx-phase1-videoout-clear.elf` | `NONE` | `2e826ac4ea2bffb626d82e370f98909bb508417d92b1ac3796e9f5a902e975c9` | false / false |
| `chimera-gfx-capability-probe-0.1.0-fw-9.60-offline-audit-only.elf` | `9.60` | `4be1c17b4964f2b68c39b5145bc4af4619c32512d60269ecf5c39728b390fa63` | false / false; permanently denylisted |
The two `NONE` artifacts are tied to source commit
`72292f2d5788ad643e9d1816ce28ab754ef739b5`. The offline test and import
evidence is in `docs/evidence/phase0-build-2026-07-17.md`. These exact artifacts
cannot enter the project-requested GNM module open or SDL initialization because
their firmware gate is `NONE`. The SDK payload CRT still initializes before
`main`.
## First hardware gate
The first console action, if it ever becomes safe and receives new permission,
must be the non-rendering capability probe, not the VideoOut experiment.
Project code would call only `dlopen`, `dlsym`, `dlclose`, and standard output
functions. It would resolve the 21 manifest names, record only booleans, invoke
no resolved pointer, and request no submit, draw, dispatch, flip, or GPU-memory
operation.
Jens reported exact firmware `9.60` and authorized only its offline build and
audit. The pinned SDK v0.41 payload CRT performs prohibited kernel process-state
writes before `main`, so the resulting ELF is not execution-eligible even
though the project gate precedes `dlopen`. A kernelwrite-free startup route and
a newly built digest are required before execution can be considered.
## VideoOut gate after successful discovery
The later experiment would execute the exact SDL sequence and indirect API
inventory in `VIDEOOUT_CLEAR_EXPERIMENT.md`. Likely failures are a clean error,
payload crash, stuck payload, lost display ownership, or required controlled
console restart. Automatic retry is prohibited. The unbounded SDL flip wait is
an unresolved blocker even after symbol discovery.
## Authorization state
The 9.60 offline build authorization has been received. No transfer or execution
authorization has been received. No execution-permission wording is offered
while the SDK CRT blocker remains. The firmware-specific evidence and blocked
approval package must record the filename, SHA-256, exact source commit, all
imports, startup/loader/cleanup call chain, and offline tests. Approval never
carries forward to the VideoOut test.
The completed firmware-specific package is
`docs/approvals/probe-9.60-transfer-execution.md`.
+39
View File
@@ -0,0 +1,39 @@
# Firmware and ABI checklist
## Firmware identity
- [ ] Exact user-visible firmware identifier supplied by Jens
- [ ] Reproducible identification method documented without kernel access
- [ ] Identifier added to one candidate build only
- [ ] `FIRMWARE_COMPATIBILITY.md` row created as untested
- [ ] No compatibility inferred from another revision
## Discovery gate
- [ ] Capability-probe artifact manifest and SHA-256 reviewed
- [ ] Explicit artifact-specific execution permission recorded
- [ ] Probe resolves names only and invokes no resolved pointer
- [ ] Redacted result log archived
- [ ] Runtime module candidate confirmed or rejected for this firmware
## SDL/VideoOut evidence
- [x] SDL source commit pinned
- [x] Zlib license and overlay notice recorded
- [x] Project code uses public SDL2 APIs only
- [x] Keyboard/IME initialization removed from the staged build
- [x] Direct GNM imports forbidden
- [ ] Bounded flip-wait or safe supervisor proven
- [ ] Cleanup behavior observed on this exact firmware
## Artifact review
- [ ] Clean source commit matches manifest
- [ ] SDK and SDL commits match locks
- [ ] Firmware is not `NONE`
- [ ] ELF filename, size, and SHA-256 match
- [ ] Imports match the API inventory
- [ ] Offline host, static-analysis, cross-compile, and secret tests pass
- [ ] Transfer and execution remain false until separately approved
Any unchecked runtime item blocks execution.
+58
View File
@@ -0,0 +1,58 @@
# Phase-1 hardware test plan
## Preconditions
Every item must be complete before transfer:
- exact firmware is recorded and allowlisted for one artifact;
- the discovery-only capability probe has already completed on that firmware;
- source commit, SDK/SDL commits, artifact SHA-256, and static imports match the
reviewed manifest;
- the console has no unsaved work and automatic retry/boot integration is off;
- an operator and observer have the redacted JSON-stage log visible;
- the bounded-wait blocker below has an accepted resolution.
## Proposed timeline
1. Verify digest again immediately before transfer.
2. Transfer manually using an existing approved userland loader workflow.
3. Start once, manually. No boot hook or retry.
4. Require `firmware_gate`, `video_init`, `window_create`, `surface_acquire`,
and `cpu_fill` within five seconds total.
5. Permit exactly one `single_present` and a one-second hold.
6. Require `cleanup` and process exit within five seconds after present.
7. Preserve logs and mark the firmware row pass, fail, or anomalous.
## Watchdog and timeout
The application stages are bounded except the pinned SDL call
`SDL_UpdateWindowSurface`, whose backend waits for a flip event without a
publicly proven finite timeout. A cooperative application thread cannot safely
cancel it. Force-killing a thread while it owns VideoOut or direct-memory state
is prohibited.
Before authorization, one of these must be proven and separately reviewed:
1. a public, licensed SDL/VideoOut change that supplies a bounded wait and
returns control for cleanup; or
2. a userland process supervisor whose termination semantics guarantee OS
cleanup of VideoOut, equeue, and direct-memory ownership.
Until then, the operator wall-clock limit is a detection mechanism only, not a
safe watchdog, and the hardware test remains blocked.
## Cleanup, rollback, and emergency stop
Normal cleanup is `SDL_DestroyWindow` followed by `SDL_Quit`; the pinned
backend then closes VideoOut, releases direct memory, and deletes its equeue.
No second flip is attempted during cleanup.
On any error, missing stage, display anomaly, or deadline:
- do not retry;
- request normal userland process termination only if responsive;
- do not kill an individual worker thread;
- if display ownership does not return, use the console's normal controlled
restart procedure; never patch firmware, registers, clocks, or fans;
- after restart, use the existing SDL software path and mark the artifact and
firmware combination failed/unknown pending review.
+13
View File
@@ -0,0 +1,13 @@
# Offline Phase-1 preparation
No Phase-1 artifact has been transferred or executed. This directory contains
the review package for the first CPU-framebuffer/VideoOut experiment:
- `VIDEOOUT_CLEAR_EXPERIMENT.md`: exact design and API inventory;
- `HARDWARE_TEST_PLAN.md`: staging, timeout, cleanup, rollback, and stop rules;
- `FIRMWARE_ABI_CHECKLIST.md`: evidence that must be completed per firmware;
- `APPROVAL_PACKAGE.md`: artifact-specific authorization gate.
The compile target is off by default and the produced review artifact embeds
firmware `NONE`, so it refuses before `SDL_Init`. This preparation does not
authorize a hardware test.
+62
View File
@@ -0,0 +1,62 @@
# 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.