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 |
| Mesa version | 26.3.0 |
| Vulkan version | Vulkan 1.4.359 |
| Commit | c3b008c |
| Commit date | 2026-09-06 |
| Commit title | nir/serialize: set info.spec to NULL |
| Build date | 20260906 |
| Release | v26.3.0-20260906-r2 |
| Tag | Date | Commit | Description | Vulkan |
|---|---|---|---|---|
| v26.3.0-20260906-r2 | 2026-09-06 | c3b008c | nir/serialize: set info.spec to NULL | Vulkan 1.4.359 |
| v26.3.0-20260906 | 2026-09-06 | 19935f7 | Uprev VVL to ad4ed518c3c9783b9c9ff912c205c987b17d7bf4 | Vulkan 1.4.359 |
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 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)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.
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.
Kick off your first build — GitHub Actions schedules don't fire automatically on forks until the repo sees some activity. Manually trigger either:
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
Python
73.6%
Shell
26.4%
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 |
| Mesa version | 26.3.0 |
| Vulkan version | Vulkan 1.4.359 |
| Commit | c3b008c |
| Commit date | 2026-09-06 |
| Commit title | nir/serialize: set info.spec to NULL |
| Build date | 20260906 |
| Release | v26.3.0-20260906-r2 |
| Tag | Date | Commit | Description | Vulkan |
|---|---|---|---|---|
| v26.3.0-20260906-r2 | 2026-09-06 | c3b008c | nir/serialize: set info.spec to NULL | Vulkan 1.4.359 |
| v26.3.0-20260906 | 2026-09-06 | 19935f7 | Uprev VVL to ad4ed518c3c9783b9c9ff912c205c987b17d7bf4 | Vulkan 1.4.359 |
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 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)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.
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.
Kick off your first build — GitHub Actions schedules don't fire automatically on forks until the repo sees some activity. Manually trigger either:
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
Python
73.6%
Shell
26.4%