github The412Banner/Banners-Turnip v27.0.0-20261115-r3
Turnip v27.0.0-20261115-r3

48 minutes ago

⚠️ Automated build from Mesa main: checked by CI, not tested on a device.

Mesa
Commit 7c839c8
Commit title dzn: Apply all dependencies in CmdWaitEvents2
Vulkan version Vulkan 1.4.368
Date 2026-11-15

Downloads

Driver GPUs X11 / AdrenoTools Bannerlator Wayland Linux runtime
Standard Adreno 6xx / 7xx (8 Gen 3 and older) Turnip-v27.0.0-20261115-r3.zip Turnip-v27.0.0-20261115-r3-Wayland.zip Turnip-v27.0.0-20261115-r3-Linux.zip
A8xx (experimental) Adreno 810 / 812 / 825 / 829 / 830 / 840 (8 Elite) Turnip-v27.0.0-20261115-r3-A8xx.zip Turnip-v27.0.0-20261115-r3-A8xx-Wayland.zip Turnip-v27.0.0-20261115-r3-A8xx-Linux.zip
A710 / A720 / A722 (experimental, untested on hardware) Adreno 710 / 720 / 722 Turnip-v27.0.0-20261115-r3-710-720-Test.zip Turnip-v27.0.0-20261115-r3-710-720-Test-Wayland.zip Turnip-v27.0.0-20261115-r3-710-720-Test-Linux.zip
8 Gen 2 One UI Adreno 740 (8 Gen 2) with UI flicker, e.g. Samsung One UI Turnip-v27.0.0-20261115-r3-8G2-OneUI.zip Turnip-v27.0.0-20261115-r3-8G2-OneUI-Wayland.zip Turnip-v27.0.0-20261115-r3-8G2-OneUI-Linux.zip
Banners-AIO (all SoC) Every Adreno: 6xx, 7xx, 710 / 720 / 722, 8xx Turnip-v27.0.0-20261115-r3-Banners-AIO.zip Turnip-v27.0.0-20261115-r3-Banners-AIO-Wayland.zip Turnip-v27.0.0-20261115-r3-Banners-AIO-Linux.zip

Which one?

  • X11 (Bannerlator, Winlator, BannerHub, any AdrenoTools app): import the normal zip as a GPU driver. Not sure which driver? Use Standard.
  • Banners-AIO: one zip for every Adreno. Each GPU family keeps its own changes: the A8xx recipe only on A8xx chips, the A722 registers only on the A722. Its recipe was tested on an Adreno 830, 750 and 722 before it joined these builds; each hourly build is still only checked by CI.
  • Bannerlator Wayland containers: Import Wayland game driver (.zip), then pick the -Wayland zip.
  • Bannerlator Linux runtime (gamescope + the native ARM64 Steam client): the -Linux zip. It is a glibc Vulkan ICD and it is what draws the client and every game the client launches (needs glibc 2.38 or newer). It is not an AdrenoTools driver and it does not load in a Wine container; the Android zip still puts the finished frame on the screen.

Tips: A8xx: TU_DEBUG=sysmem if an A830 looks glitchy, TU_DEBUG=deck_emu if a game won't start. A710 / A720 / A722: TU_DEBUG=sysmem (in Winlator also WRAPPER_BLIT=1). 8 Gen 2 One UI: only if the Standard driver makes the phone's UI glitch or flicker; on other 8 Gen 2 devices it causes that glitch. The same switch without changing driver: FD_DEV_FEATURES=enable_tp_ubwc_flag_hint=1.

What's in each driver

Tap a driver to see which GPUs it is for, what it changes on top of Mesa, where each change came from and who wrote it.

