New Graphics API’s And The Future Of PC Gaming
Lets face it: DirectX 11 and OpenGL are getting a little old. DirectX 11 was introduced with Windows 7 back in 2009, and OpenGL 4.0 followed a year later. In software years these technologies are now ancient, and the current crop of hardware that they are running was not even on the drawing board when these graphics API’s were released. Given this obvious disconnect, what is the industry doing to get with the times? Well, in this article we’ll take a look at the near future and see, but to start let’s first explain what an API is and what function it serves for gaming.
What is an API?
An API or application programming interface is a set of protocols and tools used to build software. Graphics API’s are really just a specialized API built to make generating 3D graphics easier. Graphics API’s do make building 3D images easier, but they also allow you to tell the API to do something (e.g. draw a rectangle) and in turn let the API then communicate with the hardware on how to go about completing this task. This is the main reason why so many different GPU’s with specialized hardware can all run the same games. Without the existence of an API, the same game would have to be written in different ways to communicate with each specific set of hardware. This would severely limit hardware manufactures and would greatly increase the cost of building games, a cost that would ultimately be passed on to the end consumer.
To make the explanation above a little easier to understand I’ll use an analogy: Think of an API as a construction site manager. His or her job is to take the architect’s idea and break it down, schedule what crews need to be where and when, and ensure that everyone is on the same page on what needs to get done.
Currently Used Graphics API’s
Now that we understand a graphics API’s job, lets take a closer look at the current lineup. The major player in the market today is Microsoft’s DirectX, which was introduced all the way back in 1995. It has been updated several times since its release, and is included in Microsoft’s Windows operating system. DirectX is the one graphics API that pretty much every game released for PC will support. In fact, it is so common that it really is the standard for PC gaming today. DirectX is exclusive to Windows and Microsoft products which unfortunately makes it a very closed system. Next in line is OpenGL, the only major open source graphics API. OpenGL was released in 1992 and is multi-platform, meaning that it works with several operating systems including Windows, Linux, and Mac OS. Finally, we have the newest graphics API, Mantle. Mantle was developed in 2013 through a partnership between AMD and Dice. Mantle is available on Windows, and only for AMD GPU’s.
Figure 2: Comparing DirectX 12 vs. DirectX 11
Image Source; Images Credit: Intel
DirectX 12 is due to be released with Windows 10 this fall and many new improvements are being touted. One of the big improvements is much better multi-threading support. More of the work is spread over multiple cores on the CPU allowing for much better and more efficient CPU utilization. Many times DirectX 11 will have only one core of the CPU completely maxed out while other cores are sitting near idle. DirectX 12 promises to spread this workload over the CPU cores more evenly giving the games much more CPU power to work with. The next big improvement promised by DirectX 12 is the ability to handle many more draw calls. A draw call happens anytime the game engine wants to draw something on screen. The requirement of lots of draw calls is generally very taxing on the CPU. DirectX 12 is supposed to be able to handle up to 600,000 draw calls. To put this in perspective, DirectX 9 could only handle 6,000 draw calls or 1/100th of what DirectX 12 will be able to.
For years now running multiple GPU’s in SLI/Crossfire mode has been possible. However one of the big limitations was that the VRAM built into the cards did not stack together to make one large, continuous pool. For example, if you have two GPU’s each with 2GB of VRAM you still effectively only had 2GB of VRAM because each card had to have the same information stored in it. DirectX 12 hopes to solve this problem by using AFR or alternate frame rendering. Instead of each GPU rendering part of each frame, the GPU’s will now instead render one entire frame each. This will allow the VRAM on each card to be used independently, and hopefully allow cards with smaller amounts of VRAM to be viable for gaming for a good while longer. There are supposed to be many other new features included in DirectX 12 to push gaming graphics further than ever before. However, Microsoft is still being pretty hush hush about what these new features are. We will hopefully know more about them soon as the release of the API draws closer.
Figure 3: DirectX 12 API Overhead is reduced when using multi-core CPU’s.
Image Source; Image Credit: nVidia GeForce
There is not as much known about Vulkan as there is about DirectX 12, as it was just announced at GDC 2015. What we do know is that the makers of OpenGL, Khronos Group, dropped the name glNext in favor of Vulkan. Vulkan seems to be derived from Mantle, which I mentioned earlier in the article. Furthermore, it looks like AMD is bringing the best parts of Mantle to the table for Vulkan in a partnership with Khronos Group. Vulkan is supposed to have many of the same advantages of DirectX 12, but it is not tied to a single platform like Windows. It will instead be available on many different platforms, including Linux and even mobile devices. The Vulkan drivers for both Windows and Linux will be completely open source unlike DirectX. Vulkan will improve multi-threading, and therefore make much better use of the CPU power available today by spreading the workload across multiple CPU cores. As alluded previously, reducing the load on the CPU will allow GPU’s to not be bottlenecked as easily as they are now. This should provide a fairly substantial framerate boost during gaming. Source 2, which was recently announced by Valve, will be the first new game engine to fully support Vulkan, although I am sure many more will be announced in the near future. Dota 2, a game known for being CPU intensive, was shows running in Source 2 with the new Vulkan API using Intel’s integrated graphics on the CPU. This is something that would certainly not have been desirable under DirectX 11, but with Vulkan the game seemed to maintain a reasonable frame rate throughout. Dan Baker, who is a developer for Oxide games, even went as far to say that “until the GPU manufacturers get their act together and make GPUs ten times faster than we have now, we can’t max out the CPU”. This is good news for people running slower CPU’s or who have a lot of GPU horsepower currently because it will mean much better performance is attainable on the same set of hardware.
Figure 4: Diagram Showing the benefits of Vulkan (reduced bottleneck to GPU).
Image Source; Image Credit: Khronos
What does this mean for the future of gaming?
Well, for a good long while now GPU power has been increasing at a much faster rate than CPU power. Five years ago Intel even stated that some GPU’s were 14 times faster than their very own CPU’s. Those tests were done using a nVidia GTX 280 vs an i7 960 Intel CPU – now considered relatively outdated hardware. The gap between a nVidia GTX Titan X (or even a nVidia GTX 980) and the current mainstream CPU powerhouse – the Intel i7-4790k CPU – should be much bigger. The point I’m trying to make is that we are starting to see more and more games hit a wall in performance because of the CPU. Ask anyone with a high refresh rate monitor how hard it is to maintain 100+fps with current CPU’s in some games. Frankly speaking, it would only get more difficult without these new API’s, and their ability to utilize the CPU power more efficiently. The introduction of these new API’s could mean a huge step up in performance for most people. Furthermore, it would also allow developers to build much more CPU intensive games than we have now. For example, imagine a game like Assasins Creed having thousands of NPC’s on screen at one time, all interacting with each other and your character while you are roaming a city. Or games like Star Citizen, where you need a very very strong CPU to get any sort of stable and acceptable frame rate, might in the near future require an average CPU at best and a strong GPU to keep a nice solid 60fps.
Ultimately, this is a very exciting time to be a gamer. When these new graphics API’s are released we might just see the biggest jump in gaming technology in a long time. Let’s just hope that these API’s can live up to the hype they have already built up for themselves.