// Copyright 2019-2022 The Khronos Group, Inc. // SPDX-License-Identifier: CC-BY-4.0 // Required for both single-page and combined guide xrefs to work ifndef::chapters[:chapters:] [[what-vulkan-can-do]] = What Vulkan Can Do Vulkan can be used to develop applications for many use cases. While Vulkan applications can choose to use a subset of the functionality described below, it was designed so a developer could use all of them in a single API. [NOTE] ==== It is important to understand Vulkan is a box of tools and there are multiple ways of doing a task. ==== == Graphics 2D and 3D graphics are primarily what the Vulkan API is designed for. Vulkan is designed to allow developers to create hardware accelerated graphical applications. [NOTE] ==== All Vulkan implementations are required to support Graphics, but the xref:{chapters}wsi.adoc#wsi[WSI] system is not required. ==== == Compute Due to the parallel nature of GPUs, a new style of programming referred to as link:https://en.wikipedia.org/wiki/General-purpose_computing_on_graphics_processing_units[GPGPU] can be used to exploit a GPU for computational tasks. Vulkan supports compute variations of `VkQueues`, `VkPipelines`, and more which allow Vulkan to be used for general computation. [NOTE] ==== All Vulkan implementations are required to support Compute. ==== == Ray Tracing Ray tracing is an alternative rendering technique, based around the concept of simulating the physical behavior of light. Cross-vendor API support for ray tracing was added to Vulkan as a set of extensions in the 1.2.162 specification. These are primarily link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline[`VK_KHR_ray_tracing_pipeline`], link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_query[`VK_KHR_ray_query`], and link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_acceleration_structure[`VK_KHR_acceleration_structure`]. [NOTE] ==== There is also an older link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing[NVIDIA vendor extension] exposing an implementation of ray tracing on Vulkan. This extension preceded the cross-vendor extensions. For new development, applications are recommended to prefer the more recent KHR extensions. ==== == Video link:https://www.khronos.org/blog/an-introduction-to-vulkan-video?mc_cid=8052312abe&mc_eid=64241dfcfa[Vulkan Video] has release a provisional specification as of the 1.2.175 spec release. Vulkan Video adheres to the Vulkan philosophy of providing flexible, fine-grained control over video processing scheduling, synchronization, and memory utilization to the application. [NOTE] ==== link:https://github.com/KhronosGroup/Vulkan-Docs/issues/1497[feedback] for the provisional specification is welcomed ==== == Machine Learning Currently, the Vulkan Working Group is looking into how to make Vulkan a first class API for exposing ML compute capabilities of modern GPUs. More information was announced at link:https://www.youtube.com/watch?v=_57aiwJISCI&feature=youtu.be&t=5007[Siggraph 2019]. [NOTE] ==== As of now, there exists no public Vulkan API for machine learning. ==== == Safety Critical Vulkan SC ("Safety Critical") aims to bring the graphics and compute capabilities of modern GPUs to safety-critical systems in the automotive, avionics, industrial and medical space. It was publicly link:https://www.khronos.org/news/press/khronos-releases-vulkan-safety-critical-1.0-specification-to-deliver-safety-critical-graphics-compute[launched on March 1st 2022] and the specification is available link:https://www.khronos.org/vulkansc/[here]. [NOTE] ==== Vulkan SC is based on Vulkan 1.2, but removed functionality that is not needed for safety-critical markets, increases the robustness of the specification by eliminating ignored parameters and undefined behaviors, and enables enhanced detection, reporting, and correction of run-time faults. ====