Skip to content

X360 Mobile 0.6.2

Choose a tag to compare

@Ashnar2602 Ashnar2602 released this 16 Aug 18:51
· 5 commits to main since this release

X360 Mobile 0.6.2

X360 Mobile 0.6.2 is a public performance, graphics-policy and runtime
resilience update for Android. It concentrates on reducing recurring CPU and
driver work without weakening emulation accuracy, while exposing carefully
gated alternatives for titles and devices that need a different Vulkan path.

Performance and frame pacing

  • Reworked Android VBlank scheduling around absolute guest-clock deadlines.
    Long stalls now rebase pacing instead of producing a burst of catch-up
    callbacks, and overlays follow the guest display cadence.
  • Reduced repeated Vulkan work when complete descriptor, sampler, texture or
    pipeline input state is unchanged. Resource generations and layouts remain
    part of the validity checks, so changed resources still take the established
    update path.
  • Reduced compatible pipeline permutations through capability-gated dynamic
    state. The subset that caused visual regressions during device testing was
    excluded from the release path.
  • Added direct Vulkan command recording for fully resolved commands. Pending
    or replay-dependent work automatically retains the established deferred
    route, preserving ordering and compatibility.
  • Reduced synchronization polling, guest-to-host register traffic, transient
    upload pressure and per-draw statistics publication. Required counters and
    full compatibility fallbacks remain available.
  • Release-native code now uses the supported optimization and ThinLTO path.
    Global loop unrolling remains disabled, and no unrepresentative PGO profile
    is shipped.

The measured improvement is workload-dependent. Testing found small gains,
most visible in lighter scenes; this release does not claim a universal FPS
percentage.

Android performance policy

  • android_adpf=true|false controls Android Performance Hint sessions.
    true is the default: supported devices receive foreground-only workload
    hints and low-frequency thermal-headroom sampling; unsupported devices use
    neutral fallback behavior. Use false only to isolate an OEM scheduling
    issue or perform a temperature-controlled comparison.
  • A sustained 22-minute Forza Horizon 2 run with android_adpf=true completed
    on Odin3 without ANR, device loss, KGSL fault or zero-FPS sample. This proves
    stability for that run, not a universal performance or thermal improvement.
  • Reproducible PGO tooling is included for future representative workloads,
    but the public APK remains untrained until a sufficiently broad corpus is
    available.

Vulkan rendering and resolve controls

The following settings are available globally and per game. Per-game values
take effect after restarting the title.

  • readback_resolve=fast|some|full|uma|none: fast remains the general
    default; some may reuse cached results; full waits for the current GPU
    result; uma reads completed results from safely mapped unified memory;
    none disables readback and may break titles that require it. Unsupported
    or unsafe UMA cases fall back to fast rather than losing readback.
  • vulkan_rendering_path=auto|sysmem|gmem: auto leaves path selection to
    the driver; sysmem requests system-memory rendering; gmem requests the
    tiled on-chip route. Keep auto unless a verified title/device profile says
    otherwise. GTA IV has a recommended sysmem profile based on device tests.
  • vulkan_direct_host_resolve=true|false: when true (default), eligible
    host render targets resolve directly into shared memory. Ineligible work
    automatically uses the established intermediate path.
  • vulkan_transfer_in_draw_pass=true|false: true (default) places eligible
    ownership transfers in the following guest draw pass; unsupported cases
    fall back. Use false only to isolate transfer-ordering behavior.
  • vulkan_direct_command_recording=true|false: true is the Android default
    and avoids an intermediate CPU stream for fully resolved commands. Work that
    requires deferred metadata automatically stays deferred.

Alan Wake now has a signed required profile selecting
readback_resolve=uma on builds that contain the safe UMA implementation.
Testing on Adreno 830 confirmed correct gameplay where disabling required
readback produced unusable black output.

Experimental graphics alternatives

