Banners-Turnip
July 28, 2026 · View on GitHub
Banners-Turnip
Automated, bleeding-edge builds of the Mesa Turnip Vulkan driver — compiled directly from the latest upstream Mesa commits and packaged for AdrenoTools-compatible apps on Qualcomm Adreno GPUs.
What Is This?
Turnip is the open-source Mesa Vulkan driver for Qualcomm Adreno GPUs — developed as part of the Mesa project and maintained by the Freedreno community. Unlike the proprietary Qualcomm driver, Turnip is fully open-source and often ships fixes and feature support ahead of official Qualcomm releases.
This repo automatically builds Turnip from the absolute latest commit on mesa/main — no waiting for official Mesa releases. A Mesa upstream watcher polls for new commits every hour and triggers a fresh build automatically whenever mesa/main advances. The result is an AdrenoTools-compatible ZIP you can drop straight into any compatible app (BannerHub/BCI, Winlator, etc.) to get the most up-to-date driver available.
Driver Variants & Downloads
Each release ships three driver ZIPs — pick the one matching your GPU.
Download latest → · Full build history →
A6xx / A7xx — Standard
Pure Mesa main, no source patches. Compatible with Adreno 600–700 series GPUs (Snapdragon 600–800 series, including 7 Gen and 8 Gen 1–3).
A710 / A720 / A722 — Experimental / Work in Progress
Injects hardware-specific GPU entries and magic registers for Adreno 710, 720, and 722 on top of Mesa main via a710-720.py — based on community research by Vauzi-17. No upstream Mesa support exists for these GPUs yet. Early results are promising. Recommended: force sysmem mode via TU_DEBUG=sysmem until GMEM is confirmed stable. Winlator users: set WRAPPER_BLIT=1.
A8xx — Experimental
Targets Adreno 800-series (Snapdragon 8 Elite — A810, A825, A829, A830). Built from Mesa main with the following patches on top:
| Patch | What it does |
|---|---|
tu8_kgsl_26.patch | 9 commits from whitebelyash/mesa-tu8: UBWC gralloc detection, disable_gmem GPU property, A8xx magic regs, A810/A825/A829/A830 GPU configs, gmem cache fixes |
fix_a8xx_dev_info.py | Re-adds disable_gmem to freedreno_dev_info.h and tu_cmd_buffer.cc — safeguard if the patch hunk drifts on a new Mesa commit |
apply_a8xx_gpus.py | Ensures A810/A825/A829 GPU entries are present in freedreno_devices.py — safeguard if the patch hunk drifts on a new Mesa commit |
Use at your own risk.
Workflows
| Workflow | Trigger | What it builds |
|---|---|---|
| Build Turnip (Combined) | Auto (mesa-watcher) or manual | Standard + A8xx + A710/A720/A722 in parallel; published as a single tagged release |
| Build Turnip A8xx (Experimental) | Manual | Standalone A8xx test build — faster iteration outside the release cycle |
| Build Turnip (Perf 6xx/7xx) | Manual | A6xx/A7xx only, compiled with -O3 + ThinLTO for performance testing |
Installation
- BannerHub / BCI: Component Manager → Add New Component → select the ZIP
- AdrenoTools-compatible apps (Winlator, etc.): load the ZIP in GPU driver settings
Latest Build
| Mesa version | 26.3.0 |
| Vulkan version | Vulkan 1.4.354 |
| Commit | 47cf31c |
| Commit date | 2026-07-28 |
| Commit title | freedreno: Build blit shaders with nir_builder |
| Build date | 20260728 |
| Release | v26.3.0-20260728-r2 |
Recent Builds (Last 24 Hours)
| Tag | Date | Commit | Description | Vulkan |
|---|---|---|---|---|
| v26.3.0-20260728-r2 | 2026-07-28 | 47cf31c | freedreno: Build blit shaders with nir_builder | Vulkan 1.4.354 |
| v26.3.0-20260728 | 2026-07-28 | 60654ce | vtn/opencl: fix libclc needing fp16 lowering to fp32 | Vulkan 1.4.354 |
| v26.3.0-20260727-r9 | 2026-07-27 | c5f10a8 | anv: Enable the temporary RE engine workaround for several titles | Vulkan 1.4.354 |
| v26.3.0-20260727-r8 | 2026-07-27 | c276444 | asahi: ci: Add failing b10g11r11 and e5b9g9r9 copy tests | Vulkan 1.4.354 |
| v26.3.0-20260727-r7 | 2026-07-27 | 28f0804 | brw: Match fill/spill optimization scratch accesses by logical offset | Vulkan 1.4.354 |
| v26.3.0-20260727-r6 | 2026-07-27 | 3c0803f | tu: Dirty LRZ after changing attachment locations disable LRZ writes | Vulkan 1.4.354 |
| v26.3.0-20260727-r5 | 2026-07-27 | f453139 | aco: remove TODO in try_optimize_branching_sequence | Vulkan 1.4.354 |
| v26.3.0-20260727-r4 | 2026-07-27 | c41c159 | ac/video: Update VCN 5.3 encode caps | Vulkan 1.4.354 |
| v26.3.0-20260727-r3 | 2026-07-27 | ed30ed7 | asahi: nir: lower flrp64 | Vulkan 1.4.354 |
| v26.3.0-20260727-r2 | 2026-07-27 | 6015d5e | pan/perf: Fix 32bit build of panquick | Vulkan 1.4.354 |
Release Tags
Tags follow the format v{mesa-version}-{YYYYMMDD}:
| Tag | Meaning |
|---|---|
v26.2.0-20260427 | First build of the day |
v26.2.0-20260427-r2 | Second build of the same day |
v26.2.0-20260427-r3 | Third build of the same day |
The -r counter starts fresh each day. Multiple builds on the same day happen when Mesa receives more than one commit within 24 hours — each new upstream commit triggers a new build.
Forking / Self-Hosting
You can fork this repo and get fully automated builds running with minimal setup — no custom secrets or external accounts required. All CI uses the built-in GITHUB_TOKEN.
After forking:
-
Enable Actions — GitHub disables Actions on forks by default. Go to Settings → Actions → General and set it to Allow all actions.
-
Enable write permissions for Actions — Under Settings → Actions → General → Workflow permissions, select Read and write permissions. This is required for the watcher to commit hash files, update the README, and trigger builds.
-
Reset state files — The repo ships with state files that track upstream positions. Reset them so your fork starts clean:
mesa_hash.txt— clear or delete (watcher records the current Mesa HEAD here; a stale value skips the first build trigger)steven_last_tag.txt— clear or delete (same, for the StevenMXZ release watcher)perf_build_number.txt— set to1(incremented and committed by the perf build workflow; leaving it at the current value just means your first perf build gets a higher number, which is harmless but confusing)
-
Keep the branch named
A8xx— The README auto-update step inturnip_build_combined.ymlhasA8xxhardcoded in four places (git fetch/checkout/pull/push origin A8xx). If you rename the branch, that step will fail and your README won't auto-update. Either keep the branch asA8xxor do a find-and-replace in.github/workflows/turnip_build_combined.ymlto match your branch name. -
Update cosmetic repo references (optional) — A few strings in the workflows reference the original repo: patch links in release note bodies and
"author"inmeta.json. Search forThe412Bannerin.github/workflows/and update to your own username/repo if desired. These don't affect build functionality. -
Kick off your first build — GitHub Actions schedules don't fire automatically on forks until the repo sees some activity. Manually trigger either:
- Mesa Upstream Watcher → Run workflow — records the current Mesa HEAD and fires a combined build if it's new
- Build Turnip (Combined) → Run workflow — builds and publishes a release immediately without waiting for the watcher
Once those steps are done, the watcher polls Mesa upstream every hour and triggers a fresh build automatically — no further maintenance needed.
Credits
This project wouldn't exist without the hard work and dedication of these community members. A huge thank you to each of them for sharing their knowledge, publishing their work openly, and being available to help — they're the reason any of this is possible.
| Mesa / Freedreno | The open-source project that Turnip is part of — without Mesa and the Freedreno community's ongoing development, none of this exists. |
| whitebelyash | Author of the mesa-tu8 A8xx patchset — the foundation of our A8xx driver variant. His research into A810/A825/A829/A830 GPU enablement, KGSL support, and UBWC fixes made Snapdragon 8 Elite Turnip support possible. |
| Vauzi | Author of the A710/A720/A722 GPU enablement work — hardware-specific magic registers, tuned GPU properties, and chip ID research that our experimental 710/720/722 test build is built on. |
| bylaws | Creator of libadrenotools — the driver loading framework that makes all of this usable on Android without root. Without libadrenotools, custom Turnip builds would have no delivery mechanism. |
| Kimchi | Maintainer of AdrenoToolsDrivers — one of the most well-established and trusted custom driver repositories in the Android GPU community, built on top of libadrenotools. |
| StevenMXZ | For his ongoing Turnip builds and releases that the community relies on, and for making his work openly available for others to build upon. |
Also thanks to anyone I forgot and not listed — the Android GPU community is full of people whose contributions quietly make things work, and they deserve recognition too.
Community
Join our Discord: https://discord.gg/n8S4G2WZQ4