A brief history of Graphics APIs

Graphics are changing, there is a fundamental shift in how we access the polygon pushing hardware There was a time when games used to talk directly to the hardware. The code needed to know the exact register to call for everything.

That was fine if we were writing for a closed platform such as the old gaming devices like Atari but this turned out to be useless on the endless hardware combinations that the PC brought for us.

vulkan

As games became more accomplished and complicated it became increasingly awkward and expensive to call the graphics subsystem directly from inside the game code.

The game engine appeared and sat between the two providing a high level library of objects the game uses and converting these into low level calls to the driver through an Application program interface aka API.

graphics

Now the game coders did not have to wrestle with the tiny nuts and bolts of generating complicated three dimensional figures, and now any effort spent in optimizing the game engine benefits everything.

Earlier 3D graphics cards had proprietary APIs, this was followed by cross platform APIs which in theory could work with any combination of hardware, making the most of each.

directx

DirectX was born with Windows 95 as a set of multimedia APIs, its aim was to get games run under Windows and not drop to DOS and use old school direct drivers.

DirectX has improved with time, version 4.0 was never released  while the latest version is 12 which is found in Xbox One and Microsoft Windows 10.

DirectX 12 passes data across the GPU in batches rather than in single items using multiple processor codes on the other hand DirectX 11 ran graphics rendering on a single core.

Vulkan is another highly ambitious cross platform API, It promises to have a huge reach. The traditional high level APIs which were with us were designed for a single-core world, sending data in a serial fashion but now APIs are capable of parallel operation.

graphic1

There was a time when graphics performance was hitting a bottleneck, Not because we did not have powerful hardware but because the inefficient APIs we had which were incapable of fully utilizing the hardware. The AMD Radeon GPUs were good at asynchronous compute – processing 3D Geometry in parallel and this is exactly what the high level APIs were bad at delivering and then we got a solution in form of low level API like Mantle which was released in 2013.

Graphics APIs will improve with time and we can hope that companies push the open source APIs more in the coming years

Leave a Reply