Skip to content

Releases: zenithblue-oss/panvk-kbase-android

PanVK-kbase 0.1.0 RC3 lowmem: less memory for BC1 RGB and BC7

Choose a tag to compare

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
PanProbe 38/38 PanProbe Driver tab
PanPlay: NFS Most Wanted (D3D9) title screen, DXVK HUD full, PanVK-kbase RC3-lowmem PanPlay: NFS Most Wanted intro video (D3D9, DXVK HUD full)
NFS title NFS video

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=24 or 32: 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_decode device checks (APK runner): same as RC3. With PANVK_BC_AFRC=0 the only mismatch is
    BC6H_UFLOAT (max error 0.013, pre-existing since RC3). With the default and with
    PANVK_BC_AFRC=24 the 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_AFRC to 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 -lowmem suffix 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.so with panfrost_icd.aarch64.json.
  • glibc / emulators: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • PanProbe 1.2.7 bundles this
    driver. PanPlay 1.2.7 still bundles RC3.
  • The .so files are stripped. Check downloads against SHA256SUMS.
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

Pre-release

Choose a tag to compare

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
PanProbe on G57 PanProbe Info on G57
PanPlay D3D11 cube on the G57 (arm64ec, FL11_0, ~70 FPS, HUD full) PanPlay NFS: Most Wanted (D3D9, i386) on the G57, ~18 FPS
D3D11 cube on G57 NFS MW on G57
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)
PanProbe on G615 D3D11 cube on G720

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_depth failed 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=0 for 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.so with panfrost_icd.aarch64.json.
  • glibc / emulators: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • PanProbe 1.2.6 and
    PanPlay 1.2.6 bundle this driver.
  • The .so files are stripped. Check downloads against SHA256SUMS.
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

Pre-release

Choose a tag to compare

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
PanProbe on G615 D3D11 cube on G615
Galaxy Tab S10 Ultra (Immortalis-G720 MC12), NFS: Most Wanted Galaxy Tab S11 Ultra (Immortalis-G925 MC12), D3D11 cube
NFS MW on G720 D3D11 cube on G925

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

  • robustImageAccess2 on v10 and later (csf-v11/181). On the Poco X6 Pro (G615): PanProbe 38/38
    with the new robust_image_access2 test, Vulkan CTS robustness2 image tests 4332 passed / 0 failed,
    and D3D12CreateDevice succeeds 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.
  • driverInfo reads PanVK-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_depth failed 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=0 for 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.so with panfrost_icd.aarch64.json.
  • glibc / emulators: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • PanProbe 1.2.5 and PanPlay 1.2.5 bundle this driver.
  • The .so files are stripped. Check downloads against SHA256SUMS.
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

Choose a tag to compare

Screenshots

PanProbe 1.2.4 on Poco X6 Pro (Mali-G615 MC6), RC1 PanPlay 1.2.4 D3D11 cube on the Poco, RC1
PanProbe 37/37 on G615 D3D11 cube on G615
Galaxy Tab S10 Ultra (Immortalis-G720 MC12), NFS: Most Wanted Galaxy Tab S11 Ultra (Immortalis-G925 MC12), D3D11 cube
NFS MW on G720 D3D11 cube on G925

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=0 to 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.
  • robustBufferAccess2 on 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.
  • driverInfo reads PanVK-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_depth fails 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=0 for 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.so with panfrost_icd.aarch64.json.
  • glibc / emulators: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • PanProbe 1.2.4 and PanPlay 1.2.4 bundle this driver. Their driver update card finds newer
    releases.
  • The .so files are stripped. Check downloads against SHA256SUMS.
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

Pre-release

Choose a tag to compare

Screenshots

PanProbe 1.2.3 on Poco X6 Pro (Mali-G615 MC6) with this driver: 36/36

PanProbe 36/36 on beta.17

Need for Speed: Most Wanted in PanPlay 1.2.3, DXVK HUD full, HUD Version line shows PanVK-kbase beta.17

NFS MW on 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, then VK_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_PrimitiveID across viewport runs (115). IDs wrap past 65535.
  • variableMultisampleRate secondaries (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/vkResetEvent never return VK_ERROR_DEVICE_LOST (111).
  • X11 software present over MIT-SHM (117): AttachFd with sealed memfd segments and FIFO pacing; falls back to PutImage.
    Needs PanPlay 1.2.3 (its X server gains MIT-SHM 1.2).
  • More kbase and device decisions logged for tester uploads (118).
  • driverInfo reads PanVK-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; depthBounds and shaderOutputViewportIndex on 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).
  • vertexPipelineStoresAndAtomics on 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_draw 27/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_deltazero cases fail since 121.
  • The fixes for G610, G720, G925, G1-Ultra and stock ROMs are untested on hardware.
  • One unexplained VK_ERROR_DEVICE_LOST in 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.zip through PanPlay (Drivers tab), or bundle
    libvulkan_panfrost-android-aarch64.so with panfrost_icd.aarch64.json.
  • glibc/EMULATOR: use the -EMULATOR.zip or libvulkan_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 .so sha256:
    5d9fdb881a66ddcd62dc06d3f6d9fe9c89b6740aaa94e3d7181d1dabab8284f9 (BuildID 313addcb0b88110895cf59e29874f666887efe6c).

