Skip to content

Performance direction for Proton/Wine 11 on Snapdragon-class handhelds (8GB RAM) and heavy games #3730

@Nycollas047

Description

@Nycollas047

Hi! First of all, thank you for all the work on Box64. It is an impressive project, and I really appreciate the effort that goes into keeping x86_64 software usable on ARM devices.

I wanted to share an idea with Proton/Wine 11 in mind, especially because Proton is based on Wine, and Wine 11.0 now includes major changes such as NTSYNC support and the completed new WoW64 architecture. I think this makes it a good moment to think about a performance-oriented path for heavy games on ARM handhelds.

This is especially relevant for Snapdragon 8 Gen 2-class handhelds with around 8GB of RAM, which are becoming more common in portable gaming devices.

For demanding games like Elden Ring — one of my favorites — the bottleneck is often not only compatibility itself, but the accumulated overhead from:

Proton/Wine translation layers
Box64 dynarec and wrappers
thread synchronization
memory pressure
per-session runtime overhead

Even small improvements in frametime stability and CPU overhead can make a big difference in the experience.

Goal

A performance-oriented direction for this class of devices, focusing on:

lowering hot-path overhead
improving thread handling and dynarec efficiency
reducing memory churn
keeping the graphics pipeline as lean as possible
preserving compatibility with Proton/Wine 11’s newer synchronization and WoW64 paths
Success metrics
better frametime consistency
less stutter
lower CPU saturation
improved playability in heavy titles
Possible technical directions
introduce lock-free or low-lock structures in dynarec
explore tiered JIT compilation for hot paths
add runtime profiling to identify frequently executed blocks
improve block linking to reduce dispatcher overhead
implement fast-path tables for frequent wrapper/syscall patterns
add awareness of DXVK usage patterns
explore HugePages for dynarec memory
introduce basic frametime instrumentation
Additional proposal: per-game runtime data system

To better understand performance in real-world workloads, especially through Proton/Wine, a lightweight per-game runtime system could help.

Possible approach:

create a per-game directory based on executable name, hash, or AppID
store session-based logs and lightweight metrics
save data automatically at the end of execution
keep it optional through an environment variable or debug flag

Possible data:

frametime statistics
dynarec cache behavior
CPU usage patterns
memory pressure indicators

The goal is not heavy logging, but structured and reusable data that helps:

identify bottlenecks
compare performance across versions
support future optimizations, including profile-guided improvements

This could be especially useful for constrained devices like 8GB RAM handhelds.

Thanks again for the amazing project, and sorry if this is not the perfect place for the suggestion. I just wanted to share this as someone who really likes Box64 and would love to see it continue improving.

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