Skip to content

malisx2 0.1.5

Pre-release
Pre-release

Choose a tag to compare

@bmdhacks bmdhacks released this 14 Oct 19:28

Vulkan driver for the ARMSX2 PlayStation 2 emulator on Android, for Arm Mali GPUs on the kbase kernel driver:

  • Mali Valhall arch v11: Mali-G615, G715 (tested on the Anbernic RG 477V, MediaTek MT6897).
  • Mali Valhall arch v9: Mali-G57, G68, G77, G78, G78AE (tested on the Mali-G57 MC4 in the Anbernic RG 476H, Unisoc T820). The other v9 GPUs share the G57's architecture but have not been tested on a device yet.

Install: in ARMSX2, Settings → custom GPU driver → install from file, and pick malisx2-0.1.5-090e0c43a1.zip.

What's new since 0.1.4

  • Faster texture uploads. Copying texture data from a buffer into an image now moves a 4x4 group of texels per GPU thread instead of one texel, for 1-, 2- and 4-byte texel formats. Games that stream many textures each frame gain the most. Measured with ARMSX2 on Baldur's Gate: Dark Alliance's water area, which uploads about 19 MB of textures a frame:
    • Mali-G57 (RG 476H): the GPU's upload work drops from 40.7 to 6.8 ms a frame, and the scene goes from about 16 to about 30 fps at 1x.
    • Mali-G615 (RG 477V): median frame time 16.8 → 13.1–13.6 ms.
    • Rendered frames are byte-identical to 0.1.4 on both GPUs, and a new on-device upload test passes on both.
  • Because the version is part of the driver's identity, ARMSX2 rebuilds its pipeline cache once on first start with 0.1.5.

Since 0.1.3

  • Android 15: Android 15's Vulkan loader asks the driver one extra question before it creates the screen's swapchain, and 0.1.3 answered it with an error. The swapchain was then never created: games ran, with sound, on a black screen. 0.1.4 answers it. Android 13, 14 and 16 behave as before.

Since 0.1.2

  • Swapchain buffers when a system setting can't be read: if the system does not let the driver read the graphics allocator's ro.vendor.arm.gralloc.no_afbc_usage_flags setting (a possibility on custom ROMs), the driver now asks for uncompressed screen buffers in a way any Arm allocator honours, instead of using a value that only fits MediaTek phones. Nothing changes on devices where the setting is readable, or on the G615.

Since 0.1.1

  • MediaTek job-manager phones (for example the Helio G99 / MT6789 with a Mali-G57 MC2, such as the Samsung Galaxy A16, confirmed working): MediaTek's kernel driver expects a longer job description than Arm's. 0.1.1 sent the shorter one there and stopped before the first frame. The driver now detects which kind of kernel it is on and uses the right one.
  • Diagnostics: if a wait for the GPU or for the display takes more than a second, or an Android sync file cannot be imported, the driver says so in the Android system log (logcat tag MESA), so a report with a logcat shows where it stopped.

Requirements and known limits

  • ARMSX2: use a current nightly; it enables in-tile framebuffer reads and push descriptors with this driver and lists it in the driver manager on Mali v9 and v11. ARMSX2 2.8.2 works too, but a few games (Shadow of the Colossus, Katamari Damacy) are slower than on Arm's driver at 2x upscaling there.
  • Kernel, v9 GPUs only: needs a Mali kernel driver at Arm's r40p0 or newer (kernel interface 11.36 or later). On older kernels, common on G77/G78 phones, the driver does not start and ARMSX2 falls back to the system driver.
  • Accuracy: with dual-source blending, ARMSX2 blends some draws into PS2 16-bit framebuffers in hardware, which skips the PS2's colour truncation. A few HUD elements (for example Gran Turismo 4's speedometer) come out a few levels brighter, as on other drivers with this feature.
  • Reporting a problem: right after it happens, take a bug report (Developer options → Take bug report) or a logcat, and copy ARMSX2's logs/emulog.txt before starting the app again (it is overwritten on each start).

Build

  • malisx2 0.1.5, commit 090e0c4
  • Mesa: branch malisx2 of bmdhacks/armsx2-turnip, commit 730a6284cb7a88f6c19a07f1caea35c7a2ae64f2
  • malisx2-0.1.5-090e0c43a1.zip sha256 a3061b5135ef7bbecbdfc25b0db0b8370da8259d53f9daf3b4df3c79437d5cd1
  • libvulkan_malisx2.so sha256 eb02e521ad580cc9860870c304b0f95220a320eaaea0228e994b4727d7374657