Profile
Back to NewsBack
GitHub Trending 7 min
Reader Mode
The412Banner/Banners-Turnip: Automated bleeding-edge Mesa Turnip Vulkan driver builds for Qualcomm Adreno GPUs — packaged for AdrenoTools, updated on every upstream Mesa commit.

The412Banner/Banners-Turnip: Automated bleeding-edge Mesa Turnip Vulkan driver builds for Qualcomm Adreno GPUs — packaged for AdrenoTools, updated on every upstream Mesa commit.

Banners-Turnip

Banners-Turnip

Discord</a>
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.

Build Turnip (Combined)</a> Latest Release</a>


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.362 | | Commit | 2922c24 | | Commit date | 2026-09-10 | | Commit title | kraid: Update isa files | | Build date | 20260910 | | Release | v26.3.0-20260910-r2 |


Recent Builds (Last 24 Hours)

| Tag | Date | Commit | Description | Vulkan | | :--- | :--- | :--- | :--- | :--- | | v26.3.0-20260910-r2 | 2026-09-10 | 2922c24 | kraid: Update isa files | Vulkan 1.4.362 | | v26.3.0-20260910 | 2026-09-10 | 1775b1f | docs/amd/hw: document all image 2D tiling layouts in terms of X/Y bit swizzle | Vulkan 1.4.362 | | v26.3.0-20260909-r6 | 2026-09-09 | 0ba4b08 | anv: Fix barrier after anv_init_update_scratch | Vulkan 1.4.362 | | v26.3.0-20260909-r5 | 2026-09-09 | 189ee82 | ir3: add quirk for prefetch sam.s2en needing helpers | Vulkan 1.4.362 | | v26.3.0-20260909-r4 | 2026-09-09 | 0d607b7 | freedreno: don't spin forever when an RD dump cannot be opened | Vulkan 1.4.362 |


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:

  1. Enable Actions — GitHub disables Actions on forks by default. Go to Settings → Actions → General and set it to Allow all actions.
  1. 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.
  1. 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 to 1 (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)
  1. Keep the branch named A8xx — The README auto-update step in turnip_build_combined.yml has A8xx hardcoded 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 as A8xx or do a find-and-replace in .github/workflows/turnip_build_combined.yml to match your branch name.
  1. Update cosmetic repo references (optional) — A few strings in the workflows reference the original repo: patch links in release note bodies and "author" in meta.json. Search for The412Banner in .github/workflows/ and update to your own username/repo if desired. These don't affect build functionality.
  1. 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 WatcherRun 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.


Support on Ko-fi

Community

Join our Discord: https://discord.gg/n8S4G2WZQ4

Chat with me