Intel Iris Gallium3D Forming As Their Future OpenGL Driver, Promising Early Results
Longtime Intel Linux developer Kenneth Graunke just wrapped up his presentation on this new Iris Gallium3D driver. While the future is with Vulkan and they have a great open-source Vulkan driver in shape with "ANV" stack, they are still investing in OpenGL due to the many applications still relying upon OpenGL now and for the foreseeable future. (Of course, that could change as well somewhat if the also-new Zink Gallium3D that is mapping OpenGL on top of Vulkan -- one of several open-source projects aiming for some form of GL over this modern graphics API. But that work too is in a preliminary state.)
Ken has been working on the Iris driver for the better part of the past year and has been making a lot of progress granted the OpenGL functionality is still a ways from being at parity to the i965 classic driver and the hardware support has exclusively been focused on Intel Skylake graphics and newer.
Intel has been motivated to invest in this new Linux OpenGL driver as part of their effort to reduce the GL driver overhead -- a very popular theme over the past year. The success of Vulkan and its low-overhead design has motivated them to re-examine their OpenGL driver as well as new use-cases like virtual reality (VR). With current Intel integrated graphics hardware where the power envelope is shared with the CPU, lowering the CPU overhead can also potentially benefit the GPU performance in being able to consume a greater share of the power.
Years ago Intel developers had considered developing a Gallium3D based driver stack but it never ended up panning out due to all of the work involved in rewriting the driver, just as their LLVM back-end talk had been dropped over the years. But Gallium3D these days is quite mature and they can also now share their NIR compiler back-end between their legacy/Vulkan drivers and this new Gallium creation. Other items can also now be shared thanks to the ISL surface calculation code, BLORP library for blits/resolves, etc. Ken commented, "Gallium has gotten so much better [over the years]."
Besides cleaning up the driver architecture around state handling, improve memory management, and continuing to tack on new generations of hardware support, the current i965 driver is getting very complex in supporting from Gen 11 "Icelake" to Gen 4 graphics hardware. With Iris this will be a fresh start for newer Intel hardware generations. As stated, most of Ken's work so far has been for Skylake graphics hardware and newer and that does sound like it will be the bottom-end of the support spectrum. Iris is also designed to only work with newer kernels (Linux 4.16+).
While Mesa and Gallium3D has cross-platform elements, at this point it appears Intel's Iris OpenGL efforts are focused solely on Linux platform support and not replacing their proprietary Windows driver. The Iris Gallium3D driver is just supporting NIR and not the TGSI Gallium IR.
As far as the current state, Iris has a pass-rate of about 87% for the Piglit OpenGL tests and some real-world GL applications are working. The driver is far enough along though to verify that in the end the Iris driver should be faster with lower overhead than their i965 classic driver. In fact, the draw call overhead is about 5.4x faster with Iris! (Granted it's a very synthetic test case, it does show potential.)
The difference may also be even greater once Iris properly supports Gallium3D threading, etc.
While not all features are in place for Iris, in real-world tests on Apollolake, the performance improved generally up to 19% but for some workloads there was no performance difference.
Intel developers are now convinced by the current possibilities with Gallium. They will be looking at upstreaming Iris into the Mesa source tree in the future once the code is ready, etc. For now the Iris code is intended just for developers wishing to test or contribute and not for Linux gamers.
This Iris Gallium3D driver is particularly interesting with Intel planning to release a discrete GPU in 2020.