# mesa-panvk-bifrost Patched Mesa `libvulkan_panfrost.so` exposing Bifrost-gen Mali GPUs (Mali-G31/G52/G72/G76, PAN_ARCH 6/7) to Chromium-family browsers' Vulkan compositor. Result of the **panvk-bifrost** campaign ([`~/src/panvk-bifrost/`](../../../panvk-bifrost/)), iter9 close 2026-05-20 (technical milestone — operator-confirmed Brave window) followed by this package as the actual delivery. ## What it solves Stock Chromium / Brave on Bifrost SBCs (PineTab2, etc.) currently dies at GL bindings init: ``` ERROR: ui/gl/gl_context_egl.cc:120 GLES3 is unsupported and ES version fallback is disabled ERROR: ui/gl/init/gl_factory.cc:111 Requested GL implementation not found ERROR: components/viz/service/main/viz_main_impl.cc:189 Exiting GPU process due to errors during initialization ``` This package makes Brave's **Vulkan compositor path** work on Bifrost, side-stepping the failing GL stack. Browser chrome and standard page rendering work. ## Known limitations (not addressed) - **WebGL / WebGL2** in-page: blocked. ANGLE needs `VK_EXT_transform_feedback` to expose GLES3 contexts; PanVk-Bifrost doesn't currently support that. Sites using WebGL will degrade or refuse. - **VAAPI hardware video decode**: unrelated to this package — see the `libva-v4l2-request-fourier` package for that path. ## Install ```sh # Ensure [marfrit] is in /etc/pacman.conf, then: sudo pacman -Sy mesa-panvk-bifrost ``` ## Use ```sh brave-vulkan # launches Brave with Vulkan brave-vulkan https://www.example.com brave-vulkan --your-flags-here # extra args passed through ``` The launcher sets: - `VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json` (the patched driver) - `PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1` (Mesa upstream gate) - `MESA_VK_VERSION_OVERRIDE=1.2` (apiVersion bump for ANGLE) - Brave flags: `--use-gl=disabled --enable-features=Vulkan --use-vulkan=native --ozone-platform=x11 --no-sandbox --disable-gpu-sandbox --ignore-gpu-blocklist` ## What's in the package - `/usr/lib/panvk-bifrost/libvulkan_panfrost.so` — patched Mesa Vulkan driver (Mesa 26.0.6 + 2 sed-applied patches) - `/usr/lib/panvk-bifrost/icd.json` — Vulkan ICD JSON pointing at the patched .so (NOT auto-loaded; only via `VK_ICD_FILENAMES`) - `/usr/bin/brave-vulkan` — launcher script System Mesa is untouched. The stock `/usr/lib/libvulkan_panfrost.so` and `/usr/share/vulkan/icd.d/panfrost_icd.json` continue to work for any other Vulkan app. ## Co-existence Both stock Mesa and this package can be installed. Stock Vulkan apps (`vulkaninfo`, `vkcube`, etc.) use the stock driver by default. Only apps started via `brave-vulkan` (or with `VK_ICD_FILENAMES` manually set to our path) use the patched driver. ## Campaign close criterion Per [`feedback_package_done_means_installable`](file:///home/mfritsche/.claude/projects/-home-mfritsche-src/memory/feedback_package_done_means_installable.md) three-point check: 1. PR merged to `marfrit-packages` 2. CI green AND `packages.reauktion.de/arch/aarch64/mesa-panvk-bifrost-*.pkg.tar.zst` exists 3. `pacman -Ss mesa-panvk-bifrost` on a fresh consumer host (e.g. ohm after `pacman -Syu` from clean state) returns the package + brave-vulkan launches When all three pass, panvk-bifrost iter9 closes.