Every driver: what all five share
  • Base: Mesa main at 7c839c8 (2026-11-15), built for KGSL.
  • DirectX 12 no longer waits on the GPU every frame. A quick "is the GPU done yet?" check was sent to the kernel as "wait until it's done", so the CPU and GPU took turns with VKD3D-Proton. On an Adreno 750 a DirectX 12 demo went from 378 to 1422 fps on X11 and from 588 to 3449 fps on Wayland (report). Found here (The412Banner); fixed in Mesa by Danylo Piliaiev, MR 44838 (2026-10-08).
  • No crash when a frame waits on two kinds of sync at once (Cemu crashed on its first frame; RPCS3 and Dolphin checked too). First fixed in DroidDeck's driver; fixed in Mesa by Danylo Piliaiev (1da50a1b, MR 44838). See SOURCE.
  • Game entries (apply_common.sh, not in Mesa yet): MIO: Memories in Orbit and UNCHARTED: Legacy of Thieves Collection turn on tu_enable_ssbo_emulation on Adreno 7xx, so their large storage buffers work (MIO report). The option itself is Mesa's, by Job Noorman. With other Turnip builds from after 2026-06-10, set tu_enable_ssbo_emulation=true yourself.
Standard: Adreno 6xx / 7xx (8 Gen 3 and older)
  • Mesa main plus Every driver above. No GPU-specific patches, no mesh shaders, no wave32.
  • Credit: the Mesa / Freedreno developers.
A8xx: Adreno 8xx (Snapdragon 8 Elite)
  • For: Adreno 810 / 812 / 825 / 829 / 830 / 840 (Snapdragon 8 Elite). Experimental.
  • a8xx_gen8.patch: whitebelyash's turnip/gen8 stack (mesa-unified): A8xx GPU entries, UBWC gralloc detection, the disable_gmem property, the Steam Deck spoof (TU_DEBUG=deck_emu), A810 / A812 fixes. Commits and authors:
    • tu: Add DECK_EMU to advertise being a SteamDeck — Karmjit Mahil
    • HACK: u_gralloc: always use ubwc detection path — whitebelyash
    • tu/freedreno: add disable_gmem GPU property — whitebelyash
    • freedreno/shim: enable drm-shim support for Adreno — whitebelyash
    • freedreno/common: enable A825 — whitebelyash
    • freedreno/common: update a8xx family configs — DVD
    • freedreno/common: minor fixes for a810 — DVD
    • HACK: tu: disable few features for a810 — DVD
    • HACK: tu: enforce TU_DEBUG=nocb (disable concurrent binning) — whitebelyash
    • freedreno/common: Fix offsets for A825/829 — DVD
    • tu/pipeline: enable custom resolve for A810, off MSAA, FDM — DVD
    • ir3: coalesce UBO promotion ranges on Adreno 810 — DVD
    • WIP: freedreno/common: enable Adreno 812 — whitebelyash
    • freedreno/common: change a810/a812 depth ccu fraction — whitebelyash
  • a8xx_shared_mem.py: compute shared memory 32 → 64 KiB on every entry (whitebelyash, dcbb41b2). Known: Vulkan conformance tests above 32 KiB fail on an Adreno 830; Banners-AIO keeps 32 KiB.
  • a8xx_no_double_threadsize.py: keeps Mesa's supports_double_threadsize = False for A8xx. DVD's "update a8xx family configs" commit above turns it on, and then subgroup math in compute shaders (subgroupAdd, shuffle, ballot, …) returns wrong results on an Adreno 830; with Mesa's value the same tests pass and speed is unchanged (Banners-Turnip, 2026-11-05).
  • Max's WinNative series (Max / MaxsTechReview, WinNative-Emu/Drivers, GPL-3.0), A8xx only: 0001-tu-Emulate-VK_EXT_mesh_shader-with-compute.patch mesh shaders emulated with compute and 0002-tu-ir3-Support-a-required-subgroup-size-of-half-a-wa.patch wave32 (DirectX 12 Ultimate games such as FINAL FANTASY VII REBIRTH and Alan Wake 2); 0003-ir3-Sanitize-cube-map-directions-on-A8XX.patch, 0004-tu-Invalidate-bindless-descriptors-through-the-A8XX-.patch, 0005-tu-kgsl-Fetch-A8XX-command-streams-through-a-virtual.patch three GPU hang fixes. His IB cache (0006) is left out: it broke the Linux driver on some Adreno 840s.
  • From DroidDeck's Turnip (Droid-Deck/Drivers, GPL-3.0; Nikolay Nadorichev, maxjivi05): 0006-ir3-shuffle-broadcast.patch subgroup shuffles with a broadcast index no longer loop once per invocation, and 0007-tu-descriptor-pool-heap-alignment.patch descriptor sets stay aligned after vkResetDescriptorPool (invisible UI in Detroit: Become Human). See SOURCE.
  • Plus Every driver above. Tips: TU_DEBUG=sysmem if an A830 looks glitchy, TU_DEBUG=deck_emu if a game won't start.
