The Khronos Consortium, which develops graphics standards,
specification , defining the API for accessing the graphical and computational capabilities of GPUs. The new specification incorporates corrections made over the past two years and . Drivers supporting the new version of Vulkan are already from Intel, , ARM, Imagination Technologies, and . The support for Vulkan 1.2 in Mesa is offered for drivers of (AMD cards) and (Intel). Vulkan 1.2 support is also implemented in the debugger , , and the set of examples .
Key :
- HLSL DXC
HLSL, including mathematical types, control flows, functions, sets, resource types, namespaces, Shader Model 6.2, structures, and methods, but also allows the use of Vulkan-specific extensions, such as VKRay from NVIDIA. Using HLSL on top of Vulkan has enabled the functioning of games such as Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey, and Tomb Raider.
The specification of - SPIR-V 1.5 SPIR-V implies separating the compilation phase of shaders into an intermediate representation, allowing the creation of frontends for various high-level languages. Based on different high-level implementations, a unified intermediate code is generated, which can be used by OpenGL, Vulkan, and OpenCL drivers without utilizing a built-in shader compiler.
The core API of Vulkan includes 23 extensions that enhance performance, improve rendering quality, and simplify development. Among the added extensions are:
- Timeline semaphores
- (Timeline semaphore), unifying synchronizations with the host and device queues (allowing a single primitive for bidirectional synchronization between the device and host, without needing separate primitives VkFence and VkSemaphore). The new semaphores are represented by a monotonically increasing 64-bit value, which can be tracked and updated across multiple threads.

- Support for using numeric types with reduced precision in shaders;
- HLSL-compatible memory layout variant;
- Bindless resources, removing the limitation on the number of resources available to shaders by utilizing a shared virtual address space of system memory and GPU memory;
- , defining how concurrently executing threads can access shared data and synchronization operations;
- for reusing layout descriptors across multiple shaders;
- Buffer references.
Full list of added extensions:
- (Timeline semaphore), unifying synchronizations with the host and device queues (allowing a single primitive for bidirectional synchronization between the device and host, without needing separate primitives VkFence and VkSemaphore). The new semaphores are represented by a monotonically increasing 64-bit value, which can be tracked and updated across multiple threads.
- more than 50 new structures and 13 functions;
- Condensed specification versions are prepared for typical target platforms, simplifying work on platforms that do not yet support all extensions, and allowing for operation without selective activation of basic Vulkan API features.
- Work has continued on the portability project with other graphics APIs. For example, in Vulkan, extensions are proposed to translate OpenGL (), OpenCL (, ), OpenGL ES (GLOVE, Angle) and DirectX (, ) via the Vulkan API, as well as the reverse, to enable Vulkan to operate on platforms without native support ( and to run on top of OpenGL and DirectX, and gfx-rs for running on top of Metal).
To improve compatibility with DirectX and HLSL, extensions have been added
VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, and specific HLSL capabilities have been implemented in SPIR-V.
Future plans include the development of extensions for machine learning, ray tracing, video encoding and decoding, support for VRS (variable-rate shading), and Mesh shaders.
Recall that the Vulkan API features a radical simplification of drivers by offloading GPU command generation to the application side, the possibility of connecting debugging layers, unifying the API across various platforms, and applying precompiled intermediate code representation for execution on the GPU. To ensure high performance and predictability, Vulkan provides applications with the means to directly manage GPU operations and inherent support for multi-threaded command processing, which minimizes the overhead introduced by the driver, while the capabilities implemented on the driver side are significantly simplified and become more predictable. For example, operations like memory management and error handling, implemented in OpenGL on the driver side, are moved to the application level in Vulkan.
Vulkan covers all available platforms and provides a unified API for desktop, mobile systems, and the web, allowing the use of a single common API for various graphics processors and application domains. Thanks to Vulkan's layered architecture, which implies the creation of tools that work with any GPU, hardware manufacturers can utilize standard tools for code verification, debugging, and profiling during development. A new portable intermediate representation, SPIR-V, based on LLVM and leveraging the shared underlying technologies of OpenCL, is offered for shader creation. For device and screen management in Vulkan, a WSI (Window System Integration) interface is proposed, addressing roughly the same tasks as EGL in OpenGL ES. Out-of-the-box support for WSI is available in Wayland; all applications using Vulkan can run in environments with unmodified Wayland servers. WSI support is also provided for Android, X11 (with DRI3), Windows, Tizen, macOS, and iOS.
Source: opennet.ru


