Files
panvk-bifrost/mesa-panvk-bifrost/phase6_iter13_close.md
T
marfrit a4e7d8ab90 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>
2026-05-23 05:25:37 +02:00

3.6 KiB
Raw Blame History

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

  1. Built mesa-26.0.6 with iter13 patches on ohm (Phase 4) — already linked clean.
  2. 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).
  3. Launched Brave 148.1.90.122 on ohm with the iter13 launcher script:
    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=9222
    
    With VK_ICD_FILENAMES=/home/mfritsche/panvk-patched-libs/panfrost_icd_patched.json and PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1 and MESA_VK_VERSION_OVERRIDE=1.2.
  4. Connected to the Chrome DevTools Protocol via WebSocket (pure-stdlib Python implementation — /tmp/cdp_query.py).
  5. Created WebGL and WebGL2 contexts on an about:blank tab, queried renderer info via WEBGL_debug_renderer_info.
  6. 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