Gallium Direct3D state tracker (gallium nine)

News

11/07/2022 beware that this documentation is for archive purpose mostly, see documentation on Mesa3D docs and Wine Nine Standalone

09/03/2019 new Intel cards are now supported by Gallium Nine read more

07/12/2016 Axel Davy presented improved internal multithreading for Nine! read more

05/04/2015 xf86-video-ati upstream now has full DRI3 and Present support! We recommend radeon users to use this.
01/02/2015 Talk at FOSDEM on Nine status slides

18/11/2014 Nine/st got into upstream Mesa-3D! I'd like to thank everyone for their hard work on coding, buildsystem, testing and helping new users! Thank you guys!

Project Information

Why exist Gallium Nine project? Because we want see happy Linux users which can enjoy games designed for Windows DX9 at full resolution and details getting maximum performance, which can hardware provide!

How we achieve this goal? By skipping all bottlenecks on way, not doing expensive rewrite native D3D9 calls into OpenGL (which classic wine does), but directly feeding your graphic card (GPU) with D3D9 calls without ugly conversion to OpenGL!

What can you get by installing Gallium Nine enabled Wine? The answer is simple - best performance (feel free to check youtube to watch our happy users gameplays).

We build our technology a top of the Gallium framework which is part of the Mesa-3D library. It allows us to expose Direct3D 9 support!

Faster than Windows?

Game Portal
cpu: Intel i5-3210M @ 2.50GHz; gpu: AMD HD 7730M
60 fps Ubuntu 14.10 - Native
63 fps Arch Linux* - wine
85 fps Windows 7
89 fps Arch Linux* - wine with Nine support
* Arch Linux with llvm SI scheduler + dma copy enabling patch

Generally also works better in CPU limited scenarios.

If you want to watch development and talk about Direct3D, join us on #d3d9 on freenode.net. Channel logs are available here.

The whole package needed to use native Direct3D 9 in wine consists of:

  • Mesa-3D library (d3dadapter)
  • Wine (d3d9.dll.so, gdi32.dll.so, user32.dll.so, wineps.drv.so, winex11.drv.so and winecfg.exe.so)

Usage

First, you need to allow native Direct3D 9 in wine!

  1. Run winecfg
  2. Select the Staging tab
  3. In the Staging Settings group select Enable Gallium Nine for better D3D9 performance

If the Staging tab or Staging Settings group is missing, you do not have the patched Wine!

Now you may want to try your favorite game!

If you want see CPU load and FPS, use Gallium HUD. It provides part of Fraps' functionality, known from Windows. (for 4 core configurations)

export GALLIUM_HUD="cpu0+cpu1+cpu2+cpu3;fps"

Installation troubleshooting

Try to run a simple DX9 application from terminal and check the logs. You should see something very similiar to this image below. If you see:

  • Native Direct3D 9 is active. (green), then everything should be fine,
  • Native Direct3D 9 is disabled. (orange), enabling D3D9 acceleration is described in Usage section
  • Native Direct3D 9 will be unavailable. (red) - read the error printed above this message. Probably your Mesa is miscompiled or different error occurred.
  • Wine source code has been compiled without native Direct3D 9 support. (red) means that you didn't have Mesa with Nine support at wine compilation time and you forgot to pass –enable-d3dadapter9 to the wine configuration (re-read Build section)

How can I help?

This project is completly open source and everyone can help at least a little. Currently, we looking for

  • Programmers with knowledge of:
  • Game testers with:
    • The ability to write detailed bug reports,
    • Common Linux knowledge, and
    • Basic debugging skills
  • Distribution packagers
  • Help desk / support who can:
    • Provide a friendly approach to helping newbies
    • Motivate newbies to participate

What we can offer?

  • A good feeling from improving code used by you and many others
  • Personal growth and improving your Linux knowledge
  • A friendly community (check out our IRC!)
  • Participating in interesting project
  • A good reference into your resume/CV