Banners-Turnip

July 28, 2026 · View on GitHub

Banners-Turnip

Banners-Turnip

Discord

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) Latest Release


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:

PatchWhat it does
tu8_kgsl_26.patch9 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.pyRe-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.pyEnsures 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

WorkflowTriggerWhat it builds
Build Turnip (Combined)Auto (mesa-watcher) or manualStandard + A8xx + A710/A720/A722 in parallel; published as a single tagged release
Build Turnip A8xx (Experimental)ManualStandalone A8xx test build — faster iteration outside the release cycle
Build Turnip (Perf 6xx/7xx)ManualA6xx/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 version26.3.0
Vulkan versionVulkan 1.4.354
Commit47cf31c
Commit date2026-07-28
Commit titlefreedreno: Build blit shaders with nir_builder
Build date20260728
Releasev26.3.0-20260728-r2

Recent Builds (Last 24 Hours)

TagDateCommitDescriptionVulkan
v26.3.0-20260728-r22026-07-2847cf31cfreedreno: Build blit shaders with nir_builderVulkan 1.4.354
v26.3.0-202607282026-07-2860654cevtn/opencl: fix libclc needing fp16 lowering to fp32Vulkan 1.4.354
v26.3.0-20260727-r92026-07-27c5f10a8anv: Enable the temporary RE engine workaround for several titlesVulkan 1.4.354
v26.3.0-20260727-r82026-07-27c276444asahi: ci: Add failing b10g11r11 and e5b9g9r9 copy testsVulkan 1.4.354
v26.3.0-20260727-r72026-07-2728f0804brw: Match fill/spill optimization scratch accesses by logical offsetVulkan 1.4.354
v26.3.0-20260727-r62026-07-273c0803ftu: Dirty LRZ after changing attachment locations disable LRZ writesVulkan 1.4.354
v26.3.0-20260727-r52026-07-27f453139aco: remove TODO in try_optimize_branching_sequenceVulkan 1.4.354
v26.3.0-20260727-r42026-07-27c41c159ac/video: Update VCN 5.3 encode capsVulkan 1.4.354
v26.3.0-20260727-r32026-07-27ed30ed7asahi: nir: lower flrp64Vulkan 1.4.354
v26.3.0-20260727-r22026-07-276015d5epan/perf: Fix 32bit build of panquickVulkan 1.4.354

Release Tags

Tags follow the format v{mesa-version}-{YYYYMMDD}:

TagMeaning
v26.2.0-20260427First build of the day
v26.2.0-20260427-r2Second build of the same day
v26.2.0-20260427-r3Third 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.

  2. 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.

  3. 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)
  4. 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.

  5. 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.

  6. 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 / FreedrenoThe open-source project that Turnip is part of — without Mesa and the Freedreno community's ongoing development, none of this exists.
whitebelyashAuthor 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.
VauziAuthor 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.
bylawsCreator 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.
KimchiMaintainer of AdrenoToolsDrivers — one of the most well-established and trusted custom driver repositories in the Android GPU community, built on top of libadrenotools.
StevenMXZFor 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