Repository navigation
BytArch GTA-V for Android 0.1.8-patch (Adreno black screen fix)
BytArch GTA-V - the GTA V web port running natively on Android, ARM64 / Android 10+ / Vulkan.
BytArch-GTA-V-android-0.1.8-patch-debug.apk - debug build, sideload it over 0.1.7.
This is a patch release for the Wasmtime engine and for the Adreno black-screen
reports: #6 (POCO F8 Ultra), #7 (OnePlus 15R) and #8 (RedMagic 11 Pro).
What the patch changes
- Compressed textures are uploaded and copied in whole blocks. D3D reports the
logical mip size, so a 1x1 or 2x2 BC mip was copied as one texel while WebGPU
copies 4x4 blocks. Every BC mip upload failed withCopy width is not a multiple of block width/Copy height is not a multiple of block height.
That pair of errors is the first thing in the logs of all three reports. - The software clip-distance fallback no longer drops the fragment shader
body, and it now handles a fragment entry point without a return type. - A lost GPU device is reported instead of failing silently. The logs now
carry the GPU driver name, the pipeline that failed together with its colour
targets and depth format, and the device-loss reason. The renderer stops
submitting to a dead device and answers the engine's waits instead of failing
them, so the log no longer fills up with destroyed readback buffers. - Two diagnostics are in the launcher, under Graphics, for the Adreno
specific paths: Wasmtime diagnostic: decode BC textures on CPU and
Wasmtime diagnostic: software clip distances. Both are off by default; turn
them on one at a time.
What to test
- Sideload this APK over the old one.
- Play with both diagnostics off, in the same game mode and with the same
graphics settings as before. - If the world is still black, turn on decode BC textures on CPU, play, and
export the logs. Then turn it off, turn on software clip distances, play,
and export the logs again. - Send the logs back. They now name the driver, the failed pipeline and the
device-loss reason, so one log is enough to place the failure.
Getting game data in
The app ships no game content; you supply your own copy of the web port's data,
which must have this layout:
data/manifest.json
b/<build>/shaders/index.json
b/<build>/game.wasm (native wasm2c engine only)
Two ways to point the app at it:
- Use a game files folder - pick a folder that already holds
data/and
b/. Nothing is copied, so it works with no free space, and you can pick the
parent folder if the data sits in agame/subfolder. - Import game ZIP - pick a
.zipof the same tree; it is extracted into app
storage, which needs free space for both the archive and the extracted data.
Whichever you choose, the folder must be on internal storage (/sdcard/...).
If the launcher says the folder cannot be read, tap Grant file access and
allow "All files access".
Graphics
Every knob the web launcher exposes is in the launcher, under Graphics,
with the same names: texture, reflection, water, particle and grass quality,
scenery/pedestrian/vehicle detail, city density, variety, post FX, motion blur,
depth of field, shadow quality and softness, ambient occlusion, render distance,
fog, particle and long shadows, loading ahead, and distant lights. Low (phone
default) turns shadows off entirely and pulls the render distance in.
Multiplayer
Multiplayer uses the Grand-V relay - the same transport as the web version, so
you can share a room with browser players. You need a relay address
(ws://host:8012/relay), a room name and the access code from whoever is
hosting. Rooms hold two players and carry pose only: position, rotation and
model. Plain ws:// for now, no TLS.
Known limits
- ARM64 only, Vulkan required, Android 10+.
- First launch compiles the game and takes several minutes; early stutter is
mostly loading from storage. - Signed with a debug key. Fine for sideloading, not for any store.
- This patch covers the Wasmtime engine. The native wasm2c engine button still
boots and logs but does not render; use the wasmtime engine for gameplay.
Tested
Galaxy A34 5G (8 GB) with the Wasmtime engine.