489d6e3862
iter9 of the panvk-bifrost campaign — operator-confirmed Vulkan output
on PineTab2 (Mali-G52 r1 MC1) 2026-05-20.
Patches Mesa 26.0.6's PanVk Vulkan driver:
- VK_KHR/EXT_robustness2 + nullDescriptor exposed for PAN_ARCH 6/7
- has_vk1_1 / has_vk1_2 = true on Bifrost
Patches applied via sed in PKGBUILD prepare() (cleaner than maintaining
a Mesa fork for two two-line tweaks; upstream context drifts between
Mesa releases would make a literal .patch brittle).
Co-installs at /usr/lib/panvk-bifrost/ — stock mesa untouched. Stock
libvulkan_panfrost.so and its ICD JSON keep working for everyone not
opting into the patched driver.
Ships /usr/bin/brave-vulkan that wires up:
VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json
PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1
MESA_VK_VERSION_OVERRIDE=1.2 # ANGLE needs apiVersion>=1.1; the
# has_vk1_x flags don't move it, so
# the env-var override carries that
brave --use-gl=disabled --enable-features=Vulkan --use-vulkan=native
--ozone-platform=x11 --no-sandbox --disable-gpu-sandbox
--ignore-gpu-blocklist "$@"
Side-steps the stock "GLES3 is unsupported / GPU process exits" failure
documented in panvk-bifrost/README's "Consumer-side benefit" section.
Known limitation: WebGL/WebGL2 in-page won't work — ANGLE needs GLES3
which needs VK_EXT_transform_feedback, which PanVk-Bifrost doesn't
currently support. Browser chrome + standard page rendering work fine.
Gitea Actions job mesa-panvk-bifrost-aarch64 added to build.yml,
patterned on libva-v4l2-request-fourier-aarch64. Mesa build is slow
(~30-60min on actrunner-aarch64). Standalone (no needs:),
continue-on-error so it doesn't block other jobs.
Campaign artifacts: ~/src/panvk-bifrost/{README.md, phase8_iteration9_close.md,
phase0_evidence/iter9_brave_vulkan_breakthrough.txt}.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 lines
2.1 KiB
Bash
62 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# brave-vulkan — launch Brave with the PanVk-Bifrost Vulkan compositor on
|
|
# Bifrost SBCs (PineTab2 / Mali-G52 r1 MC1 and similar).
|
|
#
|
|
# Side-steps the GL stack failures stock Brave hits on Bifrost
|
|
# (the README "Consumer-side benefit" path of the panvk-bifrost campaign).
|
|
#
|
|
# Provided by the mesa-panvk-bifrost package. See:
|
|
# /usr/share/doc/mesa-panvk-bifrost/README
|
|
# ~/src/panvk-bifrost/phase8_iteration9_close.md (campaign close)
|
|
#
|
|
# Usage: brave-vulkan [brave args...]
|
|
# Equivalent to: brave [VULKAN_FLAGS] [your args]
|
|
|
|
set -e
|
|
|
|
# Patched Vulkan driver (from this package) — must point at the custom path
|
|
# so we don't clash with the stock /usr/share/vulkan/icd.d/panfrost_icd.json
|
|
export VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json
|
|
|
|
# PanVk's "I know it's not conformant" gate — the patched driver still
|
|
# refuses to enumerate Bifrost without this env var (Mesa upstream choice,
|
|
# kept for compatibility).
|
|
export PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1
|
|
|
|
# Override apiVersion to 1.2 — ANGLE (Chromium's GL stack) requires
|
|
# device.apiVersion >= 1.1. The patched libvulkan_panfrost.so still has
|
|
# a PAN_ARCH>=10 gate inside get_api_version(); easier to override at
|
|
# runtime via this Mesa env var than to add a third patch.
|
|
export MESA_VK_VERSION_OVERRIDE=1.2
|
|
|
|
# Find the live Plasma session's Xauthority. On a fresh boot the suffix
|
|
# is randomized; pgrep the Xwayland args to find the current one.
|
|
if [ -z "${XAUTHORITY:-}" ]; then
|
|
XAUTHF=$(pgrep -fa Xwayland 2>/dev/null | grep -oE "/run/user/$(id -u)/xauth_[A-Za-z0-9]+" | head -1)
|
|
if [ -n "$XAUTHF" ]; then
|
|
export XAUTHORITY="$XAUTHF"
|
|
fi
|
|
fi
|
|
|
|
# Standard session env if not already set
|
|
: "${XDG_RUNTIME_DIR:=/run/user/$(id -u)}"
|
|
export XDG_RUNTIME_DIR
|
|
|
|
# Default to the active Plasma Wayland session if WAYLAND_DISPLAY unset
|
|
: "${WAYLAND_DISPLAY:=wayland-0}"
|
|
export WAYLAND_DISPLAY
|
|
|
|
# Default to the XWayland :1 unless DISPLAY is set
|
|
: "${DISPLAY:=:1}"
|
|
export DISPLAY
|
|
|
|
exec brave \
|
|
--use-gl=disabled \
|
|
--enable-features=Vulkan \
|
|
--use-vulkan=native \
|
|
--ozone-platform=x11 \
|
|
--no-sandbox \
|
|
--disable-gpu-sandbox \
|
|
--ignore-gpu-blocklist \
|
|
"$@"
|