#!/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_iteration{9,10}_close.md # # Usage: brave-vulkan [brave args...] # Equivalent to: brave [VULKAN_FLAGS] [your args] # # iter10 changes vs iter9: # - dropped VK_ICD_FILENAMES env (ICD now at /usr/share/vulkan/icd.d/ # with '00-' prefix so the Vulkan loader auto-picks ours first) # - dropped --no-sandbox / --disable-gpu-sandbox (env vars survive the # GPU sandbox boundary, no bypass needed) set -e # Pin the Vulkan ICD selection to our package's ICD. The Vulkan loader's # readdir-order in /usr/share/vulkan/icd.d/ is implementation-defined # per Khronos LoaderDriverInterface — the '00-' filename prefix is NOT # spec-backed. VK_LOADER_DRIVERS_SELECT short-circuits the directory # enumeration and picks our ICD deterministically. (Phase 5 review # hardening, iter10.) export VK_LOADER_DRIVERS_SELECT='00-panvk-bifrost*' # PanVk's "I know it's not conformant" gate — the patched driver still # refuses to enumerate Bifrost without this env var (upstream Mesa choice # for v6/v7, 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. Source patches don't move get_api_version()'s # PAN_ARCH>=10 hardcode; the env var override does. 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 \ --ignore-gpu-blocklist \ "$@"