Files
chimera-gfx-Public/RESEARCH.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

12 KiB

Research record

Evidence cutoff: 2026-07-17. Only primary upstream repositories and release metadata are used below. Each statement is labelled FACT, INFERENCE, or UNKNOWN.

Evidence snapshot

PS5 Payload SDK

  • FACT: release v0.41 maps to commit d2e2e585740362976a39fdd5ccf390f199a7bc37 and was published on 2026-06-28. Release
  • FACT: GitHub's releases/latest endpoint still resolved to v0.41 on 2026-07-17.
  • FACT: GitHub release metadata reports ps5-payload-sdk.zip SHA-256 ebfb0acb5260511951a80e17db41650c62d20a8caf8659a230b928dc85005984.
  • FACT: sce_stubs/libSceGnmDriver.c contains 158 export stubs, including submit, draw, dispatch, compute-queue, embedded-shader, resource-registration, and synchronization-related names. The file is assembly labels only and does not establish C signatures. Pinned stub
  • FACT: the pinned SDK tree has no public GNM header and no GNM/GPU sample. Its only GNM-named source files are the driver stub sets.
  • FACT: the SDK's hello_dlfcn sample demonstrates dlopen, dlsym, and dlclose; hello_so demonstrates shared-object linking/loading. Dynamic-loading sample
  • FACT: the pinned payload CRT calls __patch_init before main; crt/patch.c writes process credential capability/attribute fields and syscall-address bounds through SDK kernel read/write primitives. Pinned CRT startup Pinned patch code
  • FACT: the pinned rtld's SPRX path can call sceKernelLoadStartModule/sceKernelStopUnloadModule; the SPRX-specific init and fini callbacks are empty in SDK source, but the system calls' internal side effects are not established. Pinned SPRX loader
  • FACT: crt/Makefile partially links 12 source objects into crt1.o; the other six installed CRT-named files are empty archives at v0.41.
  • FACT: the prospero-clang wrapper omits crt1.o for -nostartfiles and omits libc/kernel/Sce default libraries for -nodefaultlibs. An offline -### trace confirms both suppressions without producing an ELF.
  • FACT: the SDK README points to external ELF-loader projects, but the exact loader used for firmware 9.60 and its caller source are not part of the SDK or the pinned local evidence set.
  • FACT: unless otherwise marked, the SDK is GPLv3-or-later; FreeBSD headers retain their BSD licenses. SDK README

PS5 SDL2 fork

  • FACT: inspected commit 0baf4ac49382b537ba449901b5b6d0d189bb1fbb, dated 2026-07-07. Commit
  • FACT: src/video/ps5 implements a CPU framebuffer/VideoOut path and an OSMesa context path. VideoOut registration and flip occur in the SDL backend, not in chimera-gfx Phase 0. PS5 video
  • FACT: that backend owns direct-memory allocation, buffer tiling, registration, flip submission, event waiting, and cleanup. Its public source declares opaque VideoOut structures with junk fields; those layouts are not copied into this project.
  • FACT: SDL is Zlib-licensed at the pinned commit. The PacBrew recipe's license=('LGPL') metadata conflicts with upstream LICENSE.txt; this project follows the primary upstream license file.
  • FACT: the native audio backend forces 48 kHz and uses AudioOut. PS5 audio
  • FACT: native PS5 source directories exist for joystick, keyboard/IME, filesystem, audio, video, and main; joystick code includes vibration and light-bar operations. PS5 joystick

PacBrew

  • FACT: inspected commit c2abcfcb60f569128abd0e8e70ad03a67bee5ea7, dated 2026-07-07. Repository
  • FACT: the SDL2 recipe enables SDL_OPENGL and SDL_LOADSO but follows an unpinned Git source with sha256sums=('SKIP'); this project therefore does not treat that recipe as reproducible pinning. SDL2 recipe
  • FACT: the Mesa 22.1.7 recipe enables OSMesa and gallium swrast, while Vulkan, EGL, GBM, GLX, and GLES are disabled. Mesa recipe
  • FACT: package recipes exist for FBNeo, LakeSnes, Mednafen, DevilutionX, and EDuke32. Their presence proves port work, not native GPU acceleration.

RetroArch

  • FACT: inspected commit 32ee70cef5d4bdc32a4ca3b3b261209ce74b6e81, dated 2026-07-16. Commit
  • FACT: the tree contains an SDL2 video driver and dynamic-library support used for libretro cores. SDL2 driver
  • FACT: Makefile.orbis, platform_orbis.c, and an Orbis context driver are available as PS4 integration references.
  • INFERENCE: those PS4 files are useful for frontend lifecycle and build concepts only. Their GPU assumptions must not be transferred to PS5.

