Introduction
In his blog published on February 16, 2016, Imad Sousou shared that Intel was selected as one of the leading graphics platform suppliers with Vulkan* 1.0 drivers certified by the Khronos Group Consortium. This article gives a presents the basics on the Vulkan graphics API and Intel’s Open Source Graphics Drivers.
Vulkan Graphics API
The Vulkan graphics API was created by the Khronos Group, an industry consortium founded in 2000 and focused on the creation of open standards for parallel computing, and graphics and vision processing on a wide variety of platforms and devices. Many of the APIs and technologies created by Khronos working groups are well known and widely used in the industry, for example, Vulkan, OpenGL*, OpenGL ES, WebGL*, OpenCL™, and OpenVX. As an industry collaboration, the parties that contributed to the Vulkan API included major hardware vendors, OS vendors, and the game industry.
Architecture Characteristics
Traditional graphics APIs, such as OpenGL and DirectX*, have the following characteristics in common:
- The application layer itself is relatively simple, which can be considered an advantage.
- The application layer uses single render threads to interface with the driver layer.
- Render threads are CPU bound.
- The main work is done in the driver layer and includes:
- Implicit context
- Memory management
- State management
- State validation
- Error checking
- Front-end shader compiler
- Back-end shader compiler
- Hardware commands
- This leads to:
- Hidden stalls
- Vendor-specific shader compiler differences
- Unnecessary validation
- The driver layer accesses the GPU in single threads.
Designed as the “next-generation graphics API,” Vulkan has many different characteristics, which include the following:
- Some functional components are moved from the driver layer to the application layer making the application layer more complicated. These components include:
- Memory management
- State management
- Front-end shader compiler
- Optional debug layers have been added to perform state validation and error checking.
- The driver layer is now smaller, which mainly includes only the back end-shader compiler and the hardware commands.
- The invocations from the application layer to the debug layer, from the debug layer to the driver layer, and from the driver layer to GPU are multithreading.
The architecture changes implemented in Vulkan have resulted in many improvements:
- Explicit resource transitions
- Consistent shader compiler
- Optional validation
- Multithread parallelism
- Lower driver overhead
- Most significantly, reduced CPU load and implicit stalls
Vulkan API Overview
This blog is not intended to be a tutorial on how to write code using Vulkan. In general, Vulkan is a C API and provides a set of free function entry points to handle:
- Device
- Queue
- Command buffer
- RenderPass
- FrameBuffer
- Image
- GPU memory
- and more
Intel’s Open Source Graphics Drivers
Intel’s Open Source Graphics Drivers is one of the most widely deployed driver stacks in the industry. These drivers are integrated seamlessly into Linux* PC client distributions, Google Chromebooks*, and Valve’s SteamOS* serving tens of millions of PC users. The Intel’s Open Source Vulkan driver for 5th generation Intel® Core™ processors and 6th generation Intel® Core™ processors (code-named Broadwell and Skylake) passes the Vulkan 1.0 Conformance Test Suite on these platforms and has experimental support for older platforms. Developers can either build the drivers from source code or directly get Linux distribution packages. Please go to https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware for more information.
Summary
In this blog we discussed Vulkan and the new-generation graphics API and its technical perspectives and advantages. With the Vulkan 1.0 certifications, the Intel’s Open Source 3D Graphics Driver adds technology leadership to its impressive capabilities.
Other Related Links
https://www.khronos.org/vulkan/
https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware
/content/www/us/en/develop/articles/api-without-secrets-introduction-to-vulkan-part-1.html
*Other names and brands may be claimed as the property of others.
OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.