⚠️ AUTOMATED BUILD — Not guaranteed stable. Use at your own risk.
Mesa Upstream
| Version | 26.2.0 |
| Commit | 7eba054
|
| Vulkan version | Vulkan 1.4.352 |
| Commit date | 2026-05-20 |
| Commit title | anv: Add compute only divergent atomics fusion optimization for Blender Blender uses atomic operations as part of its virtual shadow mapping implementation. Virtual shadow mapping page tagging in compute shaders benefits from divergent atomics fusion, while fragment shaders doing the atomic raster step in general have worse performance with this optimization turned on. Thus, an option is added to only apply divergent atomics fusion to compute shaders in ANV, and this option is enabled for Blender. |
| Build date | 20260520 |
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) — hardware-specificfd710_raw_magic_regs(different UCHE cache ways, unique PC_DBG_ECO_CNTL value);num_ccu=3,tile_align_w=32,tile_align_h=16 - A720 (
chip_id=0x43020000) — hardware-specificfd720_722_magic_regsandfd720_722_raw_magic_regs;num_ccu=3,tile_align_w=64,tile_align_h=32 - A722 (
chip_id=0x43020100) — sharesfd720_722_magic_regsandfd720_722_raw_magic_regswith A720;num_ccu=4,tile_align_w=64,tile_align_h=32
All three entries include hardware-tuned sysmem cache sizes and VPC attribute buffer sizes. 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-20260520-r7.zip
| Pure Mesa main — Snapdragon 600–800 series, 7/8 Gen 1–3 |
| A8xx | Turnip-v26.2.0-20260520-r7-A8xx.zip
| Experimental — Snapdragon 8 Elite (A810/A825/A829/A830) |
| A710 / A720 / A722 | Turnip-v26.2.0-20260520-r7-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