Repository navigation
MaliBridge v0.3
MaliBridge v0.3
Two compatibility fixes ported as ideas from Lee Gao's MIT layers, plus tools for the descriptor-batching bug.
- Null images get a stand-in of the right shape. A null image descriptor used to be replaced by one 2D RGBA8 image whatever the shader declared, which is undefined behaviour when the shader reads a cube, 3D, 1D, array, uint or sint image. The server now reads each pipeline's SPIR-V and picks a stand-in of the declared shape and numeric class (the idea comes from compat_layer).
VKBRIDGE_NULLDESC_2D=1brings back the old behaviour. - Copies from an uncompressed image into a BC image (
vkCmdCopyImage, D3D11CopyResourcebetween block-compatible formats) now go through the BC decode/transcode path, so the emulated texture gets the blocks (the idea comes from bcn_layer). Copies out of a BC image into an uncompressed one are still not supported. - Descriptor batching stays off by default: the Risk of Rain 2 black flicker has no root cause yet. Two new client knobs split batching into its halves for testing:
VKBRIDGE_DESC_BATCH=1plusVKBRIDGE_DESC_BATCH_NOPACK=1(framing only) orVKBRIDGE_DESC_BATCH_NOFRAME=1(packed updates only). New host reproducers:flicker_check,d3d11_flicker,nulldesc_check.
Checked on the Mali-G720: Subnautica loads a save and plays (29-32 fps in a base), Stray reaches its menu (27-33 fps), with clean server logs. Host suite 30/30. New README row: Doki Doki Literature Club (title screen 91-92 fps, clip attached).
The protocol hash is unchanged (4a9da939fdf65896), so v0.2 / v0.2.1 / v0.3 servers and clients work together, but take both from here.
Attached files
libvkbridge_server.so,libvkbridge_jni.so: server (Android arm64-v8a, API 26+)libvulkan_droidbridge.so,droidbridge_icd.json: client ICD (Linux glibc, aarch64)doki-doki-literature-club.mp4: title screen on the G720