Skip to content

Turnip v26.2.0-20260629

Choose a tag to compare

@github-actions github-actions released this 29 Jun 07:34
· 751 commits to A8xx since this release

⚠️ 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_t typedef fix (native_handle.h)
  • hnd->handle void-cast fix (u_gralloc_fallback.c)
  • native_buffer->handle cast 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 gmsm magic 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_gmem property to freedreno_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.cc so 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=0x44010000 to A810 so KGSL can identify the device.
  • Adds disable_gmem = True to A810's GPU props.
  • Adds chip_id=0x44030A00 and chip_id=0xffff44030A00 to 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 tested a730_magic_regs + a730_raw_magic_regs; num_ccu=3, tile_align_w=64, tile_align_h=32
  • A720 (chip_id=0x43020000) — uses Mesa's tested a730_magic_regs + a730_raw_magic_regs; num_ccu=3, tile_align_w=64, tile_align_h=32
  • A722 (chip_id=0x43020100) — uses Mesa's tested a730_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=sysmem in your emulator/app environment until GMEM is confirmed stable on real hardware.

Winlator users: set WRAPPER_BLIT=1 in 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_9313VPC_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 ⚠️ 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