initial seed: retrofit campaign lineage from local working trees
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>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Phase 8 close — iter13 packaging + 3-point install verification
|
||||
|
||||
**Result: GREEN.** iter13 is published, installable, and verified end-to-end on the consumer host.
|
||||
|
||||
## The 3-point check ([[feedback-package-done-means-installable]])
|
||||
|
||||
| Leg | Status |
|
||||
|---|---|
|
||||
| PR merged | ✓ — gitea PR #51 merged into `marfrit/marfrit-packages:main` as `9ca97374c` |
|
||||
| CI green | ✓ — `mesa-panvk-bifrost-aarch64` workflow built clean on the arch-aarch64 runner |
|
||||
| Artifact published | ✓ — `mesa-panvk-bifrost-26.0.6.r3-1-aarch64.pkg.tar.xz` at packages.reauktion.de |
|
||||
| Consumer host install | ✓ — ohm (PineTab2, Mali-G52 r1 MC1) ran `sudo pacman -Syu mesa-panvk-bifrost`, r2→r3 transition clean |
|
||||
|
||||
## Smoke test on the upgraded ohm
|
||||
|
||||
```
|
||||
# pacman state
|
||||
mesa-panvk-bifrost 26.0.6.r3-1
|
||||
|
||||
# system ICD binary fingerprint (iter13 strings present)
|
||||
$ strings /usr/lib/panvk-bifrost/libvulkan_panfrost.so | grep TransformFeedback
|
||||
panvk: CmdBeginTransformFeedbackEXT: counter buffers not implemented (transformFeedbackDraw=false); XFB resume will restart at buffer offset 0
|
||||
vkCmdBindTransformFeedbackBuffersEXT
|
||||
vkCmdBeginTransformFeedbackEXT
|
||||
vkCmdEndTransformFeedbackEXT
|
||||
VK_EXT_transform_feedback
|
||||
[...]
|
||||
|
||||
# vulkaninfo on the system ICD
|
||||
$ VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json vulkaninfo | grep -E "TransformFeedback|transformFeedback"
|
||||
maxTransformFeedbackStreams = 1
|
||||
maxTransformFeedbackBuffers = 4
|
||||
VK_EXT_transform_feedback : extension revision 1
|
||||
transformFeedback = true
|
||||
|
||||
# regression probes against the system ICD
|
||||
$ VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json ./probe_xfb
|
||||
[PASS] PanVk-Bifrost transform feedback: 3 vertices captured correctly.
|
||||
|
||||
$ VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json ./probe_xfb_nodraw
|
||||
[PASS] XFB-capable pipeline survives non-XFB draw — memory-sink active.
|
||||
```
|
||||
|
||||
Both functional probes pass with the **published package** (not the developer's hand-built lib in `/home/mfritsche/panvk-patched-libs/`). That's the full chain: source → patch → CI build → pkg → pacman → runtime.
|
||||
|
||||
## iter13 close — what shipped vs. what's left
|
||||
|
||||
**Shipped in iter13:**
|
||||
- VK_EXT_transform_feedback advertised on PAN_ARCH 6/7 (Bifrost) with feature struct + properties block.
|
||||
- `nir_io_add_intrinsic_xfb_info` + `pan_nir_lower_xfb` wired into PanVk's NIR pipeline after `nir_lower_io`.
|
||||
- 4 XFB buffer address sysvals + `num_vertices` sysval threaded through `panvk_graphics_sysvals` + per-draw `set_gfx_sysval` upload.
|
||||
- `CmdBind/Begin/End TransformFeedbackBuffersEXT` JM-side command handlers (`jm/panvk_vX_cmd_xfb.c`).
|
||||
- Panfrost-Gallium memory-sink idiom (`PAN_SHADER_OOB_ADDRESS` = `1<<63`) for safe handling of XFB-capable pipelines used in non-XFB draws.
|
||||
- `no_idvs` set for XFB-bearing vertex shaders.
|
||||
- Cmd-buffer state reset of `xfb` on `BeginCommandBuffer` (Phase 5 Janet review fix).
|
||||
- Counter-buffer warning when apps pass them despite `transformFeedbackDraw=false` (Phase 5 fix).
|
||||
|
||||
**Not shipped (deferred to future iters if needed):**
|
||||
- `vkCmdDrawIndirectByteCountEXT` (needs `transformFeedbackDraw=true`).
|
||||
- XFB primitive count query (`VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_PRIMITIVES_WRITTEN_EXT`, needs `transformFeedbackQueries=true`).
|
||||
- Both are loud-fail (extension/feature not advertised), so apps that need them will see deterministic errors rather than silent corruption.
|
||||
|
||||
## What iter13 changes for the user
|
||||
|
||||
Before iter13 (iter9 state):
|
||||
- Brave on PineTab2 ran with `--use-gl=disabled` — Skia compositor over Vulkan, no GL content.
|
||||
- ANGLE-Vulkan refused to initialize (no VK_EXT_transform_feedback → no GLES3 path).
|
||||
|
||||
After iter13 (the user simply runs `pacman -Syu` + `brave-vulkan`):
|
||||
- ANGLE-Vulkan initializes against PanVk-Bifrost.
|
||||
- WebGL 1, WebGL 2, WebGPU, hardware-accelerated canvas, hardware rasterization — all engage.
|
||||
- chrome://gpu reports `ANGLE (ARM, Vulkan 1.2.335 (Mali-G52 r1 MC1), panvk)` as the renderer.
|
||||
|
||||
The "Chromium GPU process boot via Vulkan" charter goal (iter9) gets a major upgrade in iter13: from compositor-only to full ANGLE-on-Vulkan stack. The remaining stretch goal (VAAPI hardware video decode actual engagement) belongs to the iter11 thread and is independent of iter13's transform-feedback scope.
|
||||
|
||||
— claude-noether, 2026-05-20
|
||||
Reference in New Issue
Block a user