Blog

The API path

I was thinking about the evolution of graphics APIs, and how critical they have been to the industry and the participating companies. The API activity has always been contentious, dynamic, challenging, and many times frustrating. And as George Santayana famously said, “Those who do not learn from history are doomed to repeat it.” Something that could well apply to what’s ...

Robert Dow

I was thinking about the evolution of graphics APIs, and how critical they have been to the industry and the participating companies. The API activity has always been contentious, dynamic, challenging, and many times frustrating. And as George Santayana famously said, “Those who do not learn from history are doomed to repeat it.” Something that could well apply to what’s going in the U.S. today. Regardless of local government politics, the politics of APIs is equally daunting, and terribly important. 

The first graphic I/O, with limited machine language calls, dates back to the IBM 704 in 1954 which had an external 780 graphics terminal. The IBM 704 had the first synthetized speech system which inspired Arthur C. Clark’s Daisy Daisy scene in: 2001: A Space Odyssey) But the IBM system was a closed system. 

It was the establishment of Tektronix’s graphics terminals as the industry standard in the early 1970s that really kicked off the idea of an industry standard API. The Tektronix 4010, introduced in 1971 used Tektronix’s Plot-10 graphics library and function calls. There was also Cambridge University’s CADCen-tre GINO-F, and Culham Lab’s Ghost that were popular and used by various application developers. In Europe, the German Standards Institute, or DIN made significant contributions, as did the Norwegian group, which proposed a package called GPGS as a standard. GPGS later became known as IDIGS. The ACM tried to consolidate and stabilize things and in 1976 introduced the CORE graphics library and API. 

With the introduction of the PC, and 16kb memory chips in the early 1980s, PC graphics took off and dozens of companies emerged offering graphics add-in boards (AIBs), but it was IBM again that set the standards with the MDA and CGA. In the late 1980s and into the early 1990s it was chaos in API land in the PC industry, and we had the infamous API wars.

However, if a particular graphics AIB’s chip didn’t support some features needed by an application then when those functions were called by the application, they would be executed (more slowly) by the CPU. And that often-created cases which would result in what was (and still is) known as the “blue screen of death”—i.e., a system crash typically due to an API/driver conflict. 
The result of those crashes caused calls to Microsoft even though their operating system (Windows 3.0 or 3.1 at the time— mid 1990s) was not to blame. With the introduction of 32-bit Windows 95 in late August 1995, Microsoft also introduced its API for graphics called DirectX 1.0. The suppliers of their own proprietary APIs, one of the most popular being Glide from 3Dfx, were slowly but surely edged out as DirectX took over, stabilized the PC and life was good. 

Over the years, the API, which carried a graphics functions library, grew, and grew, and GREW. Also, the API wasn’t very smart and couldn’t remember if a function call had been issued, so if it was issued again it had to be reloaded and executed by GPU. That ate up time to load the call, then search the library, and finally run it. Also, during the years, in attempts to get more efficient, and more complex graphics operations, most (almost all) application developers built the graphics functions into their applications and/or the game engines. That sped up things a bit, but the drivers were approaching 4 GB with unneeded op calls for legacy systems. 

Then in 2013, in conjunction with game developer DICE, AMD introduced Mantel, a very thin, super-efficient API with almost no graphics library, plus better access to all the functions within the GPU, and a memory of what had been done that reduced or eliminated recall commands. That motivated Microsoft and Khronos to improve their APIs. Khronos had already been investing in graphics API updates, but it was Mantel that showed the way to Vulkan for Khronos, DirectX 10 for Microsoft, and Metal for Apple. 

AMD has stopped developing Mantle and contributed their concepts and IP to Apple, Khronos, and Microsoft, and so we are back to a mini API war situation with three choices, one open and two proprietary. 

What was it Santayana said again? Oh never mind, we’re got work to do re-inventing the wheel—we’re going to make it round this time.