1Gallium Nine 2============ 3 4The Gallium frontend, which implements Direct3D 9. 5 6Nine implements the full IDirect3DDevice9 COM interface and a custom COM interface called ID3DAdapter9, which is used to implement the final IDirect3D9Ex COM interface. 7ID3DAdapter9 is completely agnostic regarding the window system code, meaning this can be provided by wine, Xlib, Wayland, etc. 8 9Gallium Nine is commonly used in conjunction with `Wine <https://www.winehq.org/>`_. 10`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``. 11Aside from Wine, Gallium Nine works well with `Box86 <https://ptitseb.github.io/box86/>`_. 12Can be used via `Zink <https://www.supergoodcode.com/to-the-nines/>`_ even on the `Vulkan API <https://en.wikipedia.org/wiki/Vulkan>`_. 13 14In the majority of cases this implementation has better performance than Wine doing the translation from D3D9 to OpenGL itself. 15 16It'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>`_. 17 18Build 19----- 20 21Beware: Most Direct3D games are 32-bit, and thus need a 32-bit version of Mesa. 22 23.. code-block:: console 24 25 $ meson configure \ 26 -D gallium-nine=true \ 27 -D dri3=true \ 28 ... 29 30Paths 31----- 32 33You need to point wine-nine-standalone to the location of ``d3dadapter9.so``. 34If you use distribution packaged Mesa, it should work out of the box. 35 36There are three options (sorted from permanent to temporary): 37 - compile Wine Nine Standalone with ``D3D9NINE_MODULEPATH`` pointing to your local library 38 - set ModulePath of Software\Wine\Direct3DNine in the wine registers 39 - ``$ D3D_MODULE_PATH="$MESA_INSTALLDIR/lib/d3d/d3dadapter9.so" wine ...`` 40 41Run 42--- 43 44Before running your application in Wine, verify that everything works as expected by running: 45 46.. code-block:: console 47 48 $ wine ninewinecfg 49