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.
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.
Each release ships three driver ZIPs — pick the one matching your GPU.
Download latest → · Full build history →
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).
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.
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.
| 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 |
- BannerHub / BCI: Component Manager → Add New Component → select the ZIP
- AdrenoTools-compatible apps (Winlator, etc.): load the ZIP in GPU driver settings
| Mesa version | 26.2.0 |
| Vulkan version | Vulkan 1.4.353 |
| Commit | bcae3b8 |
| Commit date | 2026-06-08 |
| Commit title | radv: handle errors correctly when creating gang waits |
| Build date | 20260608 |
| Release | v26.2.0-20260608-r8 |
| Tag | Date | Commit | Description | Vulkan |
|---|---|---|---|---|
| v26.2.0-20260608-r8 | 2026-06-08 | bcae3b8 |
radv: handle errors correctly when creating gang waits | Vulkan 1.4.353 |
| v26.2.0-20260608-r7 | 2026-06-08 | 718236e |
ethosu: use FALLTHROUGH macro in ethosu_emit_operation_accesses | Vulkan 1.4.353 |
| v26.2.0-20260608-r6 | 2026-06-08 | f171793 |
radv/ci: run vkd3d jobs with ASAN by default | Vulkan 1.4.353 |
| v26.2.0-20260608-r5 | 2026-06-08 | 127e5b5 |
broadcom/ci: update kernel for nightly jobs | Vulkan 1.4.353 |
| v26.2.0-20260608-r4 | 2026-06-08 | c9c48f7 |
doc/ci: Add custom-kernel testing workflow | Vulkan 1.4.353 |
| v26.2.0-20260608-r3 | 2026-06-08 | 1160606 |
broadcom/compiler: fix payload-register liveness condition | Vulkan 1.4.353 |
| v26.2.0-20260608-r2 | 2026-06-08 | 76e600a |
tu/ci: Add coverage for emulated second graphics queue | Vulkan 1.4.353 |
| v26.2.0-20260608 | 2026-06-08 | 2cf1f6c |
venus: fix unbound malloc leak in vn_ring_get_submits | Vulkan 1.4.353 |
| v26.2.0-20260607-r3 | 2026-06-07 | 9ec5e9a |
etnaviv: blt: Don't sRGB-roundtrip same-encoding copies | Vulkan 1.4.353 |
| v26.2.0-20260607-r2 | 2026-06-07 | 6094bed |
llvmpipe: create a zeroed payload for use without task shaders | Vulkan 1.4.353 |
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.
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.
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.
Join our Discord: https://discord.gg/n8S4G2WZQ4
