Technical Report: Implementation and Performance of DirectX 9 in ExaGear Emulators
Date: October 26, 2023
Subject: Analysis of Graphics Pipeline and DX9 Compatibility in ExaGear Windows Emulator
Hardware Requirements
CPU: ARMv8 (64-bit) or ARMv7 (32-bit). Snapdragon 660 or better is recommended. Snapdragon 888/8 Gen 1 is excellent.
RAM: 4GB minimum (6GB+ recommended for DX9 heavy titles like Oblivion).
GPU: Adreno 600 series or Mali-G72+. (Note: Xiaomi/OnePlus devices have better driver support than Exynos for ExaGear’s odd GL calls).
Part 5: Game Testing – What DX9 titles actually run?
Here is the brutal truth: You will not run Crysis at 60fps. But many DX9 games run shockingly well.
5. Recommended software stack and configuration (practical setup)
Assuming an ARM Linux host (e.g., Raspberry Pi 4/5 or other SBC) and intention to run an x86 DX9 game:
Host prerequisites
Up-to-date ARM Linux distribution; kernel with GPU driver support.
Hardware-accelerated OpenGL or Vulkan drivers installed and verified (glxinfo, vulkaninfo).
Adequate cooling/power for the device (games are CPU/GPU intensive).
ExaGear / x86 translation
Install ExaGear Desktop or a community x86 translation layer capable of running 32-bit x86 Windows executables.
Verify it can run simple x86 Linux ELF binaries and basic Windows programs under Wine.
Wine (x86)
Install a 32-bit Wine build inside the ExaGear environment.
Configure WinePREFIX as 32-bit (WINEARCH=win32).
Install necessary DirectX redistributables (d3dx9, DirectX runtimes) via winetricks (d3dx9_36 etc.) using the Wine x86 environment.
Direct3D translation layer
Use wined3d (default Wine): generally highest compatibility for DX9 but slower.
Optionally try D9VK or other DX9→Vulkan backends if available and buildable for your setup (requires working Vulkan).
If host supports Gallium Nine on Mesa and Wine patched to use nine, that can significantly improve performance for D3D9 (Direct D3D9-on-Gallium). However, Gallium Nine targets native x86 Linux with native D3D9 Linux drivers; integrating with ExaGear/Wine on ARM is complex and may not be available.
Graphics backend tuning
If OpenGL only: ensure Wine uses OpenGL backend and vendor-specific drivers are enabled.
If Vulkan available: test D9VK/d3d9-over-vulkan implementations to leverage Vulkan performance.
Adjust Wine’s Direct3D settings: Use winecfg to set Direct3D settings (Offscreen rendering mode, shaders compilation behavior).
Use lower resolution, turn off demanding post-processing, limit FPS.
Sound/Input
Configure PulseAudio/ALSA backends for Wine (winetricks sound=alsa/pulse).
Map game controllers via SDL or Linux joystick support; in Wine, enable joystick support and test mapping.
Testing and benchmarking
Start with simple DX9 test apps (e.g., DX9 samples, glxgears analogs ported) to validate pipeline.
Run the game with logging (WINEDEBUG) to capture D3D9-related warnings.
Measure FPS, CPU utilization, GPU utilization where possible.
4. Performance Metrics (Example – Need for Speed: Most Wanted 2005)
ExaGear Strategies (Snapdragon 865, Adreno 650):
15–25 FPS @ 800x480, low settings.
Graphical artifacts on car reflections.
Modded ExaGear + DXVK (Snapdragon 8 Gen 2):
30–40 FPS @ 1280x720, medium settings.
Requires custom WineD3D config & Box64 wrapper.
2. Technical Background
| Component | Description |
|-----------|-------------|
| ExaGear | Binary translator (x86 → ARM) + Wine integration |
| DirectX 9 | Graphics API (2002–2008 era) – includes D3D9, D3DX9, shader model 2.0/3.0 |
| WineD3D | Wine’s Direct3D → OpenGL translation layer used by ExaGear |
| Host GPU | ARM Mali, Adreno, PowerVR – typically OpenGL ES 3.x capable |
Is ExaGear Dead? The Future of DirectX 9 Mobile Emulation
The original ExaGear is dead. However, the technology is alive via Mobox (Termux-based) and Winlator (Standalone).
Native support for Turnip drivers (custom Adreno drivers for massive performance gains).
Container-based isolation (Android 11+).
If you search for "DirectX 9 ExaGear" in 2025, you should actually download Winlator.
Image
Technical Report: Implementation and Performance of DirectX 9 in ExaGear Emulators
Date: October 26, 2023
Subject: Analysis of Graphics Pipeline and DX9 Compatibility in ExaGear Windows Emulator
Hardware Requirements
CPU: ARMv8 (64-bit) or ARMv7 (32-bit). Snapdragon 660 or better is recommended. Snapdragon 888/8 Gen 1 is excellent.
RAM: 4GB minimum (6GB+ recommended for DX9 heavy titles like Oblivion).
GPU: Adreno 600 series or Mali-G72+. (Note: Xiaomi/OnePlus devices have better driver support than Exynos for ExaGear’s odd GL calls).
Part 5: Game Testing – What DX9 titles actually run?
Here is the brutal truth: You will not run Crysis at 60fps. But many DX9 games run shockingly well.
5. Recommended software stack and configuration (practical setup)
Assuming an ARM Linux host (e.g., Raspberry Pi 4/5 or other SBC) and intention to run an x86 DX9 game:
Host prerequisites
Up-to-date ARM Linux distribution; kernel with GPU driver support.
Hardware-accelerated OpenGL or Vulkan drivers installed and verified (glxinfo, vulkaninfo).
Adequate cooling/power for the device (games are CPU/GPU intensive).
ExaGear / x86 translation
Install ExaGear Desktop or a community x86 translation layer capable of running 32-bit x86 Windows executables.
Verify it can run simple x86 Linux ELF binaries and basic Windows programs under Wine.
Wine (x86)
Install a 32-bit Wine build inside the ExaGear environment.
Configure WinePREFIX as 32-bit (WINEARCH=win32).
Install necessary DirectX redistributables (d3dx9, DirectX runtimes) via winetricks (d3dx9_36 etc.) using the Wine x86 environment.
Direct3D translation layer
Use wined3d (default Wine): generally highest compatibility for DX9 but slower.
Optionally try D9VK or other DX9→Vulkan backends if available and buildable for your setup (requires working Vulkan).
If host supports Gallium Nine on Mesa and Wine patched to use nine, that can significantly improve performance for D3D9 (Direct D3D9-on-Gallium). However, Gallium Nine targets native x86 Linux with native D3D9 Linux drivers; integrating with ExaGear/Wine on ARM is complex and may not be available.
Graphics backend tuning
If OpenGL only: ensure Wine uses OpenGL backend and vendor-specific drivers are enabled.
If Vulkan available: test D9VK/d3d9-over-vulkan implementations to leverage Vulkan performance.
Adjust Wine’s Direct3D settings: Use winecfg to set Direct3D settings (Offscreen rendering mode, shaders compilation behavior).
Use lower resolution, turn off demanding post-processing, limit FPS.
Sound/Input
Configure PulseAudio/ALSA backends for Wine (winetricks sound=alsa/pulse).
Map game controllers via SDL or Linux joystick support; in Wine, enable joystick support and test mapping.
Testing and benchmarking
Start with simple DX9 test apps (e.g., DX9 samples, glxgears analogs ported) to validate pipeline.
Run the game with logging (WINEDEBUG) to capture D3D9-related warnings.
Measure FPS, CPU utilization, GPU utilization where possible.
4. Performance Metrics (Example – Need for Speed: Most Wanted 2005)
ExaGear Strategies (Snapdragon 865, Adreno 650):
15–25 FPS @ 800x480, low settings.
Graphical artifacts on car reflections.
Modded ExaGear + DXVK (Snapdragon 8 Gen 2):
30–40 FPS @ 1280x720, medium settings.
Requires custom WineD3D config & Box64 wrapper.
2. Technical Background
| Component | Description |
|-----------|-------------|
| ExaGear | Binary translator (x86 → ARM) + Wine integration |
| DirectX 9 | Graphics API (2002–2008 era) – includes D3D9, D3DX9, shader model 2.0/3.0 |
| WineD3D | Wine’s Direct3D → OpenGL translation layer used by ExaGear |
| Host GPU | ARM Mali, Adreno, PowerVR – typically OpenGL ES 3.x capable |
Is ExaGear Dead? The Future of DirectX 9 Mobile Emulation
The original ExaGear is dead. However, the technology is alive via Mobox (Termux-based) and Winlator (Standalone).
Why Winlator has replaced ExaGear for DX9:
Updates Wine to version 9.0.
Native support for Turnip drivers (custom Adreno drivers for massive performance gains).
Container-based isolation (Android 11+).
If you search for "DirectX 9 ExaGear" in 2025, you should actually download Winlator.