Gallium Nine Is Working On NIR Support So It Can Be Used With Intel Iris, Zink Vulkan
The work isn't complete, but there are patches pending that further along their goal of supporting NIR as an alternative to TGSI with this Gallium3D state tracker. So far they are testing Gallium Nine's NIR support with the NIR back-end option in RadeonSI, but by supporting NIR there are a few interesting scenarios:
- Their primary motivation in supporting NIR by Gallium Nine is for allowing this Direct3D 9 support for Wine-based gaming to work with Intel's in-development "Iris" Gallium3D driver. Iris is the future OpenGL driver for Intel Broadwell graphics hardware and newer. Iris is designed to use NIR rather than TGSI, so for Nine to work on it, this NIR support needs to be in place.
- An interesting possibility too in Gallium Nine supporting NIR is that it may eventually work with Zink, the months old effort for running OpenGL on top of Vulkan. But with Zink's approach leveraging Gallium3D and translating the Gallium3D calls from the Mesa OpenGL state tracker to Vulkan, it could be possible to change this upper-layer for Nine instead. In other words, the Direct3D 9 support with Gallium Nine in Gallium3D then running on top of Zink for using Vulkan drivers for rendering rather than the Gallium3D/OpenGL drivers.
- Nine might also work out then with other NIR-focused Gallium3D drivers like Freedreno and Broadcom VC4/V3D. Though the performance may be another story, at least this Direct3D 9 support might work on these other Gallium3D drivers.
Gallium Nine providing Direct3D 9 support for Wine/Windows games on Linux is beginning to work with Intel's new Iris driver.
As laid out via this bug tracker, at least initially the Gallium Nine plan is to make use of TGSI-to-NIR code paths in bringing up the initial NIR support. With the experimental code, some games work or at least somewhat while other games/demos have rendering problems and glitches. At least good progress is being made and it will certainly be interesting to track its progress.