A710 / A720 / A722: Adreno 710 / 720 / 722
  • A710 and A720 come from Mesa main itself (upstream since September 2026).
  • a710-720.py: swaps Mesa's A730-based A722 entry for Vauzi-17/710's registers captured on real A722 hardware (num_ccu = 2). Credit: Vauzi-17.
  • 01-u_gralloc-always-use-ubwc-detection.patch: UBWC gralloc fix (whitebelyash), as shipped in Vauzi-17/710's releases.
  • Plus Every driver above. Tips: TU_DEBUG=sysmem; in Winlator also WRAPPER_BLIT=1.
8 Gen 2 One UI: Adreno 740 on newer firmware
  • Standard plus 8g2_oneui.py (Banners-Turnip): turns on enable_tp_ubwc_flag_hint for the Adreno 740, to match newer system drivers such as Samsung One UI. Mesa leaves it off to match the older system driver.
  • Only if the Standard driver makes the phone's UI glitch or flicker; on other 8 Gen 2 devices it causes that glitch. Same switch without changing driver: FD_DEV_FEATURES=enable_tp_ubwc_flag_hint=1.
Banners-AIO: every Adreno, one driver
  • One libvulkan_freedreno.so for every Adreno; Turnip picks each GPU's settings by chip ID. one_gpu_gates.py (Banners-Turnip) keeps the A8xx-wide changes on A8xx chips, so every other GPU behaves as in its own driver here. Compute shared memory is 32 KiB on every GPU.
  • Every GPU: Every driver above, plus from Droid-Deck/Drivers (copied unchanged, with permission): render-pass barrier flushes kept (UE5 Nanite) and 32-bit SSBO offset wrap (K11MCH1); memory budget counts the whole process (Charles DuBose).
  • Every GPU on Android: IMapper5 gralloc backend and UBWC-compressed swapchain buffers (Leb-Sun, Droid-Deck/Drivers).
  • A6xx / A7xx: as Standard plus the above.
  • A710 / A720 / A722 / A725 / A730: early preamble and scalar predicates off (DroidDeck, Droid-Deck/Drivers).
  • A722: Vauzi-17/710's registers (Vauzi-17) and GMEM off (GMEM gives CCU write page faults on the A722 in every Turnip build).
  • A8xx: whitebelyash's turnip/gen8 stack and Max's WinNative 0001-0005 as in the A8xx driver (without the 64 KiB script, with a8xx_no_double_threadsize.py); LRZ controls reset after the end-of-pass flush (Gustash); buffer descriptors of 1 GiB and more keep their size (airidosas252, now also in Mesa); RB_RESOLVE_CR_CNTL and LRZ color mask as the Qualcomm driver (adapted from Vauzi-17/710); extra chip IDs for the A829, A845 and A850, and no category-4 repeat on the A845 / A850 (misakayuuki); GMEM off on the A810 and A829; the shuffle broadcast of SOURCE.
  • Every GPU: descriptor sets stay aligned after vkResetDescriptorPool (0007-tu-descriptor-pool-heap-alignment.patch, Nikolay Nadorichev, maxjivi05, Droid-Deck/Drivers).
  • Sources: one_fixes.py and SOURCE.md. Its recipe was tested on an Adreno 830, 750 and 722 before it joined these builds.
