Repository navigation
Releases: zenithblue-oss/panvk-kbase-android
Release list
PanVK-kbase 0.1.0 RC3 lowmem: less memory for BC1 RGB and BC7
Screenshots
All screenshots below are from the RC3 lowmem binary (Android .so BuildID 9d975491) on a Poco X6 Pro (Mali-G615 MC6, v11).
| PanProbe 1.2.7 Run all: 38/38 | PanProbe 1.2.7 Driver tab: the bundled RC3 lowmem driver |
|---|---|
![]() |
![]() |
PanPlay: NFS Most Wanted (D3D9) title screen, DXVK HUD full, PanVK-kbase RC3-lowmem |
PanPlay: NFS Most Wanted intro video (D3D9, DXVK HUD full) |
|---|---|
![]() |
![]() |
PanVK-kbase 0.1.0 RC3 lowmem: less memory for BC1 RGB and BC7 textures
RC3 plus one patch. BC1 RGB and BC7 textures use less memory and look slightly worse. It is not
faster. Everything else is RC3.
Tag panvk-kbase-v0.1.0-rc3-lowmem. Mesa 5a07217f034b + the series up to csf-v11/185 and jm-v9/030
(173 patches). driverInfo reads PanVK-kbase RC3-lowmem.
What changed (csf-v11/185)
BC textures are decoded into an AFRC shadow image. RC3 stored BC1 RGB at 12 bpp and BC7 at 16 bpp.
This release stores both at 8 bpp. BC1 with alpha, BC2 and BC3 keep the RC3 rates.
Measured on a Poco X6 Pro (Mali-G615 MC6), 2048x2048 with a full mip chain:
| Format | Memory RC3 | Memory lowmem | Upload | Sampling time |
|---|---|---|---|---|
| BC1 RGB | 10.7 MiB | 8.0 MiB (-25%) | 1.43 to 1.42 ms | 0.131 ms, unchanged |
| BC7 | 16.0 MiB | 10.7 MiB (-33%) | 3.12 to 3.15 ms | 0.133 to 0.130 ms |
Quality on LOD 0 of a 1024x1024 game frame:
| Format | Against the exact decode (RC3 to lowmem) | Against the source image |
|---|---|---|
| BC1 RGB | 56.9 to 48.3 dB (max error 15 to 38) | 35.05 to 34.95 dB |
| BC7 | 63.9 to 48.1 dB (max error 5 to 40) | 39.82 to 39.32 dB |
So the error against the exact BC decode goes up by about 8-16 dB (still well under what the BC
compression itself loses), and the loss against the original image is 0.1-0.5 dB. On random blocks
the worst case is larger (BC7 up to 61 LSB, RC3 up to 13). BC7 with real alpha content at 8 bpp has
not been measured (the test frame was opaque).
If you prefer RC3 quality, set PANVK_BC_AFRC (it applies to all BC formats; the override cannot pick
a rate per format):
PANVK_BC_AFRC=0: exact decode (bigger, as before).PANVK_BC_AFRC=24or32: force that AFRC coding unit size. RC3 used 24 for BC1 and BC2 and 32 for
BC3 and BC7.
Test status
Only the Poco X6 Pro was retested for this release. Apart from csf-v11/185 and the version string, the
source is identical to RC3, but the other GPUs were not rerun.
| Device | GPU | Arch | PanProbe | Notes |
|---|---|---|---|---|
| Poco X6 Pro | Mali-G615 MC6 | v11 | 38/38 | PanProbe 1.2.7, bundled driver, BuildID verified in the installed APK |
bc_decodedevice checks (APK runner): same as RC3. WithPANVK_BC_AFRC=0the only mismatch is
BC6H_UFLOAT(max error 0.013, pre-existing since RC3). With the default and with
PANVK_BC_AFRC=24the lossy BC formats differ from the exact decode as expected (that comparison
uses a tolerance of 2).- NFS: Most Wanted (D3D9, i386, DXVK HUD full, 45 FPS limit set in the shortcut): title screen, menu and
intro video ran for several minutes at about 45 FPS with no visual artifacts, no GPU fault and no
DEVICE_LOST. I did not drive into a race, and the game uses few BC textures, so there is no
meaningful memory comparison from it. - Not run: G57, G610, G710, G715, Immortalis-G720, Immortalis-G925.
Known issues
Same as RC3, plus:
- More BC error: see the table above. Use
PANVK_BC_AFRCto restore higher quality. - v9 chunk caps, v9 viewport ordering, untested v9 GPUs, G720 MC8 flake, v14 untested: unchanged from
RC3. - The apps' update check reads this tag as
0.1.0-rc3(the-lowmemsuffix is ignored), so it will not
offer this release as an update to RC3 users. Install it from this page or use PanProbe 1.2.7.
Install
- Android (PanPlay, GameNative and other launchers): install the
.adpkg.zip, or use
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc / emulators: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe 1.2.7 bundles this
driver. PanPlay 1.2.7 still bundles RC3. - The
.sofiles are stripped. Check downloads againstSHA256SUMS.
| File | SHA-256 |
|---|---|
libvulkan_panfrost-android-aarch64.so |
f550a0066d7c3cd1afbb9be0f84d643f6dc2ccf73f8f369216217593f2a0a187 |
libvulkan_panfrost-glibc-aarch64.so |
96e925761ed23994f8e3ba9f72cbbcc988b69b4166947e58fea4f96b699604b0 |
PanVK-Kbase-Android-g615-v11-csf-v0.1.0-rc3-lowmem-5a07217f.adpkg.zip |
c671fb2c24fef8f262d8b31e730312d8fb8650fde94e2bb5701dc9b4844750fc |
PanVK-Kbase-g615-v11-csf-v0.1.0-rc3-lowmem-5a07217f-EMULATOR.zip |
3dbaed065a2fde317252108f4ef4d7ec6830f2a8fa58de783d83fd0b36dffc45 |
Android .so BuildID 9d9754918b27841731684efc33de82848215c665 (the exact binary tested on the
Poco, stripped); glibc .so BuildID ab8469376b0783ed109ffe770c398ad9f0d086bf (same series, not run
on a device).
PanVK-kbase 0.1.0 RC3 v9-v13
Screenshots
All screenshots below are from the RC3 binary (Android .so BuildID 4ec75e25).
| PanProbe 1.2.6 Run all on Lenovo Tab TB336FU (Mali-G57 MC2, v9): 38/38 | PanProbe 1.2.6 Info on the G57: Vulkan 1.3, PanVK-kbase RC3 |
|---|---|
![]() |
![]() |
| PanPlay D3D11 cube on the G57 (arm64ec, FL11_0, ~70 FPS, HUD full) | PanPlay NFS: Most Wanted (D3D9, i386) on the G57, ~18 FPS |
|---|---|
![]() |
![]() |
| PanProbe 1.2.6 Run all on Poco X6 Pro (Mali-G615 MC6, v11): 38/38 | PanPlay D3D11 cube on Galaxy Tab S10 Ultra (Immortalis-G720 MC12, v12, arm64ec, FL11_0, ~47 FPS) |
|---|---|
![]() |
![]() |
PanVK-kbase 0.1.0 RC3: Mali v9 to v13 supported
RC3 makes Mali v9 (Valhall JM: G57/G68/G77/G78 class) a supported arch next to v10-v13. The
Mali-G57 MC2 goes from 2/17 real PanProbe passes on RC2 to 38/38, runs the D3D8, D3D9, D3D10 and
D3D11 cubes and races in NFS: Most Wanted. Every other GPU we could reach also passes 38/38 with this
exact binary.
Tag panvk-kbase-v0.1.0-rc3. Mesa 5a07217f034b + the series up to csf-v11/184 and jm-v9/030
(172 patches). driverInfo reads PanVK-kbase RC3.
What's new since RC2
- v9 (jm-v9 003-030): Vulkan 1.3; multi-draw indirect and indirect count; transform feedback,
geometry shaders (with streams) and tessellation through the GPU prerast path; clip/cull
distances and vertex stores; multiViewport and viewport index; pipeline statistics and XFB
queries; depth bounds, per-sample shading and variable multisample rate; non-solid fill modes;
conditional rendering; robustImageAccess2, robustBufferAccess2 and null descriptors; GPU
timestamps; instance divisors with firstInstance; Mali-G78 and G78AE model rows. - kbase JM fixes: atom layout, fault propagation and teardown, incremental tiler heap commit,
clean non-coherent dma-buf imports, malloc vertex array reset on resubmit, CmdSetEvent on GPU
completion. - v10 robustImageAccess2 alpha fix (csf-v11/184): v10 returned the wrong alpha for out-of-bounds
storage image loads. The shader now fixes it up on the GPU (v10 only; v11+ is right natively).
Test status
PanProbe "Run all" (38 tests) with the RC3 binary, driverInfo PanVK-kbase RC3 (Mesa 26.3.0-devel)
on every device:
| Device | GPU | Arch | Where | PanProbe | Notes |
|---|---|---|---|---|---|
| Lenovo Tab TB336FU | Mali-G57 MC2 | v9 (JM) | own device | 38/38 | Also with PanProbe 1.2.6. D3D8/9/10/11 cubes ~70-76 FPS (FL11_0 used, FL11_1 max); NFS: Most Wanted ~18 FPS, GPU-bound, no faults |
| Poco X6 Pro | Mali-G615 MC6 | v11 | own device | 38/38 | Also with PanProbe 1.2.6 |
| Galaxy Tab S10 Ultra | Immortalis-G720 MC12 | v12 | Samsung Remote Test Lab | 38/38 | gs_viewport_depth 20/20; D3D11 cube FL11_0 ~47 FPS, no GPU fault or DEVICE_LOST |
| motorola edge 40 neo | Mali-G610 MC3 | v10 | Firebase Test Lab | 38/38 | |
| Pixel 7 | Mali-G710 MC7 | v10 | Firebase Test Lab | 38/38 | |
| Pixel 7a | Mali-G710 MC7 | v10 | Firebase Test Lab | 38/38 | |
| Pixel 8 | Mali-G715 MC7 | v11 | Firebase Test Lab | 38/38 | |
| Pixel 9 | Mali-G715 MC7 | v11 | Firebase Test Lab | 38/38 |
Not rerun on RC3: the Galaxy Tab S11 Ultra (Immortalis-G925 MC12, v13). It passed 37/37 on beta.18
RC1. RC3 changes for v13 are limited to the shared code above, but this binary has not run on a v13
device.
Known issues
- v9 chunk caps: gpu_prerast and tessellated draws on v9 are unrolled in a fixed number of chunks;
larger draws are cut short with a one-time logcat warning. - v9 viewport ordering: with multiViewport and different depth ranges per viewport, v9 draws once
per viewport, so primitives are reordered by viewport. - Other v9 GPUs (G68, G77, G78, G78AE) have model rows but are untested.
- Mali-G720 MC8:
gs_viewport_depthfailed now and then on beta.17 for one user; not tested since. - BCn is lossy by default: RGBA8 BC shadows use AFRC. Set
PANVK_BC_AFRC=0for exact output. - v14 (Mali G1 series) is built but not tested on hardware and not supported.
Call for testers
We especially need G77/G78 (v9), G720 MC8, Immortalis-G925 on RC3 and G1-Ultra (v14). Run PanProbe 1.2.6
"Run all" (it uploads the result automatically), and send PanPlay session log ZIPs to the
Telegram testers group or open an issue.
Install
- Android (PanPlay, GameNative and other launchers): install the
.adpkg.zip, or use
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc / emulators: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe 1.2.6 and
PanPlay 1.2.6 bundle this driver. - The
.sofiles are stripped. Check downloads againstSHA256SUMS.
| File | SHA-256 |
|---|---|
libvulkan_panfrost-android-aarch64.so |
b46b9f0416f207a05482349dffb37b6f3d84c20762151c623774831ce3939445 |
libvulkan_panfrost-glibc-aarch64.so |
43d4783f664f21843b2fb2d5a3fdf4646fadb942e42d320ccb0e7449bd8e352f |
PanVK-Kbase-Android-g615-v11-csf-v0.1.0-rc3-5a07217f.adpkg.zip |
4ef95dfd5118f1f7854de97ed342a551971c1e339bea3160566a5725a792c85f |
PanVK-Kbase-g615-v11-csf-v0.1.0-rc3-5a07217f-EMULATOR.zip |
a3846878e8f33dbcfbb5926d2a8763d07dcb10bd06adf53def5d603ecb16558a |
Android .so BuildID 4ec75e25deca57c27fb1e0872fdbf58473d41527 (the exact build tested on the devices
above, stripped); glibc .so BuildID 91af46055daaba4d593d4e2535b8baa67c317847 (built from a clean
worktree of the same series; not run on a device).
PanVK-kbase 0.1.0 RC2 V10-v13
Screenshots
These screenshots come from the RC1 builds (same driver code apart from the changes listed below).
The RC2 binary itself has not been run on a device yet, see "Test status".
| PanProbe on Poco X6 Pro (Mali-G615 MC6), RC1 build | PanPlay D3D11 cube on the Poco, RC1 build |
|---|---|
![]() |
![]() |
| Galaxy Tab S10 Ultra (Immortalis-G720 MC12), NFS: Most Wanted | Galaxy Tab S11 Ultra (Immortalis-G925 MC12), D3D11 cube |
|---|---|
![]() |
![]() |
PanVK-kbase 0.1.0 RC2: Mali v10–v13, robustImageAccess2, Mali-G77 detected
RC2 is a small step after beta.18 RC1. It adds robustImageAccess2 on v10 and later, and a
model row so Mali-G77 is recognised. The faster shader compiler, BCn rework and shader cache from RC1
are unchanged.
Tag panvk-kbase-v0.1.0-rc2. Mesa 5a07217f034b + the series up to csf-v11/181 and jm-v9/006.
Tag rename
The g615 prefix is dropped from tags: the driver supports Mali v10-v13, not only the G615. Versions
now continue as 0.1.0-rcN, then 0.1.0. PanProbe and PanPlay 1.2.5 and later see both the new
panvk-kbase-v tags and the old g615-v11-csf-v tags. The 1.2.4 apps only look for the old prefix,
so their update card will not show this release. Install it from the files below, or update the apps.
Asset file names still contain g615-v11-csf (the build profile name).
What's new since RC1
robustImageAccess2on v10 and later (csf-v11/181). On the Poco X6 Pro (G615): PanProbe 38/38
with the newrobust_image_access2test, Vulkan CTS robustness2 image tests 4332 passed / 0 failed,
andD3D12CreateDevicesucceeds in the vkd3d-proton check.- Mali-G77 model row (jm-v9/006). Mali-G77 (gpu_id
0x90800011) was reported by a tester but
missing from the table, so it was not recognised. The row uses variant 0, taken from the tester's
log. It is unproven on a G77: v9 is still experimental and partly broken. driverInforeadsPanVK-kbase beta.18-rc2.
Everything else is as in
RC1:
BCn textures about 2x faster and 38-65% smaller (AFRC is lossy, PANVK_BC_AFRC=0 for exact), shader
compiler about 10x faster on the worst NFS: Most Wanted pipelines, Mesa shader cache on by default on
Android, Mali-G710 model row, v13 fixes.
Test status
Be aware: the RC2 binary has not been tested on a device yet. It has been built and passed our
binary validation (validate-package.sh and validate-binary) only. The csf-v11/181 results above
were measured on the Poco X6 Pro with a build of the same patch. The test table in RC1 (G610, G710,
G615, G715, G720, G925 all 37/37) was run on RC1 and beta.18-dev builds, not on RC2. Please run
PanProbe 1.2.5 "Run all" on your device and report results.
Known issues
- Mali-G720 MC8:
gs_viewport_depthfailed now and then on beta.17 for one user. Not tested on
beta.18 or RC2. - BCn is lossy by default: RGBA8 BC shadows use AFRC. Set
PANVK_BC_AFRC=0for exact output. - v14 (Mali G1 series) is built but not tested on hardware and not supported.
- Mali v9 (G57/G68/G77/G78 class) stays experimental and partly broken. The new G77 row does
not change that.
Call for testers
We need more devices, especially G720 MC8, G1-Ultra (v14) and any v9 GPU. Run PanProbe 1.2.5 "Run
all" (it uploads the result automatically), and send PanPlay session log ZIPs to the
Telegram testers group or open an issue.
Install
- Android (PanPlay, GameNative and other launchers): install the
.adpkg.zip, or use
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc / emulators: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe 1.2.5 and PanPlay 1.2.5 bundle this driver.
- The
.sofiles are stripped. Check downloads againstSHA256SUMS.
| File | SHA-256 |
|---|---|
libvulkan_panfrost-android-aarch64.so |
725b13c74757446b4c4810b1c1aa60ef97c9690f73a89f10dc072f28b4f03a34 |
libvulkan_panfrost-glibc-aarch64.so |
0b8eaf709cd3559acec72b6fcf3acc24bcdb016bdc998adfedca6ff8eb60c820 |
PanVK-Kbase-Android-g615-v11-csf-v0.1.0-rc2-5a07217f.adpkg.zip |
cdfb3e348245253b7fbd0d7e20918928d094b715cde39193402b22cba45c060f |
PanVK-Kbase-g615-v11-csf-v0.1.0-rc2-5a07217f-EMULATOR.zip |
8411f5d043d3d0a5ea97a361cf864170f244d8e4fa929869ce2193d2152f0548 |
Android .so BuildID 2c4da3d9eb963be9f9bbc44e87edc906783c3425; glibc .so BuildID
2927d03bbd21c06a935a38463b1a7889dc26975b.
PanVK-kbase beta.18 RC1: Mali v10–v13, no shader-compile stutter, leaner BCn textures
Screenshots
| PanProbe 1.2.4 on Poco X6 Pro (Mali-G615 MC6), RC1 | PanPlay 1.2.4 D3D11 cube on the Poco, RC1 |
|---|---|
![]() |
![]() |
| Galaxy Tab S10 Ultra (Immortalis-G720 MC12), NFS: Most Wanted | Galaxy Tab S11 Ultra (Immortalis-G925 MC12), D3D11 cube |
|---|---|
![]() |
![]() |
PanVK-kbase beta.18 RC1: Mali v10–v13, no shader-compile stutter, leaner BCn textures
This is a release candidate for beta.18. It is the first release tested on Mali v10, v11, v12 and v13
hardware, not only on our Mali-G615 reference phone. Games that used to freeze for seconds while
shaders compiled now run smoothly once the shader cache is warm, and BC-compressed textures are faster
and use less memory.
Tag g615-v11-csf-v0.1.0-beta.18-rc1. Mesa 5a07217f034b + the series up to 180.
The G615 screenshots above were taken with the RC1 APKs. The other devices ran the
beta.18-dev+combined test build, which has the same code (its HUD reads PanVK-kbase beta.18).
PanProbe and cube screenshots for every device in the table below are attached as assets.
What's new
Faster and smaller BCn textures (150, 151, 180)
Mali GPUs have no BC texture formats, so PanVK has to emulate them. BC textures are now decoded by a
fragment pass into a compact, tiled AFBC or AFRC shadow image.
- Texture sampling that is limited by memory bandwidth is about 2x faster.
- The shadow images use 38-65% less memory.
- RGBA8 shadows use AFRC, which is lossy. If you see texture artefacts, set
PANVK_BC_AFRC=0to get
exact output.
No more shader-compile stutter (152-154, 160-164, 170, 171)
- Faster shader compiler. Register allocation in the Bifrost/Valhall compiler was rewritten in
several steps (152-154, 160-164). The compiled code is identical (checked on 67539 shaders); only
the time to compile it changed. The slowest Need for Speed: Most Wanted pipelines went from 3.6 s
to about 0.3 s each. - Shader cache on Android (170). The Mesa disk shader cache is now on by default on Android, so a
shader is compiled only once. PanPlay 1.2.4 gives each game a persistent cache folder and turns off
DXVK pipeline lifetime tracking (dxvk.trackPipelineLifetime = False). - Faster start-up (171). Each Android property option is looked up only once. In an NFS session
this went from 335 ms to 3 ms.
Need for Speed: Most Wanted on the Poco X6 Pro (G615), freezes longer than 250 ms in one session:
| before these fixes | beta.18, first run (cold cache) | beta.18, second run (warm cache) | |
|---|---|---|---|
| freezes > 250 ms / > 1 s | 6 / 4 | 3 / 1 | 2 / 0 |
| total freeze time / worst | 14.8 s / 4.5 s | 2.4 s / 1.06 s | 1.6 s / 0.99 s |
| shader compile on the DXVK thread | 11.9 s | 0.49 s | 0 (cache hits) |
The remaining warm-cache freezes are the loading screen and game code, not the driver compiling.
More GPUs
- Mali-G710 (v10) gets its model row (140). beta.17 did not recognise the G710 at all.
robustBufferAccess2on v10 (122), with texel buffer bounds checks for v9/v10.- v13 (Immortalis-G925): vertex stores run through gpu_prerast (130), and viewport runs wait for
the compute producer (132). PanProbe goes from 34/36 to 37/37. - GPU names by core count (131), for example
Mali-G720-Immortalis MC12. driverInforeadsPanVK-kbase beta.18-rc1 (Mesa 26.3.0-devel ...)in the DXVK HUD and PanProbe.
Tested devices
PanProbe 1.2.4 has 37 tests. "Cube" is the PanPlay D3D11 cube demo (DXVK).
| Device | GPU | Arch | How it was tested | Result |
|---|---|---|---|---|
| Poco X6 Pro (reference) | Mali-G615 MC6 | v11 | Own device, in depth: PanProbe, cube, NFS: Most Wanted with cold and warm shader cache, CTS subset | 37/37, cube 46 FPS, NFS smooth on a warm cache |
| Pixel 7 | Mali-G710 MC7 | v10 | Firebase Test Lab: PanProbe + cube smoke test | 37/37, cube OK |
| motorola edge 40 neo | Mali-G610 MC3 | v10 | Firebase Test Lab: PanProbe + cube smoke test | 37/37, cube 47 FPS |
| Pixel 8 | Mali-G715 MC7 | v11 | Firebase Test Lab: PanProbe + cube smoke test | 37/37, cube 48 FPS |
| Galaxy Tab S10 Ultra | Immortalis-G720 MC12 | v12 | Samsung Remote Test Lab: PanProbe + cube, plus NFS: Most Wanted | 37/37 (gs_viewport_depth 20/20), cube 48 FPS, NFS race 81.7 FPS |
| Galaxy Tab S11 Ultra | Immortalis-G925 MC12 | v13 | Samsung Remote Test Lab: PanProbe + cube smoke test | 37/37, cube 48.1 FPS |
Only the G615 is tested in depth. The other devices passed PanProbe and the cube demo, which is a
smoke test, not proof that games work. Mali-G615 results use the RC1 build; the other rows used the
beta.18-dev+combined build (BuildID 4eab4565), which has the same code.
Known issues
- Mali-G720 MC8: a user reported that
gs_viewport_depthfails now and then on beta.17. It has
not been tested on beta.18. - First-time shader compile: the first time a game reaches a new shader, it still takes about
0.3 s to compile. Later sessions load it from the cache. - BCn is lossy by default: RGBA8 BC shadows use AFRC. Set
PANVK_BC_AFRC=0for exact output. - v14 (Mali G1 series) is built but not tested on hardware and not supported.
- Galaxy Tab S10 Ultra: a second NFS: Most Wanted session in a row stuttered. We do not know why
yet. - Mali v9 (G57/G68/G77/G78 class) stays experimental and partly broken. Do not expect games to
run on v9.
Call for testers
We need more devices, especially G720 MC8, G1-Ultra (v14) and any v9 GPU. Run PanProbe 1.2.4 "Run
all" (it uploads the result automatically), and send PanPlay session log ZIPs to the
Telegram testers group or open an issue.
Install
- Android (PanPlay, GameNative and other launchers): install the
.adpkg.zip, or use
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc / emulators: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe 1.2.4 and PanPlay 1.2.4 bundle this driver. Their driver update card finds newer
releases. - The
.sofiles are stripped. Check downloads againstSHA256SUMS.
| File | SHA-256 |
|---|---|
libvulkan_panfrost-android-aarch64.so |
d000493e634541c043c5b6ca3849594cc84066748b95d62be1d99ec28db034c3 |
libvulkan_panfrost-glibc-aarch64.so |
4603b00f98e66f673b8c9695dda0ded826a3fad1b43d62c1ae3d5f81fe5d398e |
PanVK-Kbase-Android-g615-v11-csf-v0.1.0-beta.18-rc1-5a07217f.adpkg.zip |
50f1e096d9521c3c1c63ed8e8248dc6459e7fcb30b2fc2207c52dadf63e7ba9a |
PanVK-Kbase-g615-v11-csf-v0.1.0-beta.18-rc1-5a07217f-EMULATOR.zip |
5b7318f0835e048e599ac3672982cea184da2fe3848b7ce4ca7de680d891a973 |
Android .so BuildID f01a87a4f990064aa98dcc94efdbc7534e11a029; glibc .so BuildID
7708e2620e3fcd836ace91cdb7c902cc409c13a4.
PanVK Kbase g615-v11-csf-v0.1.0-beta.17
Screenshots
PanProbe 1.2.3 on Poco X6 Pro (Mali-G615 MC6) with this driver: 36/36
Need for Speed: Most Wanted in PanPlay 1.2.3, DXVK HUD full, HUD Version line shows PanVK-kbase beta.17
This NFS run is a different scene from the beta.16 race (car stopped), so it is not a speed comparison.
The same images are attached as assets.
PanVK Kbase g615-v11-csf-v0.1.0-beta.17 (prerelease, beta tier)
Mesa 5a07217f034b + the series up to 121. Tested on Poco X6 Pro, Mali-G615 MC6 (v11),
mali_kbase CSF UAPI 1.21. This is a correctness and reach release, not a performance release.
Changes since beta.16 (v11, tested on G615)
- GS draws with primitive restart no longer fault the GPU (120). The GS kernel walked back to its strip
start for every primitive (quadratic, ~2.5 s per chunk loop), and kbase killed the queue group
(CSG fault 0x41/0x72, thenVK_ERROR_DEVICE_LOST). A strip table is now built once per draw. - Zero depth-range viewports keep exact depth (121) (minDepth == maxDepth).
- Depth bounds (116): a pipeline with the dynamic test off keeps its early-ZS path; with
EarlyFragmentTests and the test on, the test reads the stored depth. - FS
gl_PrimitiveIDacross viewport runs (115). IDs wrap past 65535. variableMultisampleRatesecondaries (114): attachment-less secondaries split their command streams per sample count.- Prerast gaps (112): large fans are split, fan/tess instance grids capped, conditionally skipped chunks no longer count primitives.
vkSetEvent/vkResetEventnever returnVK_ERROR_DEVICE_LOST(111).- X11 software present over MIT-SHM (117):
AttachFdwith sealed memfd segments and FIFO pacing; falls back toPutImage.
Needs PanPlay 1.2.3 (its X server gains MIT-SHM 1.2). - More kbase and device decisions logged for tester uploads (118).
driverInforeadsPanVK-kbase beta.17 (Mesa 26.3.0-devel (git-eda9ac0c6f)).
Universal changes (built, NOT tested on that hardware)
- BC is emulated unless all ten BC formats are native (108): G610-class GPUs that report partial native BC.
- v12+ viewport depth runs;
depthBoundsandshaderOutputViewportIndexon v10+ (109): G720, G925. - kbase CSF uAPI layouts tried in version order, 16 KiB page support (110); EXEC_INIT before JIT and zones sized in kernel pages on JM (jm-v9/004, 005).
vertexPipelineStoresAndAtomicson by default on v10-v14 (119): DXVK FL11_1 on v13/v14.- Vendor-neutral gralloc mapper discovery, HIDL mapper4 backend, and a CPU linear probe for driver-owned swapchain buffers (android/014, wsi/017): aimed at stock ROMs where swapchain creation failed.
Validation
- PanProbe 1.2.3 (36 tests) on the Poco: 36/36, three runs (autorun x2 + zip run); DXVK, Bachata S4 and vkd3d compliance reports pass;
large_draw27/27; no CSF fault. - CTS (52725 cases): 32339 pass / 115 fail. The sync + memory gate is unchanged vs beta.16.
- Device validation log:
worklogs/g615-dxvk/beta17-device-validation.md.
Known issues
- 4 dEQP
inverted_depth_ranges.nodepthclamp_deltazerocases fail since 121. - The fixes for G610, G720, G925, G1-Ultra and stock ROMs are untested on hardware.
- One unexplained
VK_ERROR_DEVICE_LOSTin a Need for Speed: Most Wanted run (attempt 1); the next run was clean. Under investigation. - Mali v9 (G57/G68/G77/G78 class) is EXPERIMENTAL and partly broken. Do not expect games to run on v9.
- 16 KiB-page kernels: supported by 110 but untested.
Call for testers
Testers are needed for v9 (G68/G77/G78), v10 (G610/G710), v12 (G720), v13 (G925) and v14 (G1-Ultra): run PanProbe 1.2.3
"Run all" (auto-upload) and send PanPlay session log ZIPs to the Telegram testers group, or an issue.
Install
- Android: install the
.adpkg.zipthrough PanPlay (Drivers tab), or bundle
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc/EMULATOR: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe 1.2.3 and PanPlay 1.2.3 bundle this driver; their driver update card finds future releases.
- Verify downloads against
SHA256SUMS. Android.sosha256:
5d9fdb881a66ddcd62dc06d3f6d9fe9c89b6740aaa94e3d7181d1dabab8284f9(BuildID313addcb0b88110895cf59e29874f666887efe6c).
PanVK Kbase g615-v11-csf-v0.1.0-beta.16
Screenshots
Need for Speed: Most Wanted on Poco X6 Pro (Mali-G615 MC6), DXVK HUD full, same race point
| beta.15 (82.7 fps) | beta.16 (91.7 fps, HUD Version line shows PanVK-kbase beta.16) |
|---|---|
![]() |
![]() |
PanProbe on the Poco with this driver: 17/17
The same images are attached as assets.
PanVK Kbase g615-v11-csf-v0.1.0-beta.16 (prerelease, beta tier)
NFS: Most Wanted, beta.15 vs beta.16
The save used for beta.15 now finishes the prologue race, so both builds were measured in the same race
window (50-80 s after launch), run interleaved, 2 runs each. Every run proved its driver by the sha256 of
the installed .so, the game process memory map and the HUD driverInfo line.
| Build | DXVK HUD fps (4 samples x 2 runs) | mean | p99 frame time | peak GPU memory |
|---|---|---|---|---|
| beta.15 | 81.7 91.9 82.7 91.4 / 81.5 78.7 85.6 90.4 | 85.5 | 22 / 22 ms | 640 / 643 MB |
| beta.16 | 85.3 95.8 91.7 93.4 / 88.4 93.1 81.5 95.2 | 90.6 | 16 / 22 ms | 652 / 666 MB |
Driver-counted presents (instrumented builds): 88.7 -> ~92 fps.
Changes since beta.15 (v11 kbase path)
- Software WSI present no longer blocks the submit thread (106). Without dma-buf/DRI3 (the launcher's
X server),vkQueuePresentKHRwaited for the frame's GPU work before returning. DXVK presents from its
submit thread, so it was blocked 47% of the time and could not queue the next frame. The X11 present
thread now waits for the image fence; the submit thread is blocked 0.2% of the time. - Up to three retired tiler heaps in flight (107). With one retired heap, renewal often fell back to a
full graphics drain insidevkQueueSubmit(35-55 ms stalls). Submit-thread blocked time per run:
~345 ms -> ~100 ms. If backpressure is still reached, the wait is only for the oldest retired heap. driverInforeadsPanVK-kbase beta.16 (Mesa 26.3.0-devel (git-812243497a)).
GPU busy: which number to trust
- The MediaTek GED node (
/sys/kernel/ged/hal/gpu_utilization, ~96%) counts the time a command stream
group is resident, including time spent waiting. It does not mean the GPU is saturated. - The engine split in
/proc/mtk_mali/gpu_utilizationand the DXVK HUDGPU:line (57-66% in NFS) show
the real load. Per-ring-entry GPU timestamps show the GPU idle ~32% of the time, almost all with no work
submitted yet. - NFS is now limited by the game's main thread and wineserver round trips, not by the driver or the GPU.
Validation
- CTS (glibc build, same series): sync + memory gate set, 11331 cases: the same 56 failures as beta.15.
The wider 66,796-case sync/memory/query run shows 52 new and 26 fixed failures, allwrite_*_geometry_*
op tests; a rerun of those 78 fails 36 on beta.16 and 50 on beta.15 (flaky on both builds). - PanProbe on the Poco: 17/17 (Mesa debug env off).
- v9 tablet (Mali-G57 MC2): PanProbe 1/17, unchanged.
- Gate summary:
validation/driver-remaining/beta16-device/gate-summary.txt.
Known issues
- Fallout 4 (GOG GOTY, x86_64) hangs before it loads any graphics driver (same on beta.14/15).
Investigation continues; notes inworklogs/driver-remaining/fo4-hang-before-driver.md. - Mali v9 (G57/G68/G77/G78 class) is EXPERIMENTAL and partly broken, unchanged. Do not expect games to run on v9.
- v10/v12/v13/v14 are built but untested. Missing gpu_ids: G710/G510/G620/Immortalis-G720 (v10/v12), G625/Immortalis-G925 (v13).
- Old kbase may lack
GET_CPU_GPU_TIMEINFO(timestamps read 0). 16 KiB-page kernels are unsupported.
Call for testers
Testers are needed for v9 (G68/G77/G78), v10, v12, v13 and v14:
adb shell 'getprop ro.product.model; getprop ro.soc.model; cat /sys/class/misc/mali0/device/gpuinfo'
adb logcat -d | grep -E 'Unknown gpu_id|kbase: 'Send results and PanPlay session log ZIPs to the Telegram testers group, or an issue.
Install
- Android: install the
.adpkg.zipthrough PanPlay (Drivers tab), or bundle
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc/EMULATOR: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe/PanPlay are not rebuilt for this release; they still bundle beta.15.
- Verify downloads against
SHA256SUMS. Android.sosha256:
c0e54909059182938ed823df1640848ecd40d75f6885cdf3b9d04530dc93e60c.
PanVK Kbase g615-v11-csf-v0.1.0-beta.15
Screenshots
Need for Speed: Most Wanted on Poco X6 Pro (Mali-G615 MC6), DXVK HUD full, before and after
| beta.14 (24 fps) | beta.15 (40 fps, HUD Version line shows PanVK-kbase beta.15) |
|---|---|
![]() |
![]() |
The same images are attached as assets.
PanVK Kbase g615-v11-csf-v0.1.0-beta.15 (prerelease, beta tier)
NFS: Most Wanted, beta.14 vs beta.15
Gameplay window after the menus, SurfaceFlinger frame stats, 2 runs per build. Every run proved its driver
by sha256 of the installed .so, the game process memory map, and the HUD driverInfo line.
| Build | fps | p50 / p99 frame time | frames > 50 ms | frames > 100 ms | GPU busy / clock |
|---|---|---|---|---|---|
| beta.14 | 24.3 / 23.6 | 33 / 102 ms | 634 / 663 | 34 / 44 | 94% / ~840 MHz |
| beta.15 | 38.3 / 37.0 (40.1 on this exact .so) | 22-24 / 58 ms | 77 / 83 (84) | 1 / 1 (1) | ~96% / ~1310 MHz |
Changes since beta.14 (v11 kbase path)
- No CPU graphics drain on tiler heap renewal (102). Renewal waited for the vertex/tiler and fragment
subqueues on the CPU on almost every submit (~5700 times in 140 s, ~15 ms each). Two heap descriptor
slots now let in-flight work keep the retired heap. - Same-queue semaphores are waited for on the GPU (103). The CPU wait cost ~21 ms about once per frame.
PANVK_KBASE_GPU_SEMAPHORE_WAITS=0restores the old behaviour. - Next tiler heap created on a worker thread (104), removing ~7 ms heap creation from
vkQueueSubmit. PANVK_DEBUG=tracefixed on kbase: tracebuf at a kbase-assigned VA (101) and trace buffers reset
before each submit (105; before, one PanProbe test wrote a 700 MB trace log).driverInforeadsPanVK-kbase beta.15 (Mesa 26.3.0-devel (git-fb1eaadcce)).- Submission on kbase already returned right after the ring kick; NFS is now GPU-bound. More fps needs
GPU-side work, planned for beta.16. - Dropped: allocating the 160 MiB prerast arenas on first use. It saved ~480 MiB of GPU memory in NFS
(3 VkDevices) but cost ~3 fps in interleaved runs, so arenas are still committed up front.
Validation
- CTS (glibc build, same series): synchronization basic/smoke/timeline/implicit + memory, 11331 cases:
11257 pass / 56 fail / 18 not supported. All 56 also fail on beta.14 (geometry/tessellation paths). - PanProbe on the Poco: 17/17 with the Mesa debug env off; with
MESA_DEBUG=1 PANVK_DEBUG=traceevery test passes. - v9 tablet (Mali-G57 MC2): PanProbe 1/17, unchanged from beta.14.
Known issues
- Fallout 4 (GOG GOTY, x86_64) hangs before it loads any graphics driver: black screen, no DXVK log.
Same on beta.14, so it is outside the driver. Notes:worklogs/driver-remaining/fo4-hang-before-driver.md. - Mali v9 (G57/G68/G77/G78 class) is EXPERIMENTAL and partly broken, unchanged from beta.14. Do not expect games to run on v9.
- v10/v12/v13/v14 are built but untested. Missing gpu_ids: G710/G510/G620/Immortalis-G720 (v10/v12), G625/Immortalis-G925 (v13).
- Old kbase may lack
GET_CPU_GPU_TIMEINFO(timestamps read 0). 16 KiB-page kernels are unsupported.
Call for testers
Testers are needed for v9 (G68/G77/G78), v10, v12, v13 and v14:
adb shell 'getprop ro.product.model; getprop ro.soc.model; cat /sys/class/misc/mali0/device/gpuinfo'
adb logcat -d | grep -E 'Unknown gpu_id|kbase: 'Send results and PanPlay session log ZIPs to the Telegram testers group, or an issue.
Install
- Android: install the
.adpkg.zipthrough PanPlay (Drivers tab), or bundle
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc/EMULATOR: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - PanProbe/PanPlay are not rebuilt for this release; they still bundle beta.14.
- Verify downloads against
SHA256SUMS. Android.sosha256:
1a6fb5923b71a73b65b55516b37edefc792cf75018e51255dba88f61f1ddffe7.
PanVK Kbase g615-v11-csf-v0.1.0-beta.14 (experimental Mali v9)
Screenshots
v11 gate on beta.13 (Mali-G615 MC6, unchanged v11 path), and the honest v9 state on beta.14 (Mali-G57 MC2 tablet)
| PanProbe info (v11, beta.13) | PanProbe tests (v11, 17/17 pass, beta.13) | PanProbe tests on Mali-G57 v9, beta.14: 1/17 |
|---|---|---|
![]() |
![]() |
![]() |
Nothing visually renders on v9 yet, so no v9 render screenshot exists. The v11
images are reused from beta.13; the v11 path is unchanged. The same images are attached as assets.
PanVK Kbase g615-v11-csf-v0.1.0-beta.14 (prerelease, beta tier)
Mali v9 (G57/G68/G77/G78 class) support is EXPERIMENTAL and partly broken.
It is shipped as-is, at the maintainer's request, to get it into testers' hands.
Do not expect games to run on v9.
Changes since beta.13
- Experimental Mali v9 (Valhall 1st/2nd gen, Job Manager) in the universal ICD.
Thejm-v9series is now applied on top of the v11 series. It adds kbase JM
atom submission (001), a v9 Valhall JM PanVK backend ported from
FristOneRR-Panvk-Source (MIT) (002), and Vulkan 1.1 reporting on v9 (003).
The one.sonow holdslibpanvk_v9pluslibpanvk_v10tolibpanvk_v14. driverInforeadsPanVK-kbase beta.14 (Mesa 26.3.0-devel (git-fb1eaadcce)).- v10-v14 code paths are unchanged from beta.13.
v9 status (honest)
Tested on one device only: Lenovo TB336FU, Mali-G57 MC2, gpu_id 0x90930010, kbase JM.
- Vulkan CTS (bionic deqp-vk):
api.smoke4/6 (asm_triangle,
unused_resolve_attachmentfail on image compare);draw.renderpass.simple_draw4/4;
memory.mapping.suballocation.full102/102;synchronization.basic21 pass and 8 not supported. - PanProbe: 1/17 (only
vertex_stores). All others fail. - DXVK/Wine games are not working on v9: the launcher cube demo failed on the tablet (DXGI factory init failed; root cause not isolated).
Known gaps on v9:
- Fewer extensions and features than v10+. Reports Vulkan 1.1.
Missing: geometry shader, tessellation (stubbed),multiViewport,
fillModeNonSolid, shader clip/cull distance,pipelineStatisticsQuery,
VK_EXT_transform_feedback, depth bounds, BC texture decode emulation. - Swapchain AHB import fails (
vkCreateSwapchainKHRINVALID_EXTERNAL_HANDLE). gpu_prerast_slicedevice-lost on replay;vmr_secondarysample count wrong.- Timestamps read 0. No exclusive compute queue.
- JM has no command stream for indirect draws; not implemented.
Plan and phases are in worklogs/g615-dxvk/PROGRESS.md (item 12).
The Poco v11 retest has not been run for this release.
Which GPUs are recognised
- v11: Mali-G615 (tested on beta.13).
- v10 (G610, G310), v12 (G720), v13 (G725), v14 (G1 series): built, untested.
- v9 (G57 MC2 tested only; G68/G77/G78 untested): experimental, partly broken.
- Missing gpu_ids needed from testers: G710/G510/G620/Immortalis-G720 (v10/v12) and G625/Immortalis-G925 (v13).
Known issues
- v10/v12/v13/v14 are untested. v11 was tested on beta.13, not re-run for this build.
- Everything listed under v9 status.
- Old kbase may lack
GET_CPU_GPU_TIMEINFO, so timestamp queries read 0. - 4 KiB pages are assumed. 16 KiB-page kernels are unsupported.
- Queue submission on kbase is synchronous.
Call for testers
Testers are needed for v9 (G68/G77/G78), v10, v12, v13 and v14. Run, from a PC with USB debugging on:
adb shell 'getprop ro.product.model; getprop ro.soc.model; cat /sys/class/misc/mali0/device/gpuinfo'
adb logcat -d | grep -E 'Unknown gpu_id|kbase: 'Send results and PanPlay session log ZIPs to the
Telegram testers group, or an issue.
Install
- Android: install the
.adpkg.zipthrough PanPlay (Drivers tab), or bundle
libvulkan_panfrost-android-aarch64.sowithpanfrost_icd.aarch64.json. - glibc/EMULATOR: use the
-EMULATOR.ziporlibvulkan_panfrost-glibc-aarch64.so. - The PanProbe/PanPlay APKs are released separately; they bundle this driver in their own releases.
- Verify downloads against
SHA256SUMS. Android.sosha256:
8a2849f9b21a75ea0b241c6f02df74b165ccf645ed413a2ebfc7764f777377ed.
PanVK Kbase g615-v11-csf-v0.1.0-beta.13 (universal v10-v14, v11 tested)
Screenshots
v11 gate, beta.13 PanProbe APK (bundled driver), Mali-G615 MC6
| PanProbe info (driver PanVK-kbase beta.13) | PanProbe tests (17/17 pass) | gs_viewport_depth fixed |
|---|---|---|
![]() |
![]() |
![]() |
The same images are attached as assets.
PanVK Kbase g615-v11-csf-v0.1.0-beta.13 (prerelease, beta tier)
Universal v10-v14 build. Only v11 (Mali-G615) is tested. v10/v12/v13/v14 are built but UNTESTED. Testers needed.
Mesa 5a07217f034b + series up to 100 (patchSeriesId sha256:b85576a0bebec3b56c9de083a6afd2ff8c26feafece2a844079b7bca254e3d9c).
Tested only on Poco X6 Pro, Mali-G615 MC6 (v11), mali_kbase CSF UAPI 1.21. Android minApi 35.
Changes since beta.12
- Universal ICD for v10-v14. Both Android and glibc
.sofiles contain
libpanvk_v10throughlibpanvk_v14. The kbase device path now admits v14
withoutPAN_I_WANT_A_BROKEN_VULKAN_DRIVER(004). v13 was already admitted. - Release name in driverInfo (new 099). The full string is
PanVK-kbase beta.13 (Mesa 26.3.0-devel (git-5a07217f03)).
It is visible in the DXVK HUD Version line and PanProbe. - PanProbe GS regression fixed (new 100).
gs_viewport_depthcase A
failed since beta.11. All three cases passed on beta.9/beta.10.
On-device bisect: reverting 098 did not help; reverting 097 fixed it.
Dropping onlyPAN_KMOD_BO_FLAG_ALLOC_ON_FAULTfrom thegpu_prerast
arenas fixed it in 6/6 runs. GPU-fault growth on MediaTek kbase lost the
firstgpu_prerast(GS) draw's output; nothing was drawn.
Patch 100 commits the arenas up front on kbase. The shared-TLS fix from
097 stays. Arenas cost 160 MiB per VkDevice again. Upgrade path:
KBASE_IOCTL_MEM_COMMITon first use. - kbase CS work-register fallback. Implausible firmware values now fall
back to 128 on v12+, or 96 on v10/v11. 96 was too small for v12+ streams,
which use registers up to 123. G615 reports a plausible value; no warning.
Which GPUs are recognised
| Arch | Recognised by the Mesa model table | Needs your gpu_id |
|---|---|---|
| v10 | G610, G310 | G710, G510 |
| v11 | G615 (tested), G715 | — |
| v12 | G720 (variant 4) | G620, Immortalis-G720 |
| v13 | G725 (variant 4) | G625, Immortalis-G925 |
| v14 | G1-Ultra (14.8.0 v4), G1-Premium (14.8.1 v4), G1-Pro (14.8.3 v1/v4) | — |
Call for testers
Testers are needed for v10/v12/v13/v14. Open PanProbe (the panvk-test APK)
once first. Then run these commands from a PC with USB debugging on:
adb shell 'getprop ro.product.model; getprop ro.soc.model; cat /sys/class/misc/mali0/device/gpuinfo'
adb logcat -d | grep -E 'Unknown gpu_id|kbase: 'The gpuinfo line gives the GPU_ID. The Unknown gpu_id (...) or variant (...)
line gives the variant that the Mesa model table needs.
Send results and PanPlay session log ZIPs to the
Telegram testers group, or an issue.
Validation (G615 only)
- PanProbe: all 17/17 tests pass, three runs in a row.
gs_viewport_depth
A/B/C,vs_viewport_indexanddepth_boundspass. - PanProbe info: Mali-G615 MC6, Vulkan 1.4.363, driver
PanVK-kbase beta.13,
188 extensions, GPU id0xB8A31030(v11). - CTS
memory.mapping.*,memory.map_placed.*,synchronization{,2}.basic.*:
4520 pass / 0 fail / 13 NotSupported, same as beta.12. - CTS geometry + clipping + viewport subsets: geometry 195 pass / 0 fail / 4 NotSupported; pipeline and dynamic-state viewport cases 177 pass / 0 fail; clipping 180 pass / 128 fail; draw
shader_viewport_index328 pass / 60 fail / 6 NotSupported. All 188 failures (user clip/cull distances through GS or tessellation, andshader_viewport_index.fragment_shader_2..16) fail the same way on the beta.10 and beta.12 binaries, so they are old bugs, not regressions. - PanPlay game tests skipped this time. The user tests PanPlay.
Known issues
- v10/v12/v13/v14 are untested. We have no hardware for these arches.
- Old kbase may lack
GET_CPU_GPU_TIMEINFO, so timestamp queries read 0. - 4 KiB pages are assumed. 16 KiB-page kernels are unsupported.
- Firmware interface differences are not validated per arch.
- Queue-group create tries the 112-byte layout on uAPI >= 1.25, then the
1.6 32-byte layout. The 40-byte 1.18 layout is not tried. - Tiler heap init uses the legacy 16-byte layout, not the 24-byte layout.
- Queue submission on kbase is synchronous.
Install
Full instructions: docs/RUN-PC-GAMES-ON-MALI.md.
- Android: use
PanVK-Kbase-Android-g615-v11-csf-v0.1.0-beta.13-5a07217f.adpkg.zipwith apps that load drivers (minApi 35). - Linux/glibc (emulators, chroots): use
PanVK-Kbase-g615-v11-csf-v0.1.0-beta.13-5a07217f-EMULATOR.zip. - PanProbe:
panvk-test-g615-v11-csf-v0.1.0-beta.13.apkbundles this driver (stripped by the APK build). - Verify downloads with
SHA256SUMS.
Gate summary: validation/driver-remaining/beta13-device/gate-summary.txt.
PanVK Kbase universal v10/v11/v12 g615-v11-csf-v0.1.0-beta.12 (beta, v10/v12 untested)
Screenshots
v11 regression gate, beta.12 Android binary (byte-identical to the attached .so), Mali-G615, DXVK_HUD=full
| PanPlay i686 D3D9 cube | MiSide, x86_64 D3D11 (59.7 fps, menu) |
|---|---|
![]() |
![]() |
The same images are attached as assets.
PanVK Kbase g615-v11-csf-v0.1.0-beta.12 (prerelease, beta tier)
Universal v10 / v11 / v12 build. Only v11 (Mali-G615) is tested. v10 and v12 are built but UNTESTED: we have no v10 or v12 hardware. Testers needed.
Mesa 5a07217f034b + series up to 098 (patchSeriesId sha256:0dda167ab137168856d453724821eebc044213b57832c4cbc393cb9f2bf4e868), commit a795484. Tested on Poco X6 Pro, Mali-G615 MC6, mali_kbase CSF UAPI 1.21. Android minApi 35.
Changes since beta.11
- One universal Android ICD for v10, v11 and v12. The per-arch backends
libpanvk_v10,v11andv12are linked into the samelibvulkan_panfrost.so, and the kbase device path admits v10-v13. There is no G615-only gate. - kbase CS register count fallback. The firmware's CS work-register count is used only when it is 96 or 128; anything else falls back to 96 and logs
kbase: implausible CS work register count. A Pixel 7 (G710) is known to report a bad value. No change on G615 (no warning).
Which GPUs are recognised
| Arch | Recognised by the Mesa model table | Fails with Unknown gpu_id, needs your report |
|---|---|---|
| v10 | Mali-G610, G310 | G710 (Dimensity 9000, Tensor G2), G510 |
| v11 | G615 (tested), G715 | Immortalis-G715 if its variant differs |
| v12 | G720 (variant 4) | G620, Immortalis-G720 |
Immortalis-G925 is v13, not v12.
Call for testers
If you have a v10 or v12 Mali phone, open PanProbe (the panvk-test APK) once, then run this from a PC with USB debugging on and paste the output in an issue:
adb shell 'getprop ro.product.model; getprop ro.soc.model; cat /sys/class/misc/mali0/device/gpuinfo'
adb logcat -d | grep -E 'Unknown gpu_id|kbase: 'The gpuinfo line gives the GPU_ID. The Unknown gpu_id (...) or variant (...) line gives the variant that the model table needs.
Validation (G615 only)
- CTS (glibc chroot ICD from this tree):
dEQP-VK.memory.mapping.*,memory.map_placed.*andsynchronization{,2}.basic.*give 4520 pass / 0 fail / 13 NotSupported, same as beta.11. - PanPlay i686 D3D9 cube renders; MiSide reaches its menu at 59.7 fps and keeps loading.
- PanProbe autorun: 16/17 pass.
- Gate summary:
validation/driver-remaining/beta12-device/gate-summary.txt.
Known issues
- PanProbe
gs_viewport_depthcase A fails. The beta.11 binary fails the same way. - v10/v12: old kbase (CSF uAPI below about 1.13) may lack
GET_CPU_GPU_TIMEINFO, so timestamp queries read 0. 4 KiB pages are assumed. Firmware interface differences are not validated. - Queue submission on kbase is synchronous, so GPU clocks stay low (async submission is planned).
- Carried over: placed maps need
/dev/dma_heap/system;depthBounds(092) costs FPK on lowered pipelines; sync_file export (075) uses one device-wide KCPU queue;robustImageAccess2is missing; X11 present is a CPUPutImagecopy.
Install
Full instructions: docs/RUN-PC-GAMES-ON-MALI.md.
- Android: use the
.adpkg.zipwith apps that load drivers (minApi 35). - Linux/glibc (emulators, chroots): use the
-EMULATOR.zip. - PanProbe:
panvk-test-g615-v11-csf-v0.1.0-beta.12.apkbundles this driver (stripped by the APK build). - Verify downloads with
SHA256SUMS.






























