The 1970’s saw the birth of the specialized graphic chips to be used as part of the early video games hardware. The technology has been evolving since then. The need to use proprietary driver and interfaces for the software attached to the hardware
Software on this hardware had to use proprietary driver with proprietary interfaces which was making maintenance expensive and causing delays in deployment. Some of the graphics chips launched in the early 1990s were Fujitsu's MB14241, TI TMS34010, IBM8514, and Sharp X68000. Each of these chips had its own software interfaces and it was a time that saw an increase in the number of graphics hardware in the market. To enable easy migration from one hardware to another and for ease of maintenance of software, IRIS GL API was defined and developed by Silicon Graphics. IRIS GL API eventually became OpenGL APIs.
IRIS GL API abstracted and supported only those features that were supported by hardware. IRIS GL API evolved to become OpenGL API that supported features in software as well. Thus, software components could be used for features that were not supported by hardware.
OpenGL APIs existed since early 1990s and have been used in many devices where graphics is involved. It has evolved from version 1.0 to the latest 4.5. Over the last two decades, a lot of customization has been done to OpenGL APIs. This has enabled them to support the features supported by GPU (such as textures, shading, image processing, and 3D features). The customization has been done through extensions thus ensuring backward compatibility.
In 2006, the responsibility of OpenGL was passed on to the Khronos Group. They started a ‘next generation OpenGL’ initiative called Vulkan. Vulkan is based on Mantle API donated by AMD to the group. Unlike OpenGL which needs more CPU for functions such as GLSL compilation – even though GPU is being used – Vulkan uses GPU with less overhead on CPU. Vulkan APIs have been newly designed taking into account support for a variety of devices – mobile devices, PCs, gaming consoles. Considering the usage of multi-core platforms in these devices, Vulkan APIs are clearly defined and enable applications to use multiple cores easily.
Vulkan APIs are low-level APIs that leave memory and thread management to applications. Though this makes drivers generic/light weight and allows applications to have direct control over GPU, it is bound to increase work for application developers. Won't application developers end up writing layers on top of Vulkan APIs for re-usability? Will application developers be ready to migrate to Vulkan APIs from OpenGL APIs since Vulkan APIs are not backward compatible with OpenGL APIs? Won't someone think of integrating low-level Vulkan APIs into OpenGL so that existing applications can continue to work?
Though adaption of Vulkan APIs will take time, it will be supported by chipset vendors, operating systems such as Android (will Google include Vulkan API in its next version of Android?), and Tizen (Tizen version 3.X?). This will enable the developer community to try out the APIs, identify gaps and help in maturing the APIs, if they are found to be really advantageous over OpenGL. It is definite that both OpenGL and Vulkan APIs will be available on various platforms. Whether developers continue and keep optimizing OpenGL or migrate to Vulkan, remains to be seen.
Author: Krishna Kishore, Senior Architect