mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-23 07:19:50 +00:00
71b32a9f75
Credits: Axel Davy, lorn10, Pavel Ondračka Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4937 Acked-by: Filip Gawin <filip@gawin.net> Acked-by: Pavel Ondračka <pavel.ondracka@gmail.com> Signed-off-by: David Heidelberg <david.heidelberg@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17154>
49 lines
2.1 KiB
ReStructuredText
49 lines
2.1 KiB
ReStructuredText
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
|