PanVK Kbase g615-v11-csf-v0.1.0-beta.16

Pre-release

Choose a tag to compare

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)
NFS MW on beta.15 NFS MW on beta.16

PanProbe on the Poco with this driver: 17/17

PanProbe on beta.16

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), vkQueuePresentKHR waited 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 inside vkQueueSubmit (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.
  • driverInfo reads PanVK-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_utilization and the DXVK HUD GPU: 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, all write_*_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 in worklogs/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.zip through PanPlay (Drivers tab), or bundle
    libvulkan_panfrost-android-aarch64.so with panfrost_icd.aarch64.json.
  • glibc/EMULATOR: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • PanProbe/PanPlay are not rebuilt for this release; they still bundle beta.15.
  • Verify downloads against SHA256SUMS. Android .so sha256:
    c0e54909059182938ed823df1640848ecd40d75f6885cdf3b9d04530dc93e60c.

PanVK Kbase g615-v11-csf-v0.1.0-beta.15

Pre-release

Choose a tag to compare

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)
NFS MW on beta.14 NFS MW on 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=0 restores the old behaviour.
  • Next tiler heap created on a worker thread (104), removing ~7 ms heap creation from vkQueueSubmit.
  • PANVK_DEBUG=trace fixed 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).
  • driverInfo reads PanVK-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=trace every 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.zip through PanPlay (Drivers tab), or bundle
    libvulkan_panfrost-android-aarch64.so with panfrost_icd.aarch64.json.
  • glibc/EMULATOR: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • PanProbe/PanPlay are not rebuilt for this release; they still bundle beta.14.
  • Verify downloads against SHA256SUMS. Android .so sha256:
    1a6fb5923b71a73b65b55516b37edefc792cf75018e51255dba88f61f1ddffe7.

PanVK Kbase g615-v11-csf-v0.1.0-beta.14 (experimental Mali v9)

Choose a tag to compare

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
PanProbe info on beta.13 PanProbe tests on beta.13 PanProbe tests on v9 tablet, beta.14

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.
    The jm-v9 series 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 .so now holds libpanvk_v9 plus libpanvk_v10 to libpanvk_v14.
  • driverInfo reads PanVK-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.smoke 4/6 (asm_triangle,
    unused_resolve_attachment fail on image compare); draw.renderpass.simple_draw 4/4;
    memory.mapping.suballocation.full 102/102; synchronization.basic 21 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 (vkCreateSwapchainKHR INVALID_EXTERNAL_HANDLE).
  • gpu_prerast_slice device-lost on replay; vmr_secondary sample 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.zip through PanPlay (Drivers tab), or bundle
    libvulkan_panfrost-android-aarch64.so with panfrost_icd.aarch64.json.
  • glibc/EMULATOR: use the -EMULATOR.zip or libvulkan_panfrost-glibc-aarch64.so.
  • The PanProbe/PanPlay APKs are released separately; they bundle this driver in their own releases.
  • Verify downloads against SHA256SUMS. Android .so sha256:
    8a2849f9b21a75ea0b241c6f02df74b165ccf645ed413a2ebfc7764f777377ed.

PanVK Kbase g615-v11-csf-v0.1.0-beta.13 (universal v10-v14, v11 tested)

Choose a tag to compare

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
PanProbe info on beta.13 PanProbe tests on beta.13 gs_viewport_depth PASS on beta.13

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 .so files contain
    libpanvk_v10 through libpanvk_v14. The kbase device path now admits v14
    without PAN_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_depth case 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 only PAN_KMOD_BO_FLAG_ALLOC_ON_FAULT from the gpu_prerast
    arenas fixed it in 6/6 runs. GPU-fault growth on MediaTek kbase lost the
    first gpu_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_COMMIT on 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_index and depth_bounds pass.
  • PanProbe info: Mali-G615 MC6, Vulkan 1.4.363, driver PanVK-kbase beta.13,
    188 extensions, GPU id 0xB8A31030 (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_index 328 pass / 60 fail / 6 NotSupported. All 188 failures (user clip/cull distances through GS or tessellation, and shader_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.zip with 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.apk bundles 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)

Choose a tag to compare

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)
i686 D3D9 cube on beta.12 MiSide on beta.12

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, v11 and v12 are linked into the same libvulkan_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.* and synchronization{,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_depth case 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; robustImageAccess2 is missing; X11 present is a CPU PutImage copy.

Install

Full instructions: docs/RUN-PC-GAMES-ON-MALI.md.

  • Android: use the .adpkg.zip with 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.apk bundles this driver (stripped by the APK build).
  • Verify downloads with SHA256SUMS.