Feral and Vulkan: What to Expect Next
Following the release of Dawn of War III on Linux (see our review), and its related Vulkan renderer, Feral has reached another step in its usage of the new API, after its first successful Mad max experiment. Yet, as you may have noticed, Vulkan support is still marked as being experimental at release. In my own experience with nVidia, the game ran flawlessly and it may well be the case for you too. So, where are the limitations that prevent the current Vulkan renderer to be marked as stable?
Feral Interactive: Some users may have a flawless experience, but others - even using the same vendor - may see minor graphical issues or rare performance hotspots. Although we think that for the majority of users, the game will be stable and run well on Vulkan, we’re not quite able to offer full official support.
However, we will be able to extend official support in the future, once things stabilize. For example, we’re not yet ready to officially support the Mesa drivers, although it’s likely that we will be able to once Mesa 17.2 is released. It’s possible we’ll declare official Vulkan support around the same time, depending on user feedback.
It looks like Mesa is going to bring stable support for Vulkan across vendors much faster than what occurred with OpenGL in the past. Remember the days when AMD was always very late to the party to reach OpenGL 4.x support? This is very exciting, as this helps preventing the nVidia dominance on the gaming side for Linux users. Sure, there is still no denying that on the very high end, nVidia still has the upper hand, but for low to mid range configurations the choice becomes more and more real.
Last year when we interviewed Edwin, he mentioned that Feral was working on a Vulkan port for the first half of 2017. Many of us wondered what was going to be that game, back then. Actually, Mad Max was not given yet, there were several things going on…
Feral Interactive: At the time we said that, we had a number of potential candidates for the first Vulkan release, depending on Vulkan’s progress and our progress with the technology. As it turns out, Mad Max was our first Vulkan title (via a beta patch), and it’s followed by Dawn Of War 3, which is the first game launching with Vulkan. Depending on progress and user feedback, we’ll release a game that uses Vulkan by default in the near future.
Now that there are two games running with Vulkan backends (Mad Max and DoW3), the team at Feral has more material to judge how Vulkan fares vs openGL. They have recently presented more on that topic at a Vulkan related conference.
Feral Interactive: I’d recommend that people who are really interested in the technical side watch the presentation we did on Vulkan, as this covers the differences between OpenGL and Vulkan, and what we have learnt from working with them, in detail.
In general, getting DX11-based games working on Vulkan was more straightforward than we had expected. The drivers are in a very good state, considering that the API is in its early stages. Crashes in OpenGL drivers were a daily occurrence when we first started developing games for Linux, but even though there are a few issues (given how new the drivers are), Vulkan is more stable than OpenGL was at the same stage.
Finally, the documentation for Vulkan is really clear and concise. Vulkan is pretty complex when compared to OpenGL, but the documentation and spec design makes it much easier to find clear, relatively non-ambiguous answers than for OpenGL.
What piqued my curiosity the most in that video is when they mentioned that some of work done on a single game could be shared and reapplied on others. In case you wondered if that was the case with DoW3…
Feral Interactive: The YouTube video actually covers this in more detail than we can here, but a large amount of the technology we developed for Mad Max was used in Dawn of War III. We have a set of unified libraries that we use across games and platforms. It wouldn’t be viable to port games to Linux if every port was an entirely separate project.
But the collaboration runs deeper than you think. It’s not just about having one Vulkan game helping the next port to Vulkan, it even relates to other API like Metal (that Feral is currently using for their F1 2016 port - Mac only though!):
Feral Interactive: Yes. In fact, all the Vulkan work was built on the ground work we’d done to get our games running using Metal. Although the APIs do differ considerably, a lot of the core preparation required was similar. This is a big reason why Vulkan was quick to get working in Mad Max - we had already completed a fair amount of the prep work.
This sounds like Feral has built serious experience all around with Metal and Vulkan - experience that should carry its fruits towards the upcoming games they release. It’s still very early days for Vulkan, and apart from Feral there are not too many other developers using that API in actual game production yet (mostly Doom on Windows, and Talos Prophecy on Windows and Linux).
Hopefully their work can serve as a robust example of what Vulkan is capable of - beating OpenGL at its own game (for CPU-constrained cases) already less than 1 year after its release.