| Gallium Nine |
| ============ |
| |
| The Gallium frontend, which implements Direct3D 9. |
| |
| Nine implements the full IDirect3DDevice9 COM interface and a custom COM interface called ID3DAdapter9, which is used to implement the final IDirect3D9Ex COM interface. |
| ID3DAdapter9 is completely agnostic regarding the window system code, meaning this can be provided by wine, Xlib, Wayland, etc. |
| |
| Gallium Nine is commonly used in conjunction with `Wine <https://www.winehq.org/>`_. |
| `Gallium Nine Standalone <https://github.com/iXit/wine-nine-standalone>`_ is the standalone version of the Wine parts of Gallium Nine which makes it possible to use it with any stock Wine version. It's simple to install through `Winetricks <https://github.com/Winetricks/winetricks>`_ with ``winetricks galliumnine``. |
| Aside from Wine, Gallium Nine works well with `Box86 <https://ptitseb.github.io/box86/>`_. |
| Can be used via `Zink <https://www.supergoodcode.com/to-the-nines/>`_ even on the `Vulkan API <https://en.wikipedia.org/wiki/Vulkan>`_. |
| |
| In the majority of cases this implementation has better performance than Wine doing the translation from D3D9 to OpenGL itself. |
| |
| It's also possible to use D3D9 directly from the Linux environment. For tests, demos, and more details, you can see `this repository <https://github.com/iXit/nine-tests>`_. |
| |
| Build |
| ----- |
| |
| Beware: Most Direct3D games are 32-bit, and thus need a 32-bit version of Mesa. |
| |
| .. code-block:: console |
| |
| $ meson configure \ |
| -D gallium-nine=true \ |
| -D dri3=true \ |
| ... |
| |
| Paths |
| ----- |
| |
| You need to point wine-nine-standalone to the location of ``d3dadapter9.so``. |
| If you use distribution packaged Mesa, it should work out of the box. |
| |
| There are three options (sorted from permanent to temporary): |
| - compile Wine Nine Standalone with ``D3D9NINE_MODULEPATH`` pointing to your local library |
| - set ModulePath of Software\Wine\Direct3DNine in the wine registers |
| - ``$ D3D_MODULE_PATH="$MESA_INSTALLDIR/lib/d3d/d3dadapter9.so" wine ...`` |
| |
| Run |
| --- |
| |
| Before running your application in Wine, verify that everything works as expected by running: |
| |
| .. code-block:: console |
| |
| $ wine ninewinecfg |