mirror of
https://github.com/Droid-Deck/Drivers.git
synced 2026-11-07 10:45:57 -10:00
-
DD-Turnip v0.4.0 Stable
released this
2026-11-06 17:09:47 -10:00 | 0 commits to main since this release📅 Originally published on GitHub: Mon, 02 Nov 2026 16:39:03 GMT
🏷️ Git tag created: Mon, 02 Nov 2026 16:30:45 GMTMesa: 27.0.0-devel @
b1a8996cb336f8398b06583c399fae821523152d
Recipe:c437d89116
Previous release: DD-Turnip-v0.3.5Turnip (Mesa freedreno Vulkan) for DroidDeck, built from the latest Mesa main with the patch set below.
DD-Turnip-v0.4.0.zipholds both drivers:Path Driver android/Android, bionic, Adrenotools meta.jsonlinux/Linux ARM64, glibc, Wayland/X11 WSI manifest.jsonBoth drivers with their path, libc and SHA-256 Performance tuning: KGSL
PWR_MAXis requested at queue creation and every 1000 submissions.Mesa upstream changes since DD-Turnip-v0.3.5
fd8ef2befa→b1a8996cb3: 83 upstream commits (compare).Turnip, Vulkan runtime and gralloc (5)
- tu/kgsl: Force 8-channel macrotile mode on A635 (
31f1ceddff) - meson: refactor out with_platform_display (
95e4f13066) - freedreno: Fix the A722 CCU count (
8c589b897b) - tu: use VK_USE_PLATFORM_ANDROID_KHR when applicable (
bf187f7617) - freedreno/a3xx: deal with VS which does not write position. (
3d167c0824)
Patches applied
Patch Android Linux Change scripts/gralloc_ubwc_detect.py✓ Detect UBWC gralloc buffers without the legacy gmsm header newer Qualcomm gralloc no longer writes scripts/fix_a8xx_dev_info.py✓ ✓ Per-GPU disable_gmem property with a sysmem fallback for parts with broken GMEM scripts/apply_a8xx_gpus.py✓ ✓ A810 / A829 / A845 / A850 KGSL chip IDs, A810 / A829 disable_gmem, plus the A825 entry scripts/apply_a8xx_cat4_rpt.py✓ ✓ No category-4 repeat on A845 / A850, whose repeated SFU results otherwise turn DXVK and Unity 2D output grayscale (by misakayuuki) scripts/apply_a7xx_gen1_quirks.py✓ ✓ Disable early preamble and scalar predicates on A720 / A725 / A730 scripts/add_aimapper_gralloc.py✓ IMapper5 stable-C gralloc backend loaded as an SP-HAL (by Leb-Sun) scripts/add_ubwc_swapchain_usage.py✓ Request UBWC-compressed swapchain buffers through the AHB usage answer (by Leb-Sun) scripts/a8xx_resolve_cr_cntl.py✓ ✓ A8XX preamble sets RB_RESOLVE_CR_CNTL to 1 as the proprietary driver does (Vauzi-17/710) scripts/a8xx_sp_hysteresis.py✓ ✓ A8XX preamble sets the VS and PS shader-processor hysteresis the proprietary driver uses (Vauzi-17/710) scripts/a8xx_lrz_color_mask.py✓ ✓ A8XX blend state emits GRAS_LRZ_COLOR_COMP_MASK from the per-MRT write masks (Vauzi-17/710) scripts/autotune_bandwidth.py✓ ✓ GMEM autotuner bandwidth multiplier 11 -> 10 scripts/perf_pwr_max.py✓ ✓ KGSL PWR_MAX constraint at queue creation, refreshed every 1000 submissions scripts/android_ndk_compat.py✓ Android stub and warning adjustments for the NDK clang cross build scripts/linux_kgsl_wsi.py✓ KGSL dma-buf feedback device numbers and calibrated timestamp / present timing gating scripts/process_heap_usage.py✓ ✓ Memory budget reports the process-wide heap usage, so a D3D12 game reading it through DXVK's DXGI sees vkd3d-proton's allocations linux/0001-tu-mesh-shader-emulation.patch✓ VK_EXT_mesh_shader emulated with compute linux/0002-ir3-half-wave-subgroups.patch✓ Required subgroup size of half a wave on A8XX linux/0003-ir3-a8xx-cube-direction-sanitize.patch✓ Sanitize cube map sampling directions on A8XX linux/0004-tu-a8xx-bindless-invalidate.patch✓ Invalidate bindless descriptors through the A8XX registers linux/0005-tu-kgsl-a8xx-ib-virtual-alias.patch✓ Fetch A8XX command streams through a KGSL virtual BO alias lrz/0001-tu-a8xx-lrz-reset-cntl-after-flush.patch✓ ✓ Reset the LRZ controls after the end-of-pass LRZ flush on A8XX, as freedreno does, so a large fast-cleared LRZ buffer no longer hangs the GPU nir/0001-nir-lower-explicit-io-keep-32bit-offset-wrap.patch✓ ✓ Keep the 32-bit wrap of SSBO byte offsets when NIR pre-shifts array strides, so vkd3d-proton's UE5 Nanite hardware-raster cluster stores are no longer dropped (by K11MCH1) fdl/0001-fdl-a8xx-buffer-num-elements.patch✓ ✓ A8XX buffer descriptors use the 32-bit NUM_ELEMENTS field, so SSBOs of 1 GiB or more keep their size (by airidosas252) tu/0001-tu-flush-before-suspended-render-pass-chain.patch✓ ✓ Emit the pending cache flushes where a suspended dynamic render pass chain starts, so indirect draws in vkd3d-proton render passes split across command buffers no longer read their arguments before the compute pass writes them (UE5 Nanite and virtual shadow maps, by K11MCH1) All upstream Mesa commits in this release
- brw: Pass brw_compile_params down to variant compilation (
b1a8996cb3) - jay: Fail if scratch size after RA is too large (
bd6c797a78) - jay: Propagate shader compilation errors (
afd171b3af) - jay: restrict accumulator modifiers before Gfx12.5 (
0d9fa477fc) - jay: restrict accumulator combinations before Gfx12.5 (
ed2380c4df) - jay: restrict accumulator source positions before Gfx12.5 (
acb4c6e490) - jay: limit accumulator allocation before Gfx12.5 (
19de429b4e) - jay: Lower ALU to scalar before filling out prog_data (
338d256ce5) - jay: Use Xe2 immediate offset bits for spills and fills (
a059b9c6b9) - jay: Encode the mlen and ex_mlen portions of descriptors post-RA (
e26048e267) - jay: Add a variant of jay_shrink_sources for ISA sources only (
9554393bed) - jay: move lowering call out of nested if statement (
95da818109) - gen: Add helper for encoding bindless ex_desc immediates (
88f6a3e395) - jay: fix uniform stores in divergent frag shaders (
1505a4cb51) - util: Add more ways to delete from dynarray (
77a21c6c47) - asahi: Use util_dynarray_grow_zero(..) (
242e12cde6) - agx: Use util_dynarray_grow_zero(..) (
187234e6ee) - jay: Use util_dynarray_grow_zero(..) (
9de592ce73) - panfrost: Use util_dynarray_grow_zero(..) (
31445bc5bf) - pan/compiler: Use util_dynarray_grow_zero(..) (
4b78730ae4) - util/dynarray: Add util_dynarray_grow_zero(..) (
e2c53b3e70) - va: Unmap coded buffer on encode failure (
f4871b8173) - radeonsi/mm: Disable unsupported EFC conversions on VCN5 with old FW (
37a0d07995) - radv/video: Use EFC range bug cap (
33624ee088) - ac/video: Add EFC range bug cap (
75aee05557) - panfrost: don't use helpers for memory barriers (
bf4721021e) - tu/kgsl: Force 8-channel macrotile mode on A635 (
31f1ceddff) - panvk: Add labels to internal driver BOs (
6919b99418) - zink/ci: mark one test as a regression on POLARIS10/NAVI10 (
4831fb8ef9) - pvr: Add support for linear transfer for ETC2 formats (
fa3dac634d) - pvr: Add support for VK_KHR_load_store_op_none (
c1ce62066d) - gfxstream: simplify guest Vulkan codegen and marshaling (
db08d77221) - kraid: Add Swizzle::bits_read (
b601413b38) - kraid/ra: Fix round robin search start going OOB (
e6679a066b) - kraid: Tightly pack FAU values (
2148f87d64) - kraid: FAU allocator (
c85eb8cec1) - panvk: add cs_wait_ls (
bd830ce2ee) - panvk: use SB_IMM_MASK for IMPLICIT_OTHERS_INV (
b2087eaf4e) - panvk: adjust iter sb count based on max sb (
2dd84a9f1e) - panvk: increase barrier sb mask size (
13835ddc20) - panvk/ci: remove bogus flake related to AS (
3e236e91ec) - meson: refactor out with_platform_display (
95e4f13066) - docs: add an LLM policy for RADV (
3865361d21) - radv: destroy the mesh scratch ring BO in case of failures (
03844bfdae) - radv: fix making GDS BOs non-resident in case of failures (
be571459e8) - ci: Build apitrace in a few build-only jobs (
ac271714ff) - meson: build the apitrace subproject for android (
a8e31d3fcd) - glapi: trace GLES and alias entry points with apitrace (
c00d3e606f) - glx,egl,wgl: trace the GLX, EGL, and WGL entry points with apitrace (
96690efd36) - mesa: trace GL calls with apitrace (
0cc70511d3) - mesa/st: split the EGLImage support checks out of st_get_egl_image (
dc8790e229) - mesa/st: split the external sampler lowering out of st_create_fp_variant (
f04610f05b) - mesa/st: split the YUV plane views out of st_get_sampler_views (
c0f4823cee) - mesa/st: split the per-unit part out of st_get_external_sampler_key (
ed77e36e6c) - mesa: mark textures with memory object storage (
99c0669b72) - mesa: free the trace dispatch table with the other tables (
9d943f38b9) - nv30/ci: add nv34 piglit results (
759dedd64b) - lavapipe: pack rendering_state dirty flags into bitfields (
1618a1ae4f) - llvmpipe: cache-line align lp_rasterizer_task (
fd95b1d6e0) - freedreno: Fix the A722 CCU count (
8c589b897b) - venus: terminate pNext properly in vn_fix_command_buffer_begin_info (
ae9e17fc68) - vulkan: native handle is tied to VK_USE_PLATFORM_ANDROID_KHR (
159aec41ca) - v3dv: use VK_USE_PLATFORM_ANDROID_KHR when applicable (
d60f9aca05) - radv: use VK_USE_PLATFORM_ANDROID_KHR when applicable (
53bdf0c671) - hasvk: use VK_USE_PLATFORM_ANDROID_KHR when applicable (
4666cf4fa3) - anv: use VK_USE_PLATFORM_ANDROID_KHR when applicable (
b11d50c553) - tu: use VK_USE_PLATFORM_ANDROID_KHR when applicable (
bf187f7617) - kk: query the OS page size for allocation alignment (
1558388535) - llvmpipe: hash cpu caps up to num_L3_caches, not 5 dwords (
01bab9302a) - nir: allow nir_cmat_tensor_load to be smaller than its const_index slots (
607364a028) - nir: don't hardcode dedup_entry size in static_assert (
4927b35fd5) - hk: Advertise VK_KHR_shader_constant_data (
00e37b614d) - nv30: invalidate currently bound sampler during clear (
1d4b5ef4a5) - nv30: Fixes for VS branching/looping (
3a36210e3d) - freedreno/a5xx: enable EXT_demote_to_helper_invocation (
cc5680bbcd) - docs/features: add GL_EXT_demote_to_helper_invocation (
af142ef6b6) - zink: enable subgroups even if shaderFloat64 is not exposed (
44989e5a48) - zink: cast last operands of SpvOpGroupNonUniformShuffle* ops to unsigned (
b26645ea8a) - nak: Always apply opt_fall_through (
cb0e78684a) - r300: remove backend deadcode pass (
b27d00d761) - zink: merge a flush's memory barriers into one call (
608a632176) - freedreno/a3xx: deal with VS which does not write position. (
3d167c0824) - jay: Mask shift counts to match NIR expectations (
3310e08ad1)
Downloads
- tu/kgsl: Force 8-channel macrotile mode on A635 (