Repository navigation
malisx2 0.3.0
Vulkan driver for Android devices with an Arm Mali GPU, loaded by emulators that support custom GPU drivers: ARMSX2 (PlayStation 2), and now hakuX (Xbox).
Dolphin does not start on 0.3.0. It creates an occlusion query pool at startup, which this release does not support, so its video backend fails to initialize. Occlusion queries are coming in 0.3.1; Super Mario Sunshine runs at full speed on the Mali-G57 with them.
- Mali-G615 / G715 — tested on the Anbernic RG 477V.
- Mali-G57, G68, G77, G78, G78AE — tested on the Anbernic RG 476H. The other GPUs in this family are untested.
- Mali-G52 / G52 r1 — experimental: for trying out, not yet for everyday play.
Install: in the emulator's custom GPU driver setting, install from file and pick malisx2-0.3.0-c8d18effb1.zip.
- ARMSX2: Settings → custom GPU driver → install from file.
- Dolphin: Settings → Graphics → GPU Driver → Install driver.
- hakuX: Settings → GPU driver → Add a driver.
hakuX and Dolphin can only load a custom driver on Mali once these are merged (until then, use a build with them applied):
- hakuX: rfandango/hakuX#11
- Dolphin: dolphin-emu/dolphin#14958
What's new since 0.2.3
- malisx2 now also runs hakuX (Xbox) on the Mali-G57. The driver gained dynamic rendering (
VK_KHR_dynamic_rendering) and timeline semaphores (VK_KHR_timeline_semaphore), and the classic Vulkan render-pass API is checked on the device too. All three were tried on the Anbernic RG 476H (Dolphin's render passes included, but see above: Dolphin itself needs 0.3.1). ARMSX2 uses neither dynamic rendering nor timeline semaphores, and its render passes worked before. - BCn texture formats (BC1 to BC7, also called DXT) are no longer advertised. The G57 hardware lists them, but the driver has no working path for them, as is also the case with Arm's own driver. hakuX read the list, uploaded its DXT textures as BCn, and drew noise; now it decodes them itself and Ninja Gaiden renders correctly. ARMSX2 is not affected: it already treated the driver as having no BCn support.
- Multisampling is reported as 1x only. The driver never rendered multisampled images, but it listed 4x, 8x and 16x, so Dolphin offered anti-aliasing modes that were drawn at 1x anyway. Apps now see that there is no MSAA and stop offering those modes. ARMSX2 uses 1x only.
- Linux: page flips to the display now wait for the GPU (
VK_KHR_display, the path ARMSX2's SDL frontend uses on handhelds without a desktop). On kernels that cannot attach a GPU fence to a display buffer, such as Linux 5.10 on a Rockchip RK3562, the screen could flip to an image the GPU was still drawing and show a frame from three presents earlier; moving objects looked like they stepped backwards. After the change no flip showed an unfinished frame, at the same flip rate. Android and kernels with sync-file import on dma-bufs are not affected. This pack is the Android one, so this is only for people building malisx2 for Linux.
Good to know
- The version number is part of the driver's
driverInfo, so ARMSX2 throws away and rebuilds its pipeline cache once after this update. The first moments of the first game may be slower than usual. - MSAA is not implemented. Vulkan requires drivers to offer at least 4x multisampling; malisx2 reports 1x until it can render it. An app that assumes 4x exists may not start.
- Mali-G52 is experimental. Early tests are promising, but if a game misbehaves there, use the system driver.
- Mali-G57 family: if the driver does not start on your device, ARMSX2 uses the system driver; please send a log.
- A few HUD colours can come out slightly brighter than on a real PS2 (for example Gran Turismo 4's speedometer). Other drivers show the same.
- Reporting a problem: take a bug report or a logcat right after it happens, and keep ARMSX2's
logs/emulog.txt(it is overwritten when the app starts again).
Contributors
- @bmdhacks
- @TheGammaSqueeze: Mali-G52 support
Build
For support:
- malisx2
0.3.0, commit c8d18ef - Mesa: branch
malisx2of bmdhacks/armsx2-turnip, commit 2b9a7e936fd40969c650c26ed10f1a4078b8f246 malisx2-0.3.0-c8d18effb1.zipsha256e35b577f07ab4261ef7a08e17df2e1477910fed4e8e4b0e70268c57d0dde7c74libvulkan_malisx2.sosha2562cbd7bcbd16ad3313535943a9872beae41325c86b9b77b1c26d66d23d4210fe9