panvk-bifrost campaigns (r1..r4 Vulkan compositor + r5.video1 Vulkan
video decode) shipped before this repo existed; the deliverable
patches live in marfrit-packages, but the reasoning chain, phase docs,
and source-state evidence lived only in local working trees on the
development host.
This retrofit imports:
- mesa-panvk-bifrost/ — r1..r4 era phase docs (iter1..iter18)
(libmali stub blobs at iter18/blob/ excluded
— 109MB of RE artifacts replaced with a README
pointer)
- mesa-panvk-bifrost-video/ — sibling campaign phase docs + probe
- evidence/ — frozen .tgz source snapshots at each milestone
(basis for the 0005 patch diff generation)
Future iterations should branch off here from day one, so each iter is
a commit rather than a snapshot. See [[feedback-session-local-process-pins]]
for the process drift this retrofit closes.
Total: 1.9 MB across 124 files.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3.5 KiB
Iteration 7 close — GREEN
Closed 2026-05-19, same session as iter1–6. Operator-witnessed.
Locked question
(From phase0_findings_iter7.md)
Run
vkcube --c 120 --wsi waylandon ohm (Plasma/Wayland) withPAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1. Verify: process exits 0, frames rendered, no GPU faults, no kernel-side panfrost errors. Operator may visually confirm.
Result: GREEN
3 runs (120 frames + 120 frames + 240 frames), all RC=0. Validation layer active in run #2 — zero warnings.
Operator visual confirmation: "Ich hab' ihn gesehen." — vkcube's rotating textured cube rendered correctly on the PineTab2 screen.
Performance: 240 frames in 4.352s = ~55 FPS sustained, vsync-locked.
No GPU faults, no MMU faults, no panfrost kernel errors across any run.
Evidence: phase0_evidence/iter7_vkcube_run.txt.
What the close tells us
All five hypotheses in phase0_findings_iter7.md — none materialized.
- VK_KHR_wayland_surface works on PanVk-Bifrost against live Plasma compositor.
- Swapchain path is functional (vkcube allocates a swapchain, runs through 240 frames).
- Present queue support materializes correctly with a real surface (despite "present support = false" in headless vulkaninfo).
- Continuous frame submission + acquire/present cycle works for hundreds of frames.
- vkcube's combined workload (MVP UBO + textured cube + depth + present) — works.
This is the first off-the-shelf application in the campaign. It works. The PineTab2 + Mali-G52 + Mesa 26.0.6 + PanVk-Bifrost + Plasma stack can drive a rotating textured Vulkan cube at display refresh rate.
Cumulative state — seven iters, ~43 runs, zero driver failures, operator-witnessed real-app workload
PanVk-Bifrost on Mali-G52 r1 v7 has been proven for:
| Surface | Iter |
|---|---|
| Compute pipeline | iter1 |
| Image transfer ops | iter2 |
| Graphics pipeline + dynamic rendering | iter3 |
| Sampled textures + texelFetch | iter4 |
| Vertex buffers + UBO + varying interp | iter5 |
| Depth attachment + multi-draw | iter6 |
| Real app (vkcube) + WSI + Wayland + swapchain + continuous frames | iter7 |
iter7 in-tree artifacts
phase0_findings_iter7.md— lockphase0_evidence/iter7_vkcube_run.txt— run captures + operator-witness statement- (No iter7/ source dir — used stock vkcube)
Next iter — iter8 lock proposal
Zink-on-PanVk smoke: run a simple OpenGL ES application via Mesa's Zink driver (GL → Vulkan translation) backed by PanVk-Bifrost. This is the bridge to TuxRacer.
Approach:
- Verify Zink is available in Mesa 26.0.6 on ohm (
MESA_LOADER_DRIVER_OVERRIDE=zink). - Run something simple under Zink:
glmark2-es2-wayland(already present per pacman check in iter0; verify) ores2_infoto confirm bindings, or write a minimal GL probe. - Verify: GL context creates, GL rendering works, no crashes during a brief workload.
iter8 question:
Verify Zink-on-PanVk works on ohm — run
glmark2-es2-wayland(or equivalent stock ES2 demo) withMESA_LOADER_DRIVER_OVERRIDE=zink+PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1against Plasma/Wayland. Verify: at least one benchmark scene completes, no GPU faults, no Zink/Mesa crashes. If glmark2 has issues unrelated to Zink, fall back to es2gears or a minimal GL probe.
If iter8 GREEN: PanVk-Bifrost is real and TuxRacer-via-Zink is on the path.
Pacing per 8-phase loop. iter8 opens immediately.