These options default to false and should be enabled per title only:

  • vulkan_expand_point_sprites_in_vertex_shader=false|true expands point
    sprites without a geometry shader. It may reduce driver overhead when the
    title uses point sprites heavily. The tested Forza Horizon 2 scene remained
    stable, but showed no visible performance improvement.
  • vulkan_convert_quad_lists_to_triangle_lists=false|true converts quad lists
    to indexed triangles on the CPU. It avoids a geometry-shader route, but the
    chosen diagonal may become visible on unusual geometry. The tested scene was
    stable without a measurable benefit.
  • vulkan_in_pass_resolve=false|true enables a strictly gated local-read
    resolve experiment. Rejected work always falls back, but device testing
    exposed temporary multicolour corruption during transitions and occasional
    minimap corruption. It therefore remains disabled by default and is not a
    recommended gameplay setting.

Custom Turnip packages also expose device-gated policies:

  • android_vulkan_push_constants_policy=auto|per_stage|shared: auto
    applies the alternate layout only when KGSL identifies the exact supported
    Adreno model. Manual values are intended for controlled comparisons.
  • android_vulkan_ubwc_flag_hint=auto|enabled|disabled: auto preserves the
    driver default; explicit values are honored only on the exact supported GPU
    model and ignored elsewhere.

These policies never modify the Android system driver and are excluded from
remote recommendations when their correct value depends on local hardware.

Library, touch and interface

  • Initial library population is now non-blocking. Existing titles appear
    without waiting for every remote metadata provider; priority work is
    bounded, duplicated requests are removed and a failing host is isolated for
    the remainder of the batch.
  • Added an optional resolution-independent native touch mode. The free left
    area acts as a floating movement stick and the free right area as a relative
    camera surface, while visible buttons and the D-pad retain input priority.
    Held input is released when dialogs, editors or lifecycle transitions take
    control. The mode is disabled by default.
  • Improved controller focus in native audio controls and preserved touch
    operation.
  • Consecutive games no longer share stale FPS samples in their session
    summaries.

Audio and guest-runtime resilience

  • Prevented adaptive audio recovery from repeatedly alternating silence and
    short playback bursts. Healthy sessions retain the low-latency path, while
    another refill is armed only after a complete interval of stable output.
  • Preserved XMA frames that continue across alternating guest buffers, with
    bounded parsing and clean reset when a decoder context is reused.
  • Reduced avoidable parsing and allocation work in common profile,
    filesystem and presence-format paths without changing accepted formats.
  • Corrected a mixed-thread timestamp update edge case while preserving guest
    address validation.

Updates and player communication

  • The updater now understands Alpha, Preview, Release Candidate and Public
    channels, plus Hotfix, Revision and Repack maintenance releases.
  • Added safe policies for staged rollouts, source-version targeting, blocked
    builds and mandatory or security updates. versionCode remains the
    authoritative ordering mechanism.
  • Added a signed in-app broadcast channel with localized one-time messages,
    version targeting, expiry, allowlisted actions and optional anonymous
    aggregate acknowledgements under the existing statistics consent.
  • Update and broadcast dialogs retain visible actions while their content
    scrolls by touch, D-pad, controller or keyboard across phone, tablet,
    handheld and ultrawide layouts.

Package and validation

  • Package: emu.x360mobile.com.
  • Version: 0.6.2 (versionCode 6029000).
  • Public artifact: x360-mobile-0.6.2.apk.
  • Channel: Public; the GitHub release is not marked as a prerelease.
  • The Release APK uses stripped ARM64 native libraries, the established X360
    Mobile signing identity and APK Signature Scheme v3 with a local v4
    sidecar. Managed-code shrinking remains disabled because native callbacks
    depend on exact JVM contracts; Release packaging tests protect those names.

Known limitations

  • Online compatibility-report submission remains temporarily disabled while
    the service is redesigned. Local reports and the read-only catalog remain
    available.
  • vulkan_in_pass_resolve is experimental and must remain disabled for normal
    use until its transition-ordering defect is resolved.
  • Device-specific Turnip policies require their corresponding physical GPUs;
    safe fallback behavior does not prove a performance benefit on untested
    hardware.
  • Compatibility and performance remain dependent on the title, device,
    firmware and Vulkan driver.

X360 Mobile is experimental software. It is not affiliated with Microsoft or
Xbox, does not support piracy and must be used only with games and content the
user legally owns.