This repo is meant to be a living, reproducible baseline for the Allwinner A733 PowerVR + FEX stack. Test it, benchmark it, push the walls, fix bugs — and send the findings back so the next person starts further ahead.
- Run the benchmarks (
bench/) on your board and add your numbers toRESULTS.md— cross-board data is the whole point. Even "same board, different kernel/DDK" rows are valuable. - Reproduce or challenge a finding in
docs/FINDINGS.md. If something that's marked a "wall" works for you (newer DDK, mainline, a flag we missed) — that's a great PR/issue. Findings are dated observations, not gospel. - Optimize: faster FEX (AOT/code cache), better Zink coverage, a working Wayland-client path, GPU desktop improvements, encode work.
- Fix bugs in the scripts/patch, or port the kernel patch to a new BSP/kernel.
- Extend: new device-tree overlays, other A733 boards (A7S/A7Z), mainline tracking.
Any change that could affect performance must carry a before→after bench/run.sh
diff in its commit message, and bench/baseline.txt is updated only for verified,
intended improvements. Compare the ratio.* + gpu.* lines (reliable); raw absolutes
are ±~20% load-noise on an always-on box. See bench/WORKFLOW.md.
- Fork → branch → PR. Keep PRs focused; describe what you tested and on what
(board, kernel
uname -r, DDKstrings /usr/lib/libVK_IMG.so* | grep -m1 24.). - For results, edit
RESULTS.mdor open a Benchmark result issue. - For "works/doesn't on my board", open a Board test report issue.
- No proprietary blobs in commits — never commit the PowerVR userspace/firmware,
the FEX rootfs, or third-party app binaries. The
.gitignoreblocks the obvious ones; the install/recipe model fetches those from the vendor (see README). - No secrets — keys, tokens, host identifiers.
- Patches against vendor sources should be diffs, applied on top of the vendor's own distribution (don't paste their source in).
- Be honest about methodology: single-board numbers are indicative; say how you measured.
These are the live walls from docs/FINDINGS.md — concrete places to dig:
- Wayland GPU clients crash (zink
kopperSIGSEGV on the img Vulkan ICD). The compositor GPU-composites; client apps presenting viawl_egl_windowdon't. - Transparent EGL→GPU (no PowerVR GLVND vendor; vendor EGL is X11-only fork).
- FEX cold-start is JIT-compile-bound — an AOT/persistent code cache is the lever.
- Steam under FEX — CEF
steamwebhelperbwrap/pressure-vessel blocker. - Mainline tracking —
drm/imagination+ Mesapvrfor A733 (sun60iw2); the upstream DTS effort is the path that lifts the hard walls. Test/track it. - HEVC hardware encode — vendor-lib limit (no IDR); H.264 encode works.