[NOTE]
April 8, 2026 · View on GitHub
// Copyright 2019-2024 The Khronos Group, Inc. // SPDX-License-Identifier: CC-BY-4.0
= Vulkan^®^ Guide :regtitle: pass:q,r[^®^] The Khronos{regtitle} Vulkan Working Group :data-uri: :icons: font :max-width: 100% :numbered: :source-highlighter: rouge :rouge-style: github
image::images/vulkan_logo.png[Vulkan Logo] image::images/khronos_logo.png[Khronos logo]
:lang-jp: lang/jp/ :lang-kor: lang/kor/ This document is also available in the following languages: + xref:{lang-jp}README-jp.adoc[Japanese] xref:{lang-kor}README-kor.adoc[Korean]
// Use {chapters} as base path for individual chapters, to allow single // pages to work properly as well. Must have trailing slash. // Implicit {relfileprefix} does not work due to file hierarchy :chapters: chapters/
The Vulkan Guide is designed to help developers get up and going with the world of Vulkan. It is aimed to be a light read that leads to many other useful links depending on what a developer is looking for. All information is intended to help better fill the gaps about the many nuances of Vulkan.
[NOTE]
The Vulkan Guide content is also viewable from https://docs.vulkan.org/guide/latest/index.html
:leveloffset: 1
= Logistics Overview
== xref:{chapters}what_is_vulkan.adoc[What is Vulkan?]
== xref:{chapters}what_vulkan_can_do.adoc[What you can do with Vulkan]
== xref:{chapters}vulkan_spec.adoc[Vulkan Spec]
== xref:{chapters}platforms.adoc[Platforms]
== xref:{chapters}checking_for_support.adoc[Checking for Support]
== xref:{chapters}versions.adoc[Vulkan Versions & Porting Guide]
== xref:{chapters}vulkan_release_summary.adoc[Vulkan Release Summary]
== xref:{chapters}what_is_spirv.adoc[What is SPIR-V?]
== xref:{chapters}portability_initiative.adoc[Portability Initiative]
== xref:{chapters}vulkan_cts.adoc[Vulkan CTS]
== xref:{chapters}development_tools.adoc[Vulkan Development Tools]
== xref:{chapters}validation_overview.adoc[Vulkan Validation Overview]
== xref:{chapters}decoder_ring.adoc[Vulkan Decoder Ring (GL, GLES, DirectX, and Metal)]
= Using Vulkan
== xref:{chapters}deprecated.adoc[Deprecated] == xref:{chapters}embedded_programming.adoc[Embedded Programming]
== xref:{chapters}windowing_audio_input.adoc[Windowing, Audio, and Input]
== xref:{chapters}ide.adoc[Development Environments & IDEs]
== xref:{chapters}tile_based_rendering_best_practices.adoc[Tile Based Rendering (TBR) Best Practices]
== xref:{chapters}vulkan_profiles.adoc[Vulkan Profiles]
== xref:{chapters}loader.adoc[Loader]
== xref:{chapters}layers.adoc[Layers]
== xref:{chapters}querying_extensions_features.adoc[Querying Properties, Extensions, Features, Limits, and Formats]
=== xref:{chapters}enabling_extensions.adoc[Enabling Vulkan Extensions]
=== xref:{chapters}enabling_features.adoc[Enabling Vulkan Features]
=== xref:{chapters}spirv_extensions.adoc[Using SPIR-V Extension]
=== xref:{chapters}formats.adoc[Formats]
== xref:{chapters}queues.adoc[Queues and Queue Family]
== xref:{chapters}wsi.adoc[WSI]
== xref:{chapters}pnext_and_stype.adoc[pNext and sType]
== xref:{chapters}synchronization.adoc[Synchronization]
=== xref:{chapters}extensions/VK_KHR_synchronization2.adoc[Porting to VK_KHR_synchronization2]
=== xref:{chapters}synchronization_examples.adoc[Synchronization Examples]
=== xref:{chapters}swapchain_semaphore_reuse.adoc[Swapchain Semaphore Reuse]
== xref:{chapters}memory_allocation.adoc[Memory Allocation Strategy]
=== xref:{chapters}sparse_resources.adoc[Sparse Resources]
=== xref:{chapters}protected.adoc[Protected Memory]
=== xref:{chapters}buffer_device_address.adoc[Buffer Device Address]
VK_KHR_buffer_device_address,VK_EXT_buffer_device_address
=== xref:{chapters}buffer_device_address_alignment.adoc[Buffer Device Address - Alignment]
== xref:{chapters}pipeline_cache.adoc[Pipeline Caching/Derivatives]
== xref:{chapters}threading.adoc[Threading]
== xref:{chapters}depth.adoc[Depth]
VK_EXT_depth_range_unrestricted,VK_EXT_depth_clip_enable,VK_EXT_depth_clip_control
== xref:{chapters}primitive_topology.adoc[Primitive Topology]
== xref:{chapters}mapping_data_to_shaders.adoc[Mapping Data to Shaders]
=== xref:{chapters}storage_image_and_texel_buffers.adoc[Storage Image and Texel Buffers]
=== xref:{chapters}vertex_input_data_processing.adoc[Vertex Input Data Processing]
=== xref:{chapters}descriptor_arrays.adoc[Descriptor Arrays]
=== xref:{chapters}descriptor_dynamic_offset.adoc[Descriptor Dynamic Offset]
=== xref:{chapters}descriptor_buffer.adoc[Descriptor Buffers (VK_EXT_descriptor_buffer)]
=== xref:{chapters}descriptor_heap.adoc[Descriptor Heaps (VK_EXT_descriptor_heap)]
=== xref:{chapters}location_component_interface.adoc[Location and Component Interface]
=== xref:{chapters}push_constants.adoc[Push Constants]
=== xref:{chapters}ways_to_provide_spirv.adoc[Ways to Provide SPIR-V]
=== xref:{chapters}buffer_array_length.adoc[Buffer Array Length (OpArrayLength)]
== xref:{chapters}robustness.adoc[Robustness]
VK_EXT_image_robustness,VK_KHR_robustness2,VK_EXT_pipeline_robustness
== xref:{chapters}dynamic_state.adoc[Dynamic State]
VK_EXT_extended_dynamic_state,VK_EXT_extended_dynamic_state2,VK_EXT_extended_dynamic_state3,VK_EXT_vertex_input_dynamic_state,VK_EXT_color_write_enable,VK_EXT_attachment_feedback_loop_dynamic_state
=== xref:{chapters}dynamic_state_map.adoc[Dynamic State Map]
== xref:{chapters}compute_shaders.adoc[Compute Shaders]
== xref:{chapters}subgroups.adoc[Subgroups]
VK_EXT_subgroup_size_control,VK_KHR_shader_subgroup_extended_types,VK_EXT_shader_subgroup_ballot,VK_EXT_shader_subgroup_vote
== xref:{chapters}shader_memory_layout.adoc[Shader Memory Layout]
VK_KHR_uniform_buffer_standard_layout,VK_KHR_relaxed_block_layout,VK_EXT_scalar_block_layout
== xref:{chapters}atomics.adoc[Atomics]
VK_KHR_shader_atomic_int64,VK_EXT_shader_image_atomic_int64,VK_EXT_shader_atomic_float,VK_EXT_shader_atomic_float2
== xref:{chapters}image_copies.adoc[Image Copies]
== xref:{chapters}common_pitfalls.adoc[Common Pitfalls]
== xref:{chapters}hlsl.adoc[Using HLSL shaders]
== xref:{chapters}high_level_shader_language_comparison.adoc[High Level Shader Language Comparison]
= When and Why to use Extensions
[NOTE]
These are supplemental references for the various Vulkan Extensions. Please consult the Vulkan Spec for further details on any extension
== xref:{chapters}extensions/cleanup.adoc[Cleanup Extensions]
VK_EXT_4444_formats,VK_KHR_bind_memory2,VK_KHR_create_renderpass2,VK_KHR_dedicated_allocation,VK_KHR_driver_properties,VK_KHR_get_memory_requirements2,VK_KHR_get_physical_device_properties2,VK_EXT_host_query_reset,VK_KHR_maintenance1,VK_KHR_maintenance2,VK_KHR_maintenance3,VK_KHR_maintenance4,VK_KHR_maintenance5,VK_KHR_maintenance6,VK_KHR_separate_depth_stencil_layouts,VK_KHR_depth_stencil_resolve,VK_EXT_separate_stencil_usage,VK_EXT_sampler_filter_minmax,VK_KHR_sampler_mirror_clamp_to_edge,VK_EXT_ycbcr_2plane_444_formats,VK_KHR_format_feature_flags2,VK_EXT_rgba10x6_formats,VK_KHR_copy_commands2
== xref:{chapters}extensions/device_groups.adoc[Device Groups]
VK_KHR_device_group,VK_KHR_device_group_creation
== xref:{chapters}extensions/external.adoc[External Memory and Sychronization]
VK_KHR_external_fence,VK_KHR_external_memory,VK_KHR_external_semaphore
== xref:{chapters}extensions/ray_tracing.adoc[Ray Tracing]
VK_KHR_acceleration_structure,VK_KHR_ray_tracing_pipeline,VK_KHR_ray_query,VK_KHR_pipeline_library,VK_KHR_deferred_host_operations
== xref:{chapters}extensions/shader_features.adoc[Shader Features]
VK_KHR_8bit_storage,VK_KHR_16bit_storage,VK_KHR_shader_clock,VK_EXT_shader_demote_to_helper_invocation,VK_KHR_shader_draw_parameters,VK_KHR_shader_float16_int8,VK_KHR_shader_float_controls,VK_KHR_shader_non_semantic_info,VK_EXT_shader_stencil_export,VK_KHR_shader_terminate_invocation,VK_EXT_shader_viewport_index_layer,VK_KHR_spirv_1_4,VK_KHR_storage_buffer_storage_class,VK_KHR_variable_pointers,VK_KHR_vulkan_memory_model,VK_KHR_workgroup_memory_explicit_layout,VK_KHR_zero_initialize_workgroup_memory
== xref:{chapters}extensions/translation_layer_extensions.adoc[Translation Layer Extensions]
VK_EXT_custom_border_color,VK_EXT_border_color_swizzle,VK_EXT_depth_clip_enable,VK_EXT_depth_clip_control,VK_EXT_provoking_vertex,VK_EXT_transform_feedback,VK_EXT_image_view_min_lod
== xref:{chapters}extensions/VK_EXT_descriptor_indexing.adoc[VK_EXT_descriptor_indexing]
== xref:{chapters}extensions/VK_EXT_inline_uniform_block.adoc[VK_EXT_inline_uniform_block]
== xref:{chapters}extensions/VK_EXT_memory_priority.adoc[VK_EXT_memory_priority]
== xref:{chapters}extensions/VK_KHR_descriptor_update_template.adoc[VK_KHR_descriptor_update_template]
== xref:{chapters}extensions/VK_KHR_draw_indirect_count.adoc[VK_KHR_draw_indirect_count]
== xref:{chapters}extensions/VK_KHR_image_format_list.adoc[VK_KHR_image_format_list]
== xref:{chapters}extensions/VK_KHR_imageless_framebuffer.adoc[VK_KHR_imageless_framebuffer]
== xref:{chapters}extensions/VK_KHR_sampler_ycbcr_conversion.adoc[VK_KHR_sampler_ycbcr_conversion]
== link:https://www.khronos.org/blog/vulkan-timeline-semaphores[VK_KHR_timeline_semaphore]
== link:https://www.khronos.org/blog/streamlining-render-passes[VK_KHR_dynamic_rendering]
== xref:{chapters}extensions/VK_KHR_shader_subgroup_uniform_control_flow.adoc[VK_KHR_shader_subgroup_uniform_control_flow]
== xref:{chapters}extensions/VK_EXT_debug_utils.adoc[VK_EXT_debug_utils]
= link:CONTRIBUTING.adoc[Contributing]
= link:LICENSE[License]
= link:CODE_OF_CONDUCT.adoc[Code of conduct]