Turnip v26.2.0-20260629
⚠️ AUTOMATED BUILD — Not guaranteed stable. Use at your own risk.
Mesa Upstream
| Version | 26.2.0 |
| Commit | c5f0ccc |
| Vulkan version | Vulkan 1.4.354 |
| Commit date | 2026-06-29 |
| Commit title | panvk: set cfg cull status according to primitive topology |
| Build date | 20260629 |
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 hardware-specific GPU entries for Adreno 710, 720, and 722 injected via a710-720.py (based on Vauzi-17/710):
- A710 (
chip_id=0x07010000) — uses Mesa's testeda730_magic_regs+a730_raw_magic_regs;num_ccu=3,tile_align_w=64,tile_align_h=32 - A720 (
chip_id=0x43020000) — uses Mesa's testeda730_magic_regs+a730_raw_magic_regs;num_ccu=3,tile_align_w=64,tile_align_h=32 - A722 (
chip_id=0x43020100) — uses Mesa's testeda730_magic_regs+a730_raw_magic_regs;num_ccu=3,tile_align_w=64,tile_align_h=32
All three entries inherit their GPU properties from Mesa's a7xx_base and a7xx_gen1 baseline rather than overriding with hand-tuned values. 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. 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-20260629.zip |
Pure Mesa main — Snapdragon 600–800 series, 7/8 Gen 1–3 |
| A8xx | Turnip-v26.2.0-20260629-A8xx.zip |
Experimental — Snapdragon 8 Elite (A810/A825/A829/A830) |
| A710 / A720 / A722 | Turnip-v26.2.0-20260629-710-720-Test.zip |
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