a4e7d8ab90
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>
92 lines
4.8 KiB
Markdown
92 lines
4.8 KiB
Markdown
# panvk-bifrost
|
||
|
||
**Claude-assisted completion of Panfrost/PanVk Vulkan support for the PineTab2 (Rockchip RK3566, Mali-G52 r1 MC1, PAN_ARCH 7) — as of 2026-05-23.**
|
||
|
||
This repository is the source-of-truth lineage for the patched-Mesa packages
|
||
[`mesa-panvk-bifrost`](https://git.reauktion.de/marfrit/marfrit-packages/src/branch/main/arch/mesa-panvk-bifrost)
|
||
and
|
||
[`mesa-panvk-bifrost-video`](https://git.reauktion.de/marfrit/marfrit-packages/src/branch/main/arch/mesa-panvk-bifrost-video)
|
||
in [marfrit-packages](https://git.reauktion.de/marfrit/marfrit-packages).
|
||
Those packages carry the deliverable `.patch` files; this repo carries the
|
||
**phase docs, design notes, evidence, and reasoning chain** that produced them.
|
||
|
||
## What the packages enable
|
||
|
||
| Package | Capability | Status |
|
||
|---|---|---|
|
||
| `mesa-panvk-bifrost` | Vulkan compositor for Chromium/Brave on Bifrost-class Mali (Robustness2 + nullDescriptor + VK1.1/1.2 + VK_EXT_transform_feedback + XFB primitive decomposition) | r1–r4 shipped; brave-vulkan launcher works |
|
||
| `mesa-panvk-bifrost-video` | `VK_KHR_video_decode_h264` backed by the SoC's V4L2-stateless hantro VPU | r5.video1 shipped 2026-05-22; byte-exact validated against ffmpeg+libva-v4l2-request-fourier (48/48 unique BBB display frames) |
|
||
|
||
## Layout
|
||
|
||
```
|
||
mesa-panvk-bifrost/ — r1..r4 campaign (Vulkan compositor enablement)
|
||
iter1..iter18/ — per-iteration phase docs (Phase 0..8)
|
||
phase0_evidence/ — logs, chrome://gpu dumps, vulkaninfo snapshots
|
||
phase0_findings*.md — per-iteration substrate findings
|
||
phase[1-8]_*.md — phase docs by phase number
|
||
|
||
mesa-panvk-bifrost-video/ — sibling campaign (Vulkan video decode)
|
||
phase0_findings.md — substrate (existing v4l2 stack on hantro)
|
||
phase1_source_map.md — Mesa code regions touched
|
||
phase2_design.md — D1–D10 design decisions
|
||
phase4_progress.md — commit-by-commit implementation log
|
||
probe_vkvideo.c — baseline probe (FAIL → PASS gate)
|
||
README.md — sibling campaign overview
|
||
|
||
evidence/ — frozen .tgz source snapshots at each milestone
|
||
phase5_post_review_* — POST-review source (basis for 0005 patch)
|
||
v8_commit8_* — full multi-frame state
|
||
v7f_commit7f_* — single-frame byte-exact state
|
||
DECODE_RAN_* — first end-to-end decode (still all-zero output)
|
||
FINAL_* — pre-review final state
|
||
commits_1* — incremental commit snapshots
|
||
brave_libva_trace_* — chromeos pipeline ImageProcessor wall reproduction
|
||
```
|
||
|
||
## Reading order
|
||
|
||
If you want the **end state and reasoning** quickly:
|
||
|
||
1. `mesa-panvk-bifrost-video/README.md` — what shipped + how byte-exact validation works
|
||
2. `mesa-panvk-bifrost-video/phase4_progress.md` — implementation log
|
||
3. `mesa-panvk-bifrost/iter17/` — XFB primitive decomposition (r4 close)
|
||
4. `mesa-panvk-bifrost/phase0_findings.md` — campaign substrate
|
||
|
||
If you want the **reproducibility material**:
|
||
|
||
- The `evidence/*.tgz` files are byte-pinned snapshots of `/home/mfritsche/mesa-build/mesa-26.0.6/src/panfrost/vulkan/` on the development host at each milestone. They are referenced from the marfrit-packages PKGBUILD patch-generation flow.
|
||
- The actual patches (`0001-…-bifrost.patch` etc.) live in
|
||
[`marfrit-packages/arch/mesa-panvk-bifrost{,-video}/`](https://git.reauktion.de/marfrit/marfrit-packages).
|
||
- Base substrate for diff generation: vanilla `mesa-26.0.6.tar.xz` from
|
||
[`archive.mesa3d.org`](https://archive.mesa3d.org/mesa-26.0.6.tar.xz).
|
||
|
||
## Hardware scope
|
||
|
||
- **PineTab2** (Pine64, RK3566, Mali-G52 r1 MC1) — primary development + validation target. All campaign work runs against this device.
|
||
- Other Bifrost SBCs (RK3568, RK3399 with G52 variants, etc.) may benefit
|
||
but haven't been tested.
|
||
- RK3588 / Mali-G610 is a separate stack — Valhall, not Bifrost — handled
|
||
via different campaigns.
|
||
|
||
## Process notes (retrofit, 2026-05-23)
|
||
|
||
This repository was created **after** the campaigns it documents had already
|
||
shipped. The packages, patches, and per-iteration docs all existed as either
|
||
marfrit-packages commits or local working-tree files; this repo is the
|
||
retrofit that puts the lineage under version control with a single canonical
|
||
URL the PKGBUILD `url=` field points at.
|
||
|
||
Future campaigns in the same family should be opened **here from day one**
|
||
so each iter is a branch/commit rather than a snapshot.
|
||
|
||
## License
|
||
|
||
MIT (see `LICENSE`). Same as upstream Mesa.
|
||
|
||
## Cross-references
|
||
|
||
- [marfrit-packages](https://git.reauktion.de/marfrit/marfrit-packages) — PKGBUILDs + CI
|
||
- [packages.reauktion.de](https://packages.reauktion.de/arch/aarch64/) — published .pkg.tar.xz artifacts
|
||
- [marfrit/fourier#1](https://git.reauktion.de/marfrit/fourier/issues/1) — ffmpeg-vulkan-h264 consumer wall (SYNC_FD handle-type missing; separate from this campaign)
|