⚠️ AUTOMATED BUILD — Not guaranteed stable. Use at your own risk.
Mesa Upstream
| Version | 26.2.0 |
| Commit | aac8787
|
| Vulkan version | Vulkan 1.4.348 |
| Commit date | 2026-04-29 |
| Commit title | radv: remove radv_device_cache_key |
| Build date | 20260429 |
A6xx / A7xx — What's In This Driver
Pure Mesa main — built directly from the latest upstream commit with no source patches.
Three inline NDK r29 compatibility fixes are applied at build time:
buffer_handle_ttypedef fix (native_handle.h)hnd->handlevoid-cast fix (u_gralloc_fallback.c)native_buffer->handlecast fix (vk_android.c)
Targets Snapdragon 600–800 series, 7 Gen and 8 Gen 1–3 (Adreno 600–700 series).
A8xx — What's In This Driver
Same NDK r29 fixes as above, plus the following A8xx-specific changes on top of Mesa main:
Applied via tu8_kgsl_26.patch:
- u_gralloc UBWC fix — disables the
gmsmmagic check for Qualcomm gralloc buffer detection, which stopped working in newer gralloc versions. Without this, UBWC detection fails and you get a distorted or broken picture on screen. - drm-shim entries — adds A810/A825/A829 to the Mesa drm-shim device table (used for offline tracing/testing, not runtime critical).
Applied via fix_a8xx_dev_info.py:
- Adds
disable_gmemproperty tofreedreno_dev_info.h— a flag that tells the driver to skip GMEM entirely for GPUs that can't use it reliably (specifically A810). - Adds the GMEM disable check in
tu_cmd_buffer.ccso A810 uses the sysmem path instead of crashing.
Applied via apply_a8xx_gpus.py:
- Adds A825 GPU entry — completely missing from mesa/main.
- Adds
chip_id=0x44010000to A810 so KGSL can identify the device. - Adds
disable_gmem = Trueto A810's GPU props. - Adds
chip_id=0x44030A00andchip_id=0xffff44030A00to A829 so additional device revisions are recognised.
Already in mesa/main (no patching needed):
UBWC 5/6 KGSL support, A830/A829/A810 base entries, A8xx magic regs, reg_size fixes, and TU_DEBUG_FLUSHALL removal are all upstreamed and included automatically.
A710 / A720 / A722 Test Build — What's In This Driver
⚠️ UNVERIFIED — Needs testing on real hardware before this is merged into the standard build.
Pure Mesa main plus chip ID entries for Adreno 710, 720, and 722 injected via a710-720.py:
- A710 (
chip_id=0x07010000) — chip IDs from binary analysis of MrPurple666's T27-toasted driver; GPU properties tuned from Vauzi-17/mesa-tu8 gen8-clean-26 (a7xx_gen1,a730_magic_regs,num_ccu=2,tile_align_w=32) - A720 (
chip_id=0x43020000) — chip IDs from binary analysis of MrPurple666's T27-toasted driver; GPU properties reuse A730 entry per whitebelyash/mesa-tu8 gen8 (a7xx_gen1,a730_magic_regs,num_ccu=4) - A722 (
chip_id=0x43020100) — chip ID extracted from binary analysis of Vauzi-17/710 v2.5.2; same 0x43 family as A720 (minor revision 0x01), shares A720 GPU properties
None of these chip IDs exist in Mesa main or the Linux kernel device catalog. The standard ZIP is completely unaffected — this variant only activates on devices reporting exactly those chip IDs.
Recommended: use sysmem mode. GMEM tile rendering is not disabled but relies on A730 magic registers which may not match your hardware — this can cause GPU hangs or corruption. Force sysmem via
TU_DEBUG=sysmemin your emulator/app environment until GMEM is confirmed stable on real hardware.
Winlator users: set
WRAPPER_BLIT=1in your environment variables.
Compared to the Original whitebelyash/mesa-tu8 Patchset
Based on patchset-head-v2. The original had 11 commits — most have since been merged into mesa/main, so this build uses only 2 of them directly:
| Original Patch | Status |
|---|---|
| UBWC_5/6 KGSL support | ✅ Already in mesa/main — merged upstream |
| u_gralloc UBWC fix | ✅ Applied — still needed |
| disable_gmem property | ✅ Applied via Python script — context drifted too far to patch cleanly |
| Remove TU_DEBUG_FLUSHALL | ✅ Already in mesa/main — merged upstream |
| A8xx magic regs common | ❌ Dropped — register renamed (VPC_UNKNOWN_9313 → VPC_UNKNOWN_CNTL), caused build failure
|
| A830 properties | ✅ Already in mesa/main — merged upstream |
| reg_size for a8xx_gen1 | ✅ Already in mesa/main — merged upstream |
| gmem cache offset | ✅ Already in mesa/main — already removed |
| Enable A810/A825/A829 | ✅ Applied via Python script — GPU entries partially in mesa/main, script handles the rest |
| drm-shim A810/A825/A829 | ✅ Applied — still needed |
| Comment dual_wave_dispatch | ❌ Dropped — context drifted, upstream has it enabled |
Adreno GPU Support
| Series | File | Notes |
|---|---|---|
| A6xx / A7xx | Turnip-v26.2.0-20260429-r5.zip
| Pure Mesa main — Snapdragon 600–800 series, 7/8 Gen 1–3 |
| A8xx | Turnip-v26.2.0-20260429-r5-A8xx.zip
| Experimental — Snapdragon 8 Elite (A810/A825/A829/A830) |
| A710 / A720 / A722 | Turnip-v26.2.0-20260429-r5-710-720-Test.zip
| ⚠️ UNVERIFIED — Adreno 710/720/722 test build, needs hardware testing |
Which file? A6xx/A7xx → standard ZIP · A8xx (Snapdragon 8 Elite) → A8xx ZIP · A710/A720/A722 owners → 710-720-Test ZIP
Installation
- BannerHub / BCI: Component Manager → Add New Component → select the ZIP
- Winlator / adrenotools: load the ZIP in GPU driver settings