{"id":13713200,"url":"https://github.com/KhronosGroup/Vulkan-Guide","last_synced_at":"2025-05-06T23:30:50.478Z","repository":{"id":37733946,"uuid":"218773739","full_name":"KhronosGroup/Vulkan-Guide","owner":"KhronosGroup","description":"One stop shop for getting started with the Vulkan API","archived":false,"fork":false,"pushed_at":"2025-04-29T00:12:23.000Z","size":6265,"stargazers_count":2038,"open_issues_count":23,"forks_count":176,"subscribers_count":85,"default_branch":"main","last_synced_at":"2025-04-29T01:28:00.835Z","etag":null,"topics":["khronos","vulkan","vulkan-guide"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KhronosGroup.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.adoc","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-10-31T13:34:06.000Z","updated_at":"2025-04-29T00:12:27.000Z","dependencies_parsed_at":"2023-11-12T16:28:37.556Z","dependency_job_id":"88a77760-0fb3-4820-a396-e9f110e5a833","html_url":"https://github.com/KhronosGroup/Vulkan-Guide","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhronosGroup%2FVulkan-Guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhronosGroup%2FVulkan-Guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhronosGroup%2FVulkan-Guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhronosGroup%2FVulkan-Guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KhronosGroup","download_url":"https://codeload.github.com/KhronosGroup/Vulkan-Guide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252787188,"owners_count":21804214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["khronos","vulkan","vulkan-guide"],"created_at":"2024-08-02T23:01:29.471Z","updated_at":"2025-05-06T23:30:50.471Z","avatar_url":"https://github.com/KhronosGroup.png","language":"Makefile","readme":"// Copyright 2019-2024 The Khronos Group, Inc.\n// SPDX-License-Identifier: CC-BY-4.0\n\n= Vulkan^®^ Guide\n:regtitle: pass:q,r[^®^]\nThe Khronos{regtitle} Vulkan Working Group\n:data-uri:\n:icons: font\n:max-width: 100%\n:numbered:\n:source-highlighter: rouge\n:rouge-style: github\n\nimage::images/vulkan_logo.png[Vulkan Logo]\nimage::images/khronos_logo.png[Khronos logo]\n\n:lang-jp: lang/jp/\n:lang-kor: lang/kor/\nThis document is also available in the following languages: +\nxref:{lang-jp}README-jp.adoc[Japanese]\nxref:{lang-kor}README-kor.adoc[Korean]\n\n// Use {chapters} as base path for individual chapters, to allow single\n// pages to work properly as well. Must have trailing slash.\n// Implicit {relfileprefix} does not work due to file hierarchy\n:chapters: chapters/\n\nThe 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.\n\n[NOTE]\n====\nThe Vulkan Guide can be built as a single page using `asciidoctor guide.adoc`\n====\n\n:leveloffset: 1\n\n= Logistics Overview\n\n== xref:{chapters}what_is_vulkan.adoc[What is Vulkan?]\n\n// include::{chapters}what_is_vulkan.adoc[]\n\n== xref:{chapters}what_vulkan_can_do.adoc[What you can do with Vulkan]\n\n// include::{chapters}what_vulkan_can_do.adoc[]\n\n== xref:{chapters}vulkan_spec.adoc[Vulkan Spec]\n\n// include::{chapters}vulkan_spec.adoc[]\n\n== xref:{chapters}platforms.adoc[Platforms]\n\n// include::{chapters}platforms.adoc[]\n\n== xref:{chapters}checking_for_support.adoc[Checking for Support]\n\n// include::{chapters}checking_for_support.adoc[]\n\n== xref:{chapters}versions.adoc[Versions]\n\n// include::{chapters}versions.adoc[]\n\n== xref:{chapters}vulkan_release_summary.adoc[Vulkan Release Summary]\n\n// include::{chapters}vulkan_release_summary.adoc[]\n\n== xref:{chapters}what_is_spirv.adoc[What is SPIR-V?]\n\n// include::{chapters}what_is_spirv.adoc[]\n\n== xref:{chapters}portability_initiative.adoc[Portability Initiative]\n\n// include::{chapters}portability_initiative.adoc[]\n\n== xref:{chapters}vulkan_cts.adoc[Vulkan CTS]\n\n// include::{chapters}vulkan_cts.adoc[]\n\n== xref:{chapters}development_tools.adoc[Vulkan Development Tools]\n\n// include::{chapters}development_tools.adoc[]\n\n== xref:{chapters}validation_overview.adoc[Vulkan Validation Overview]\n\n// include::{chapters}validation_overview.adoc[]\n\n== xref:{chapters}decoder_ring.adoc[Vulkan Decoder Ring (GL, GLES, DirectX, and Metal)]\n\n// include::{chapters}decoder_ring.adoc[]\n\n= Using Vulkan\n\n== xref:{chapters}loader.adoc[Loader]\n\n// include::{chapters}loader.adoc[]\n\n== xref:{chapters}layers.adoc[Layers]\n\n// include::{chapters}layers.adoc[]\n\n== xref:{chapters}querying_extensions_features.adoc[Querying Properties, Extensions, Features, Limits, and Formats]\n\n// include::{chapters}querying_extensions_features.adoc[]\n\n=== xref:{chapters}enabling_extensions.adoc[Enabling Vulkan Extensions]\n\n// include::{chapters}enabling_extensions.adoc[]\n\n=== xref:{chapters}enabling_features.adoc[Enabling Vulkan Features]\n\n// include::{chapters}enabling_features.adoc[]\n\n=== xref:{chapters}spirv_extensions.adoc[Using SPIR-V Extension]\n\n// include::{chapters}spirv_extensions.adoc[]\n\n=== xref:{chapters}formats.adoc[Formats]\n\n// include::{chapters}formats.adoc[]\n\n== xref:{chapters}queues.adoc[Queues and Queue Family]\n\n// include::{chapters}queues.adoc[]\n\n== xref:{chapters}wsi.adoc[WSI]\n\n// include::{chapters}wsi.adoc[]\n\n== xref:{chapters}pnext_and_stype.adoc[pNext and sType]\n\n// include::{chapters}pnext_and_stype.adoc[]\n\n== xref:{chapters}synchronization.adoc[Synchronization]\n\n// include::{chapters}synchronization.adoc[]\n\n=== xref:{chapters}extensions/VK_KHR_synchronization2.adoc[Porting to VK_KHR_synchronization2]\n\n// include::{chapters}extensions/VK_KHR_synchronization2.adoc[]\n\n=== xref:{chapters}synchronization_examples.adoc[Synchronization Examples]\n\n// include::{chapters}extensions/synchronization_examples.adoc[]\n\n=== xref:{chapters}swapchain_semaphore_reuse.adoc[Swapchain Semaphore Reuse]\n\n// include::{chapters}extensions/swapchain_semaphore_reuse.adoc[]\n\n== xref:{chapters}memory_allocation.adoc[Memory Allocation Strategy]\n\n// include::{chapters}memory_allocation.adoc[]\n\n=== xref:{chapters}sparse_resources.adoc[Sparse Resources]\n\n// include::{chapters}sparse_resources.adoc[]\n\n=== xref:{chapters}protected.adoc[Protected Memory]\n\n// include::{chapters}protected.adoc[]\n\n== xref:{chapters}pipeline_cache.adoc[Pipeline Caching/Derivatives]\n\n// include::{chapters}pipeline_cache.adoc[]\n\n== xref:{chapters}threading.adoc[Threading]\n\n// include::{chapters}threading.adoc[]\n\n== xref:{chapters}depth.adoc[Depth]\n\n// include::{chapters}depth.adoc[]\n\n  * `VK_EXT_depth_range_unrestricted`, `VK_EXT_depth_clip_enable`, `VK_EXT_depth_clip_control`\n\n== xref:{chapters}mapping_data_to_shaders.adoc[Mapping Data to Shaders]\n\n// include::{chapters}mapping_data_to_shaders.adoc[]\n\n=== xref:{chapters}vertex_input_data_processing.adoc[Vertex Input Data Processing]\n\n// include::{chapters}vertex_input_data_processing.adoc[]\n\n=== xref:{chapters}descriptor_dynamic_offset.adoc[Descriptor Dynamic Offset]\n\n// include::{chapters}descriptor_dynamic_offset.adoc[]\n\n=== xref:{chapters}location_component_interface.adoc[Location and Component Interface]\n\n// include::{chapters}location_component_interface.adoc[]\n\n=== xref:{chapters}push_constants.adoc[Push Constants]\n\n// include::{chapters}push_constants.adoc[]\n\n=== xref:{chapters}ways_to_provide_spirv.adoc[Ways to Provide SPIR-V]\n\n// include::{chapters}ways_to_provide_spirv.adoc[]\n\n== xref:{chapters}robustness.adoc[Robustness]\n\n// include::{chapters}robustness.adoc[]\n\n  * `VK_EXT_image_robustness`, `VK_EXT_robustness2`, `VK_EXT_pipeline_robustness`\n\n== xref:{chapters}dynamic_state.adoc[Dynamic State]\n\n// include::{chapters}dynamic_state.adoc[]\n\n  * `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`\n\n=== xref:{chapters}dynamic_state_map.adoc[Dynamic State Map]\n\n// include::{chapters}dynamic_state_map.adoc[]\n\n== xref:{chapters}subgroups.adoc[Subgroups]\n\n// include::{chapters}subgroups.adoc[]\n\n  * `VK_EXT_subgroup_size_control`, `VK_KHR_shader_subgroup_extended_types`, `VK_EXT_shader_subgroup_ballot`, `VK_EXT_shader_subgroup_vote`\n\n== xref:{chapters}shader_memory_layout.adoc[Shader Memory Layout]\n\n// include::{chapters}shader_memory_layout.adoc[]\n\n  * `VK_KHR_uniform_buffer_standard_layout`, `VK_KHR_relaxed_block_layout`, `VK_EXT_scalar_block_layout`\n\n== xref:{chapters}atomics.adoc[Atomics]\n\n// include::{chapters}atomics.adoc[]\n\n  * `VK_KHR_shader_atomic_int64`, `VK_EXT_shader_image_atomic_int64`, `VK_EXT_shader_atomic_float`, `VK_EXT_shader_atomic_float2`\n\n== xref:{chapters}common_pitfalls.adoc[Common Pitfalls]\n\n// include::{chapters}common_pitfalls.adoc[]\n\n== xref:{chapters}hlsl.adoc[Using HLSL shaders]\n\n// include::{chapters}hlsl.adoc[]\n\n== xref:{chapters}high_level_shader_language_comparison.adoc[High Level Shader Language Comparison]\n\n// include::{chapters}high_level_shader_language_comparison.adoc[]\n\n= When and Why to use Extensions\n\n[NOTE]\n====\nThese are supplemental references for the various Vulkan Extensions. Please consult the Vulkan Spec for further details on any extension\n====\n\n== xref:{chapters}extensions/cleanup.adoc[Cleanup Extensions]\n\n  * `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`\n\n// include::{chapters}extensions/cleanup.adoc[]\n\n== xref:{chapters}extensions/device_groups.adoc[Device Groups]\n\n  * `VK_KHR_device_group`, `VK_KHR_device_group_creation`\n\n// include::{chapters}extensions/device_groups.adoc[]\n\n== xref:{chapters}extensions/external.adoc[External Memory and Sychronization]\n\n  * `VK_KHR_external_fence`, `VK_KHR_external_memory`, `VK_KHR_external_semaphore`\n\n// include::{chapters}extensions/external.adoc[]\n\n== xref:{chapters}extensions/ray_tracing.adoc[Ray Tracing]\n\n  * `VK_KHR_acceleration_structure`, `VK_KHR_ray_tracing_pipeline`, `VK_KHR_ray_query`, `VK_KHR_pipeline_library`, `VK_KHR_deferred_host_operations`\n\n// include::{chapters}extensions/ray_tracing.adoc[]\n\n== xref:{chapters}extensions/shader_features.adoc[Shader Features]\n\n  * `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`\n\n// include::{chapters}extensions/shader_features.adoc[]\n\n== xref:{chapters}extensions/translation_layer_extensions.adoc[Translation Layer Extensions]\n\n  * `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`\n\n// include::{chapters}extensions/translation_layer_extensions.adoc[]\n\n== xref:{chapters}extensions/VK_EXT_descriptor_indexing.adoc[VK_EXT_descriptor_indexing]\n\n// include::{chapters}extensions/VK_EXT_descriptor_indexing.adoc[]\n\n== xref:{chapters}extensions/VK_EXT_inline_uniform_block.adoc[VK_EXT_inline_uniform_block]\n\n// include::{chapters}extensions/VK_EXT_inline_uniform_block.adoc[]\n\n== xref:{chapters}extensions/VK_EXT_memory_priority.adoc[VK_EXT_memory_priority]\n\n// include::{chapters}extensions/VK_EXT_memory_priority.adoc[]\n\n== xref:{chapters}extensions/VK_KHR_descriptor_update_template.adoc[VK_KHR_descriptor_update_template]\n\n// include::{chapters}extensions/VK_KHR_descriptor_update_template.adoc[]\n\n== xref:{chapters}extensions/VK_KHR_draw_indirect_count.adoc[VK_KHR_draw_indirect_count]\n\n// include::{chapters}extensions/VK_KHR_draw_indirect_count.adoc[]\n\n== xref:{chapters}extensions/VK_KHR_image_format_list.adoc[VK_KHR_image_format_list]\n\n// include::{chapters}extensions/VK_KHR_image_format_list.adoc[]\n\n== xref:{chapters}extensions/VK_KHR_imageless_framebuffer.adoc[VK_KHR_imageless_framebuffer]\n\n// include::{chapters}extensions/VK_KHR_imageless_framebuffer.adoc[]\n\n== xref:{chapters}extensions/VK_KHR_sampler_ycbcr_conversion.adoc[VK_KHR_sampler_ycbcr_conversion]\n\n// include::{chapters}extensions/VK_KHR_sampler_ycbcr_conversion.adoc[]\n\n== link:https://www.khronos.org/blog/vulkan-timeline-semaphores[VK_KHR_timeline_semaphore]\n\n== link:https://www.khronos.org/blog/streamlining-render-passes[VK_KHR_dynamic_rendering]\n\n== xref:{chapters}extensions/VK_KHR_shader_subgroup_uniform_control_flow.adoc[VK_KHR_shader_subgroup_uniform_control_flow]\n\n// include::{chapters}extensions/VK_KHR_shader_subgroup_uniform_control_flow.adoc[]\n\n= link:CONTRIBUTING.adoc[Contributing]\n\n= link:LICENSE[License]\n\n= link:CODE_OF_CONDUCT.adoc[Code of conduct]\n","funding_links":[],"categories":["Graphic Libraries \u0026 Renderers","Hardware APIs","Document"],"sub_categories":["Data Management","Vulkan"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKhronosGroup%2FVulkan-Guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKhronosGroup%2FVulkan-Guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKhronosGroup%2FVulkan-Guide/lists"}