Vulkan Documentation

website·Indexed 32 days ago

https://vkdoc.net

Technical reference for the Vulkan API, including runtime SPIR-V validation rules, header macros like VK_NO_PROTOTYPES and VKAPI_CALL, and detailed proposals for extensions from vendors such as AMD, NVIDIA, Qualcomm, and Huawei.

Tokens
2.1M
Snippets
4.9K
Records
11.8K
Agent score
61%

What's inside Vulkan

  1. Overview of VK_NV_ray_tracing extension

    The VK_NV_ray_tracing extension enables the integration of ray tracing with traditional rasterization in Vulkan. It introduces acceleration structure objects, a new pipeline type with specific shader domains, and an indirection table to link shader groups with acceleration structure items. It also adds support for the SPV_NV_ray_tracing SPIR-V extension and provides API support for GL_NV_ray_tracing.
  2. Overview of VK_EXT_multisampled_render_to_single_sampled

    The VK_EXT_multisampled_render_to_single_sampled extension allows a framebuffer and render pass to include single-sampled attachments while rendering is performed with a specified number of samples. This is designed for hardware that can efficiently load multisampled attachments from single-sampled data and perform resolve operations at the end of a subpass, eliminating the need for additional multisampled image memory allocation and reducing bandwidth overhead.
  3. Overview of VK_ARM_shader_instrumentation extension

    The VK_ARM_shader_instrumentation extension is designed for Arm GPUs to provide runtime shader cost analysis. Unlike static analysis or compile-time estimates, this extension allows developers to gather actual performance metrics (such as cycle costs) based on the executed control flow and thread count of specific draw calls. This is particularly useful for optimizing shaders with divergent control flow, dynamic indexing, and bindless descriptors. Note that using this extension introduces performance overhead and is intended for debugging and profiling.
  4. Overview of VK_VALVE_mutable_descriptor_type extension

    The VK_VALVE_mutable_descriptor_type extension allows a descriptor to mutate to a specific list of descriptor types based on what is written or copied into a descriptor set. This reduces descriptor memory footprint by allowing a single large descriptor set to be used instead of separate sets for each descriptor type, which is especially useful when using VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT.

    Additionally, the extension provides a mechanism to specify that a descriptor pool (and its allocated sets) resides only in host memory. Host-only descriptors can be updated or copied, but cannot be bound to a command buffer.

  5. Overview of VK_EXT_frame_boundary extension

    VK_EXT_frame_boundary is a device extension designed to assist tools (such as debuggers) in grouping queue submissions into frames. This is particularly useful in non-trivial scenarios where vkQueuePresentKHR does not serve as a relevant frame boundary delimiter.
  6. Overview of VK_KHR_shader_float_controls

    The VK_KHR_shader_float_controls extension enables efficient floating-point computations by allowing the application to query and override the implementation's default behavior for rounding modes, denormals, signed zero, and infinity. All functionality provided by this extension was promoted to core Vulkan 1.2 (with the KHR suffix removed), though the original KHR names remain available as aliases.
  7. Overview of VK_EXT_shader_tile_image

    The VK_EXT_shader_tile_image device extension enables explicit access to on-chip pixel data (tile images) within the fragment shader. It is designed as a replacement for subpasses, especially for developers using VK_KHR_dynamic_rendering, allowing optimizations like G-buffer production and consumption to happen entirely on-chip without paying DRAM bandwidth for render targets that are cleared on load and discarded at the end of a render pass.
  8. Overview of VK_EXT_mesh_shader programmable shading

    The VK_EXT_mesh_shader extension introduces a programmable mesh shading pipeline that replaces the fixed-function input assembly and traditional pre-rasterization stages (vertex, tessellation, and geometry shaders). It allows developers to generate geometric primitives using compute-like shaders, enabling flexible operations such as on-the-fly decompression, decryption, and fine-grained culling without the bandwidth overhead of piping data through global memory via separate compute shaders.
  9. Overview of VK_KHR_line_rasterization extension

    The VK_KHR_line_rasterization extension provides enhanced line rasterization capabilities similar to those found in OpenGL and CAD applications. Key features include:

    • Bresenham-style line rasterization: A classic line drawing algorithm.
    • Smooth rectangular lines: Supports coverage-to-alpha for smoother edges.
    • Stippled lines: Supported across all three line rasterization modes.

    Note: This extension's functionality was promoted to core Vulkan 1.4 (with the KHR suffix removed). If Vulkan 1.4 is supported, the bresenhamLines feature must be supported.

  10. Overview of VK_KHR_video_encode_feedback2

    The VK_KHR_video_encode_feedback2 extension builds upon the VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR queries from the VK_KHR_video_encode_queue extension. It extends the set of supported video encode feedback values to include additional statistics about the encoded picture, specifically adding per-picture partition feedback values.
  11. Overview of VK_KHR_device_address_commands

    The VK_KHR_device_address_commands extension enables applications to use device addresses in place of buffer objects for most functionality. This reduces the reliance on explicit buffer handles for operations like memory copies, binding buffers, and indirect command execution.
  12. Overview of VK_NV_cooperative_matrix2 extensions

    The VK_NV_cooperative_matrix2 proposal extends VK_KHR_cooperative_matrix to address limitations in GEMM performance and flexibility. Key enhancements include:

    • Workgroup Scope Matrices: Allows for larger matrix sizes and more efficient loading via automatic shared memory staging.
    • Flexible Dimensions: Supports matrix sizes as multiples of a minimum granularity up to a large upper bound.
    • Matrix Use Conversions: Supports converting an Accumulator matrix to Matrix A or Matrix B (with optional transpose) to enable fused network kernels.
    • Reductions: Provides native reduction operations (e.g., row-wise max for softmax or max-pooling) specifically for Accumulator matrices.
    • Tensor Layouts and Views: Replaces simple row/col-major addressing with a system similar to PyTorch, supporting complex slicing, multi-dimensional tensors, and padding.
    • Quantized Weight Support: Introduces block dimensions in addressing and decode callback functions to dequantize values (e.g., int4) during the load process.