Build details and checksums
  • Wayland zips: the same commit and patches, built as Linux-style Vulkan drivers (KGSL, Wayland, bionic) with Bannerlator's zero-copy patch. CI checks each one before it is attached. They don't load as AdrenoTools drivers, and the X11 zips don't work as Wayland game drivers.
  • Linux zips: the same commit and patches, cross-built against glibc (KGSL, Wayland + X11 WSI) for Bannerlator's Arch Linux ARM runtime, plus the KGSL fix that runtime needs kgsl-drm-node.patch. They ship the ICD and its manifest only: the libraries are the runtime's own. CI checks each one.
File SHA-256
Turnip-v27.0.0-20261115-r3.zip 13cfdd03d217262cf1db8209c16a86d24279df45cad66fe25b1ace92de8fc20b
Turnip-v27.0.0-20261115-r3-Wayland.zip 211639a43c11e8f45e2fde4040ae908b5e09b325f23cc632791bc653db27292b
Turnip-v27.0.0-20261115-r3-Linux.zip 8efe9b0660ffde3f967f31651478d010042d4edcb1336807a490aa050d06d892
Turnip-v27.0.0-20261115-r3-A8xx.zip 0b7ff8c9d364220eb847656e3eaebbf8b4d364880e1a2a4fbd0949fd0f5da749
Turnip-v27.0.0-20261115-r3-A8xx-Wayland.zip 8a9320717b74e29f8d4fcc3d1b7c785ae3f95ebe12f95187d86175f9eadda1c0
Turnip-v27.0.0-20261115-r3-A8xx-Linux.zip fcc2e3171723afa7ae0948cde374a70da17137cb46868b20978a00095b04cb75
Turnip-v27.0.0-20261115-r3-710-720-Test.zip ca502d7b197a2f06b432964a20bf6e37c262c4646f8a56c9c6d5cc9ba9b02894
Turnip-v27.0.0-20261115-r3-710-720-Test-Wayland.zip f8584c3b4034d9645cc236df55613148d081640925d5b8e509f575e9ee0a2f72
Turnip-v27.0.0-20261115-r3-710-720-Test-Linux.zip 7b8378d387635a0d64cd2cbf03727195c0f40fcd07f6f96404717a0182ab04aa
Turnip-v27.0.0-20261115-r3-8G2-OneUI.zip 33b0e09c17e7ab7ae5f197c53e5d8ba3a40b58a986d1ce3d301419d04a900c53
Turnip-v27.0.0-20261115-r3-8G2-OneUI-Wayland.zip 55aebe84cdda0aef8bb4bbf480874f9a7fda6d00593396e3da11e9d0f8ee8b8d
Turnip-v27.0.0-20261115-r3-8G2-OneUI-Linux.zip bd8a7ab4f1137d00f345fd3c3436fd4c6edf587692d0a785b7983e40f25c3493
Turnip-v27.0.0-20261115-r3-Banners-AIO.zip 76d676f47efa45c1a78c86c1dc83ba750b040442263ebd9221598865aa75392a
Turnip-v27.0.0-20261115-r3-Banners-AIO-Wayland.zip 6eae17ab8b441b283189e5ed07e6d83015c6af3ebb50f6b7b5cee35044cd715c
Turnip-v27.0.0-20261115-r3-Banners-AIO-Linux.zip 39f43e43143e4abf35ab5f19f5ed91c2912f244f77db8b0b192b2b632eea1895

Names files

symbols-<build ID>.tsv.gz: function names and Mesa source lines of the Android drivers above, for the source-code view in DriverLab. Not needed to use the drivers.

Don't miss a new Banners-Turnip release

NewReleases is sending notifications on new releases.