Skip to content

BytArch GTA-V for Android 0.1.8-patch (Adreno black screen fix)

Choose a tag to compare

@bytarch bytarch released this 20 Oct 19:00

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 with Copy 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

  1. Sideload this APK over the old one.
  2. Play with both diagnostics off, in the same game mode and with the same
    graphics settings as before.
  3. 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.
  4. 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 a game/ subfolder.
  • Import game ZIP - pick a .zip of 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.