github The412Banner/Banners-Turnip v26.2.0-20260520-r7
Turnip v26.2.0-20260520-r7

5 months ago

⚠️ 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_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) — hardware-specific fd710_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-specific fd720_722_magic_regs and fd720_722_raw_magic_regs; num_ccu=3, tile_align_w=64, tile_align_h=32
  • A722 (chip_id=0x43020100) — shares fd720_722_magic_regs and fd720_722_raw_magic_regs with 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=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_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

Don't miss a new Banners-Turnip release

NewReleases is sending notifications on new releases.