Skip to content

Jade Empire: character models render as blown-out white under Vulkan, absent under OpenGL ES (Adreno 740) #41

Description

@mrballistic

Title

https://xemu.app/titles/4d53006d/#Jade-Empire

Jade Empire (USA, Europe) (En,Es,It) — NTSC, XISO (6.1 GB)

Bug Description

On Adreno 740, character models render into an offscreen target that composites as pure white under the Vulkan renderer. All 2D/UI elements (menu frames, text, background art) draw correctly. Under OpenGL ES, the white artifact is gone but character models do not render at all.

These look like the same code path failing in opposite directions: the renderer either never resolves that target (nothing appears) or resolves it saturated (appears, fully white).

Steps to reproduce:

  1. Launch Jade Empire, start a new game, reach Character Selection.
  2. The character preview panel is solid white; surrounding UI is correct. (Screenshot below.)
  3. Switch Graphics API to OpenGL ES and repeat: no white panel, but no character model either.

The same white-out is visible in gameplay, not just this menu; Character Selection is simply the clearest repro because a single character is composited against static UI.

Expected Behavior

Character models should render normally. Upstream desktop xemu rates this title Playable (minor issues)"some shadowing effects that are not quite correct" — with no missing geometry and no white-out, so the emulator core handles this game correctly. This appears specific to the Android renderer paths on Adreno.

xemu Version

X1 BOX 1.2.7 (versionCode 28), GitHub release build.

Last known-working version: unknown — 1.2.7 is the only version tested.

System Information

Device:     Retroid Pocket 6
OS:         Android 13 (API 33)
SoC:        Qualcomm QCS8550 (SM8550 / "kalama"), Snapdragon 8 Gen 2 class
GPU:        Adreno 740  (Vendor: 5143  Device: 43050a01)
GPU Driver: reproduced across 6 drivers - see matrix below

Additional Context

Renderer / driver matrix. Internal Resolution 1x (native), Shader Cache off, force_cpu_blit = false unless noted.

Renderer Vulkan driver Mesa base Library Characters White framebuffer
Vulkan Turnip Gen8 V36 26.3.0-devel libvulkan_freedreno.so yes yes
Vulkan Turnip v26.3.0-R5 26.3.0 libvulkan_freedreno.so yes yes
Vulkan Turnip v25.3.0-R6 (KIMCHI) 25.3.0 vulkan.ad07xx.so yes yes
Vulkan Turnip T30 (Mr_Purple) 26.3.0-T30 vulkan.purple.so yes yes (more pronounced)
Vulkan Qualcomm system driver 512.676.53 / VK 1.3.128 no
OpenGL ES system GL 0676.53 no no

Four independent Turnip builds spanning Mesa 25.3.0 → 26.3.0, from two different packagers, including both a7xx-targeted (vulkan.ad07xx.so) and a8xx-targeted builds, all behave identically. That makes a Mesa regression or a driver-generation mismatch unlikely.

Already ruled out:

  • force_cpu_blit = true — no change to the white framebuffer.
  • Shader cache — cleared and disabled; no change.
  • Per-game driver override — removed; all settings global.
  • Internal Resolution — left at native 1x for all of the above.
  • System Memory — the attached screenshot was captured at 64 MiB; some of the later driver comparisons were run at 128 MiB with no change in symptom, so it appears insensitive to this setting.

Log line for the Vulkan path:

I xemu-vulkan: GPU: Turnip Adreno (TM) 740 | Driver: turnip Mesa driver
   (Mesa 26.3.0-devel (git-c501e1d16e)) | Vendor: 5143 Device: 43050a01
   | API: 1.4.359 | DriverVer: 26.2.99

Note on a8xx driver packages: Qualcomm_840_adpkg.zip and similar declare minApi 35, so they cannot load on an API 33 device and were not testable here.

Screenshot of Character Selection under Vulkan + Turnip (white character panel, correct UI) to follow in a comment.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions