Files
marfrit-packages/arch/mesa-panvk-bifrost
marfrit 6896853544 mesa-panvk-bifrost: r4 -> r5 — advertise fragmentStoresAndAtomics on Bifrost
Backports Mesa main's unconditional flip of .fragmentStoresAndAtomics
to true in src/panfrost/vulkan/panvk_vX_physical_device.c. Closes
the Dawn-WebGPU adapter rejection at PhysicalDeviceVk.cpp:250 that
caused brave-vulkan to fall back to the SwiftShader CPU adapter on
PineTab2/Mali-G52, per marfrit/panvk-bifrost#2.

Phase 7 verify on ohm (PineTab2, RK3566, Mali-G52 r1 MC1) with a
locally-built r5 lib installed to /tmp/r5_test_lib/:

  dEQP-VK.glsl.atomic_operations.*:
    r4:  48 pass /   0 fail / 992 NotSupported  (1040 total)
    r5:  80 pass /   0 fail / 960 NotSupported  (1040 total)
    delta: +32 newly-passing, zero new failures

  dEQP-VK.image.store.*:
    r4: 2772 pass /  0 fail / 238 NotSupported  (3010 total)
    r5: 2772 pass /  0 fail / 238 NotSupported  (3010 total)
    delta: identical (image.store is independent of the flag)

The disjunction with instance->force_enable_shader_atomics is kept as
a documented kill-switch even though the compiler folds it away —
it leaves the DRI option pan_force_enable_shader_atomics semantically
wired for future rebases or downstream debugging.

Patch reviewed via 2nd-model pass (per bugfix-process step 4):
recommended keeping the disjunction (applied), Bifrost-only-vs-unconditional
left unconditional to match upstream (applied), pre-ship CTS subset
(applied with results above).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 14:04:44 +02:00
..

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/), 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

# Ensure [marfrit] is in /etc/pacman.conf, then:
sudo pacman -Sy mesa-panvk-bifrost

Use

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 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.