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.6 KiB
Phase 6 close — iter13 integration test (ANGLE-Vulkan on PanVk)
Result: GREEN. iter13's core deliverable verified end-to-end via Brave's chrome://gpu + WebGL contexts.
The conclusive signal
WebGL2 (which requires GLES3 underneath, which requires VK_EXT_transform_feedback) creates cleanly:
{
"ok": true,
"version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)",
"shading": "WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0 Chromium)",
"unmasked": {
"vendor": "Google Inc. (ARM)",
"renderer": "ANGLE (ARM, Vulkan 1.2.335 (Mali-G52 r1 MC1 (0x74021000)), panvk)"
}
}
The renderer string is an explicit ANGLE-internal identifier: ANGLE, on Vulkan 1.2.335, talking to a Mali-G52 r1 MC1 driven by panvk. This is the chain that iter12-γ hit a wall on ("VK_EXT_transform_feedback missing"). iter13 implements that extension, so the wall falls.
chrome://gpu — Graphics Feature Status
| Feature | Status |
|---|---|
| Canvas | Hardware accelerated |
| Compositing | Hardware accelerated |
| Multiple Raster Threads | Enabled |
| OpenGL | Enabled |
| Rasterization | Hardware accelerated |
| Video Decode | Hardware accelerated (chrome://gpu — see caveat) |
| Video Encode | Software only |
| Vulkan | Enabled |
| WebGL | Hardware accelerated |
| WebGPU | Hardware accelerated |
All hardware-paths green. Even WebGPU works.
Caveat on Video Decode
chrome://gpu reports "Hardware accelerated" but as documented in iter11, this report can be misleading. Empirical check (lsof /dev/video1) shows nothing holding the v4l2 device during initial playback, and GPU process CPU is in the 9% range — consistent with light compositor work, not 75% software decode. This is inconclusive about VAAPI engagement; the iter11 thread (Brave + libva-v4l2-request-fourier) remains the place to land that verification. Out of iter13 scope.
Test methodology
- Built mesa-26.0.6 with iter13 patches on ohm (Phase 4) — already linked clean.
- Phase 5 review-driven fixes applied + rebuilt — confirmed via probe_xfb_nodraw that XFB-capable pipelines used in non-XFB draws survive without DEVICE_LOST (memory-sink idiom from Panfrost-Gallium).
- Launched Brave 148.1.90.122 on ohm with the iter13 launcher script:
With
brave --use-gl=angle --use-angle=vulkan --enable-features=Vulkan --use-vulkan=native --ozone-platform=x11 --no-sandbox --disable-gpu-sandbox --ignore-gpu-blocklist --remote-debugging-port=9222VK_ICD_FILENAMES=/home/mfritsche/panvk-patched-libs/panfrost_icd_patched.jsonandPAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1andMESA_VK_VERSION_OVERRIDE=1.2. - Connected to the Chrome DevTools Protocol via WebSocket (pure-stdlib Python implementation —
/tmp/cdp_query.py). - Created WebGL and WebGL2 contexts on an about:blank tab, queried renderer info via WEBGL_debug_renderer_info.
- Scraped chrome://gpu page text deep through shadow DOM, mapped feature labels to status values.
All assertions hold against the live Brave session.
What iter9 vs iter13 enable
| Capability | iter9 (without XFB) | iter13 (with XFB) |
|---|---|---|
| Chromium GPU process boot | ✓ (Skia compositor only) | ✓ (Skia + ANGLE) |
| Vulkan compositor | ✓ | ✓ |
| WebGL1 / GLES2 via ANGLE | ✗ (--use-gl=disabled) | ✓ |
| WebGL2 / GLES3 via ANGLE | ✗ (--use-gl=disabled) | ✓ |
| WebGPU | ✗ | ✓ |
| HTML5 canvas HW accel | ✗ | ✓ |
| Hardware rasterization | ✗ | ✓ |
iter13 takes Brave on PineTab2 from "Vulkan compositor only" (iter9) to "fully GPU-accelerated browser stack".
Phase 8 next
Update mesa-panvk-bifrost PKGBUILD with the iter13 patches, bump pkgrel, push, CI green, install on a fresh consumer host.
— claude-noether, 2026-05-20