Files
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

109 lines
4.8 KiB
Plaintext

iter9 Brave-on-PanVk-Bifrost breakthrough — captured 2026-05-20 on ohm
(PineTab2 v2.0, RK3566, Mali-G52 r1 MC1, Mesa 26.0.6 + iter8 patch + iter9 patch + env override)
===== CAMPAIGN PIVOT CONTEXT =====
Goal pivoted from "TuxRacer via Zink-on-PanVk" to "Brave/Chromium GPU
process boots via Vulkan on PanVk-Bifrost". Pivot driven by extremetuxracer
not being in Arch repos + Chromium-Vulkan being the structurally bigger
ecosystem win (per README's "Consumer-side benefit" section).
===== THE WINNING COMBO =====
Patched binary (iter8 + iter9 patches stacked):
/home/mfritsche/panvk-patched-libs/libvulkan_panfrost.so (16.8 MB)
/home/mfritsche/panvk-patched-libs/panfrost_icd_patched.json
iter8 patch: KHR/EXT_robustness2 + nullDescriptor = true for PAN_ARCH 6/7
iter9 patch: has_vk1_1 + has_vk1_2 = true for PAN_ARCH 6/7
Runtime env:
XDG_RUNTIME_DIR=/run/user/1001
WAYLAND_DISPLAY=wayland-0
DISPLAY=:1
XAUTHORITY=/run/user/1001/xauth_<random> (find from `pgrep -fa Xwayland`)
VK_ICD_FILENAMES=/home/mfritsche/panvk-patched-libs/panfrost_icd_patched.json
PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1
MESA_VK_VERSION_OVERRIDE=1.2 (bypasses get_api_version's
PAN_ARCH>=10 gate at runtime;
cleaner than another patch)
Brave flags (the winners):
--use-gl=disabled (CRUCIAL — skips GLES3 info collection;
without this Chromium dies at ANGLE-
Vulkan-on-Bifrost not exposing GLES3
because PanVk-Bifrost lacks VK_EXT_
transform_feedback)
--enable-features=Vulkan (compositor uses Vulkan)
--use-vulkan=native (use native Vulkan, no SwiftShader)
--ozone-platform=x11 (Wayland ozone is incompatible with
Vulkan per Chromium error msg; use
X11 ozone via XWayland)
--no-sandbox --disable-gpu-sandbox (so GPU process can access /dev/dri
and VK_ICD_FILENAMES)
--ignore-gpu-blocklist (force-enable Vulkan on Mali — Brave's
internal blocklist may flag PanVk)
===== EVIDENCE OF SUCCESS =====
1. PanVk warning fires ONCE per GPU process startup (previously: 10x = 5
crash-retries). GPU process is staying alive.
2. No "Exiting GPU process due to errors during initialization" message.
3. No "GLES3 is unsupported" / "eglCreateContext ES 3.0 failed" / "ANGLE
Requires a minimum Vulkan device version of 1.1" errors.
4. Brave ran for the full 25-second timeout. Process exited cleanly on
timeout (histograms emitted during shutdown).
5. Load page: https://www.example.com
(Network fetch confirmed in logs.)
6. dmesg --since "1 minute ago": NO panfrost/mali/gpu faults.
7. Single benign warning:
sandbox/policy/linux/sandbox_linux.cc:405: InitializeSandbox() called
with multiple threads in process gpu-process.
(Standard Linux GPU sandbox warning; non-fatal.)
===== ITER-BY-ITER FAILURE CHAIN (now resolved) =====
Run 1: stock libvulkan_panfrost.so + no env override
→ Zink fell back to llvmpipe (iter8 RED finding).
Run 2: iter8-patched lib (robustness2 + nullDescriptor exposed)
→ Zink loaded ✓, glxgears 250 FPS ✓ (iter8 GREEN partial).
→ But Brave's GPU process still failed at "GLES3 unsupported".
Run 3: iter8-patched lib + --use-gl=disabled + --enable-features=Vulkan
→ "'--ozone-platform=wayland' is not compatible with Vulkan"
Run 4: + --ozone-platform=x11
→ "GLES3 is unsupported and ES version fallback is disabled" (ANGLE)
Run 5: + --use-gl=angle --use-angle=vulkan
→ "ANGLE Requires a minimum Vulkan device version of 1.1"
→ PanVk-Bifrost reports apiVersion=1.0.335
Run 6: + iter9 patch (has_vk1_1/has_vk1_2 = true) — apiVersion still 1.0
→ has_vk1_1 only controls extensions, NOT api version
Run 7: + MESA_VK_VERSION_OVERRIDE=1.2 — apiVersion=1.2.335 ✓
→ ANGLE Vulkan init succeeded ✓
→ But ANGLE still couldn't create GLES 3.0 context (EGL_BAD_ATTRIBUTE)
likely because PanVk-Bifrost lacks VK_EXT_transform_feedback
Run 8: + --use-gl=disabled (bypass ANGLE GL entirely)
→ 🎯 GPU process boots, Brave runs, page loads, no faults.
===== WHAT'S STILL UNKNOWN =====
- Visual confirmation: did the Brave window actually render correctly on
the PineTab2 screen? (Pending operator confirmation.)
- chrome://gpu state — what does Brave think of GPU capabilities now?
- Sustained workload: did pages with rich graphics work, or just simple
text pages?
- WebGL / WebGL2: blocked by ANGLE-GLES3 gap (no transform_feedback).
Probably broken; can be tested separately.
- Did Skia Graphite engage, or just classic Vulkan compositor?