Repository navigation
Releases: bmdhacks/armsx2-turnip
Release list
Custom Turnip driver for ARMSX2 (Adreno 6xx/7xx) axfl2-002
The custom Turnip Vulkan driver built for ARMSX2, for Adreno 6xx and 7xx GPUs. New in this release: on the Adreno 610 (Snapdragon 662), the driver now renders large render passes directly in memory by default instead of splitting them into tiles. On a Black (PS2) frame replay the GPU time per frame goes from 50.4 to 23.1 ms, and in the live game from 53.0 to 26.0 ms, with identical pixels. Every other Adreno part, including the 650 and all of 7xx, behaves as in axfl2-001.
Everything in axfl2-001 is still here, including the Adreno 7xx in-pass read fix. That 7xx speedup needs ARMSX2 master from commit 5a5c24bc46 on. Older ARMSX2 builds work with this driver, but on Adreno 7xx they run at their old speed.
The 610 timings were measured on a ROCKNIX Snapdragon 662 handheld. The Android pack is the same source and passed its load checks, but has not been run on an Android Adreno 610 device.
This one release carries both builds of the same source:
turnip-axfl2-002-android.zip: driver pack for the Android app (Android 10 and up).turnip-axfl2-002-aarch64.tar.gz: driver for ARM Linux (ROCKNIX), with Wayland presentation.
In ARMSX2 on Android: Settings → GPU driver → ARMSX2 · turnip → this row. The emulog's GS banner then reads Mesa 26.3.0-devel (git-axfl2-002).
On ROCKNIX: unpack to /storage/turnip/ (it must land at /storage/turnip/axfl2-002), then either run turnip/axfl2-002/run-with-turnip.sh, or point VK_DRIVER_FILES at freedreno_icd.aarch64.json. The banner then reads Mesa 26.3.0-devel (git-axfl2-002).
Technical details
| Source | armsx2/main at the tagged commit 4cb172e0 (axfl2-001 + one commit) |
| Driver reports | Mesa 26.3.0-devel (git-axfl2-002) |
| Adreno 610 default autotune algorithm | PREFER_SYSMEM (was BANDWIDTH); TU_AUTOTUNE_ALGO still overrides it |
Android libvulkan_freedreno.so sha256 |
69978b89d52e34148445bb307a8d85005c78ad50449fa3faf8de3788f8d5c318 |
ROCKNIX libvulkan_freedreno.so sha256 |
a6f7b6ee1a17d22fa53739b000a6838b45c4e21b4b570889cce270efedac6709 |
Not upstreamed, by design; see README.ARMSX2.md.
Superseded: ROCKNIX image build only (axfl1-011)
Superseded by axfl2-002 — use that one. This release stays only because the ROCKNIX image downloads its Linux tarball by URL; its Android pack has been removed so the app lists one driver.
The custom Turnip Vulkan driver built for ARMSX2, for Adreno 6xx and 7xx GPUs. It replaces axfl1-010 and wins back the time that release lost each time a game switches graphics pipelines, so games like Sly Cooper run as fast as they did on the older 26.1.2-based driver. Everything axfl1-010 brought stays: the newer Mesa, the stencil buffer on Adreno 6xx, and the fix for the games that used to hang.
This one release carries both builds of the same source:
turnip-axfl1-011-android.zip: driver pack for the Android app (Android 10 and up).turnip-axfl1-011-aarch64.tar.gz: driver for ARM Linux (ROCKNIX), with Wayland presentation.
In ARMSX2 on Android: Settings → GPU driver → ARMSX2 · turnip → this row. The emulog's GS banner then reads Mesa 26.3.0-devel (git-axfl1-011).
On ROCKNIX: unpack to /storage/turnip/ (it must land at /storage/turnip/axfl1-011), then either run turnip/axfl1-011/run-with-turnip.sh, or point VK_DRIVER_FILES at freedreno_icd.aarch64.json. The banner then reads Mesa 26.3.0-devel (git-axfl1-011).
Technical details
Measured on an Adreno 650 (Snapdragon 865), GS-thread CPU time per frame against axfl1-010: Sly 3 −2.0%, Sly 1 −1.6%, Shadow of the Colossus −1.2%, OutRun 2006 −0.8%, Call of Duty 2 −0.3%. Pictures are byte-identical to axfl1-010 on every dump we compared, at 1x and 2x, and a 2,733-case Vulkan conformance subset gives the same result case for case.
What changed: on every pipeline bind, Mesa copies the pipeline's dynamic state into the command buffer and compares each value to decide what to re-emit. Consecutive pipelines almost always share most of that state, so this build skips a group of states whenever its bytes already match. The result, including which states are marked for re-emission, is bit for bit the same as before.
| Source | armsx2/main at the tagged commit 11166800 (upstream Mesa e3a986f0167 + ARMSX2 commits) |
| Driver reports | Mesa 26.3.0-devel (git-axfl1-011) |
Android libvulkan_freedreno.so sha256 |
f486de3d6ca285e787823184cb1cf0c89b62255395a42e204ada616b538e1972 |
ROCKNIX libvulkan_freedreno.so sha256 |
802e46dba26ee3dc4ef2a89c8d6f504223afc7e5f01c2fe39fbe838061004a2a |
Not upstreamed, by design; see README.ARMSX2.md.