12 KiB
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.41maps to commitd2e2e585740362976a39fdd5ccf390f199a7bc37and was published on 2026-06-28. Release - FACT: GitHub's
releases/latestendpoint still resolved to v0.41 on 2026-07-17. - FACT: GitHub release metadata reports
ps5-payload-sdk.zipSHA-256ebfb0acb5260511951a80e17db41650c62d20a8caf8659a230b928dc85005984. - FACT:
sce_stubs/libSceGnmDriver.ccontains 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_dlfcnsample demonstratesdlopen,dlsym, anddlclose;hello_sodemonstrates shared-object linking/loading. Dynamic-loading sample - FACT: the pinned payload CRT calls
__patch_initbeforemain;crt/patch.cwrites 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-specificinitandfinicallbacks are empty in SDK source, but the system calls' internal side effects are not established. Pinned SPRX loader - FACT:
crt/Makefilepartially links 12 source objects intocrt1.o; the other six installed CRT-named files are empty archives at v0.41. - FACT: the
prospero-clangwrapper omitscrt1.ofor-nostartfilesand 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/ps5implements a CPU framebuffer/VideoOut path and an OSMesa context path. VideoOut registration and flip occur in the SDL backend, not inchimera-gfxPhase 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
junkfields; 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 upstreamLICENSE.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_OPENGLandSDL_LOADSObut follows an unpinned Git source withsha256sums=('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-loadercommit8e7dd40df6144bed6194d165d48aa9468a7e13f3, 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 |