PS5 Linux

  • FACT: inspected ps5-linux-loader commit 8e7dd40df6144bed6194d165d48aa9468a7e13f3, dated 2026-07-10. Repository
  • FACT: the loader targets a Linux kernel/initramfs boot flow and references patched Linux components.
  • INFERENCE: Linux amdgpu/RADV progress demonstrates that the hardware can be driven under a custom Linux stack; it does not provide a native PS5 userland ABI or a reusable driver implementation for this project.

ABI evidence table

Class Area Primary evidence What the evidence supports Policy
FACT Export names SDK libSceGnmDriver.c names exist in the v0.41 stub set resolve only
FACT Target ISA public SDK toolchain compile target is x86-64 PS5 userland does not prove a function ABI
INFERENCE Runtime module name stub filename plus SDK .sprx convention libSceGnmDriver.sprx is a candidate load only behind gates
UNKNOWN GNM signatures no pinned public header no callable prototype is proven never call
UNKNOWN GNM structures no pinned public definition no layout is proven never construct
UNKNOWN Firmware stability no public compatibility matrix 9.60 is a build identifier, not known compatible firmware 9.60 build only; never infer compatibility
FACT SDK payload startup pinned crt/crt.c and crt/patch.c pre-main kernel process-state writes occur execution blocked
FACT/UNKNOWN SPRX loader lifecycle pinned rtld source/system-module implementation boundary load/start and stop/unload are requested; system internals unknown offline audit only
UNKNOWN Embedded-shader semantics export names only no identifier or binary contract never call
UNKNOWN Submission/sync semantics export names only no ownership or timeout contract never call
FACT SDL2 public API pinned SDL headers and LICENSE.txt application API and Zlib terms at that commit Phase-1 candidate only
FACT Pinned SDL implementation pinned PS5 SDL source exact source-level VideoOut sequence at that commit indirect through SDL only
UNKNOWN SDL runtime behavior no approved observation firmware compatibility, timeout, and cleanup on PS5 do not execute
FACT/UNKNOWN minimal startup compiler can omit stock CRT; exact loader caller is absent source-level omission only, not safe return do not build an ELF

The complete Phase-0 lookup subset and per-symbol evidence are in manifests/ps5_gnm_symbols.json. Symbol presence never upgrades ABI confidence.

Unknowns register

ID Unknown Why it blocks progress Evidence needed
U-001 exact signatures for every candidate GNM export a wrong call can corrupt memory immediately acceptable public header/source or independently validated ABI evidence
U-002 command-buffer and packet formats cannot safely build GPU work public, licensed format evidence plus review
U-003 GPU-visible memory allocation and cache rules resources may alias or be incoherent proven userland allocation contract
U-004 resource registration ownership/lifetime cleanup and crash safety are unknown proven signatures and lifecycle evidence
U-005 queue, fence, and timeout semantics a wait or queue action could hang bounded synchronization contract
U-006 VideoOut/GNM buffer compatibility presentation ownership is unknown separate, minimal Phase-1 evidence
U-007 embedded shader identifiers and binary contract cannot safely bind a shader licensed public evidence and test plan
U-008 runtime module name across firmware even discovery may fail approved hardware observation per firmware
U-009 system-module initialization side effects SDK call chain is known; firmware module internals are not public acceptable public evidence plus separately approved observation
U-010 supported firmware set no hardware evidence exists one manually approved probe at a time
U-011 bounded SDL flip-event wait safe timeout/cleanup cannot be guaranteed licensed bounded-wait change or proven supervisor semantics
U-012 SDL cleanup after forced process termination recovery behavior is unknown approved observation or public lifecycle evidence
U-013 kernelwrite-free PS5 payload startup SDK v0.41 CRT patches kernel process state before main; Phase 0.5 cannot prove a safe replacement exact pinned loader caller plus complete entry/return/cleanup/crash audit
U-014 loader changes before _start incoming args already expose kernel access, but the creation path is absent exact loader source and configuration used for firmware 9.60

Unknowns are closed only by updating this file, the relevant ADR, and the firmware matrix with a primary source or an explicitly approved observation.

Assumptions register

Assumptions are design choices, not compatibility claims.

ID Assumption Scope Falsification or review trigger
A-001 libSceGnmDriver.sprx is a useful runtime candidate discovery-only probe approved lookup fails or a public source establishes another module
A-002 Mock limits of 4096 pixels and 16 live resources are sufficient for lifecycle tests host tests only an adapter test requires a larger deterministic bound
A-003 RGBA8 is enough to stabilize the initial public upload contract mock and software-frame planning RetroArch/SDL integration proves another minimum format is required
A-004 The existing SDL CPU-framebuffer route is safer than duplicating its opaque VideoOut layout first Phase-1 design official public VideoOut headers and bounded lifecycle become available
A-005 1920x1080 and one fixed frame minimize first-test state disabled Phase-1 candidate exact firmware/display evidence requires a different supported mode
A-006 A firmware-specific rebuild must receive a new approval because its digest changes all hardware candidates never relaxed; enforced artifact-provenance rule