// Copyright 2014-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// :regtitle: is explained in
// http://discuss.asciidoctor.org/How-to-add-markup-to-author-information-in-document-title-td6488.html
= Vulkan^®^ {revnumber} - A Specification {apititle}
:regtitle: pass:q,r[^®^]
The Khronos{regtitle} Vulkan Working Group
:data-uri:
:icons: font
:toc2:
:toclevels: 2
:max-width: 100%
:numbered:
:source-highlighter: coderay
// Various special / math symbols. This is easier to edit with than Unicode.
include::config/attribs.txt[]

// Table of contents is inserted here
toc::[]

:leveloffset: 1

<<<<

[[preamble]]
= Preamble

include::copyright-spec.txt[]

:test: 0
ifeval::["{test}"=="1"]

// Include or insert trivial test markup here, to bypass building full spec
// include::chapters/textest.txt[]

include::chapters/introduction.txt[]

endif::[]

ifeval::["{test}"!="1"]
include::chapters/introduction.txt[]

include::chapters/fundamentals.txt[]

include::chapters/initialization.txt[]

include::chapters/devsandqueues.txt[]

include::chapters/cmdbuffers.txt[]

include::chapters/synchronization.txt[]

include::chapters/renderpass.txt[]

include::chapters/shaders.txt[]

include::chapters/pipelines.txt[]

include::chapters/memory.txt[]

include::chapters/resources.txt[]

include::chapters/samplers.txt[]

include::chapters/descriptorsets.txt[]

include::chapters/interfaces.txt[]

include::chapters/textures.txt[]

ifdef::VK_EXT_fragment_density_map[]
include::chapters/fragmentdensitymapops.txt[]
endif::VK_EXT_fragment_density_map[]

include::chapters/queries.txt[]

// Transfer operations
include::chapters/clears.txt[]

include::chapters/copies.txt[]

// Graphics Operations
include::chapters/drawing.txt[]

include::chapters/fxvertex.txt[]

include::chapters/tessellation.txt[]

include::chapters/geometry.txt[]

ifdef::VK_NV_mesh_shader[]
include::chapters/VK_NV_mesh_shader/mesh.txt[]
endif::VK_NV_mesh_shader[]

include::chapters/vertexpostproc.txt[]

include::chapters/primsrast.txt[]

include::chapters/fragops.txt[]

include::chapters/framebuffer.txt[]

// Compute
include::chapters/dispatch.txt[]

// Device Generated Commands
ifdef::VK_NV_device_generated_commands[]
include::chapters/VK_NV_device_generated_commands/generatedcommands.txt[]
endif::VK_NV_device_generated_commands[]

// Sparse
include::chapters/sparsemem.txt[]

ifdef::VK_KHR_surface[]
include::chapters/VK_KHR_surface/wsi.txt[]
endif::VK_KHR_surface[]

// Deferred host ops
ifdef::VK_KHR_deferred_host_operations[]
include::chapters/VK_KHR_deferred_host_operations/deferred_host_operations.txt[]
endif::VK_KHR_deferred_host_operations[]

// Private data
ifdef::VK_EXT_private_data[]
include::chapters/VK_EXT_private_data.txt[]
endif::VK_EXT_private_data[]

// Acceleration structures
ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
include::chapters/accelstructures.txt[]
endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]

// Ray traversal
ifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_ray_query[]
include::chapters/raytraversal.txt[]
endif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_ray_query[]

// Ray tracing
ifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]
include::chapters/raytracing.txt[]
endif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]

// Vulkan Video extensions
ifdef::VK_KHR_video_queue[]
include::chapters/video_extensions.txt[]
endif::VK_KHR_video_queue[]

ifdef::VK_KHR_video_decode_queue[]
include::chapters/video_decode_extensions.txt[]
endif::VK_KHR_video_decode_queue[]

ifdef::VK_EXT_video_decode_h264[]
include::chapters/video_decode_h264_extensions.txt[]
endif::VK_EXT_video_decode_h264[]

ifdef::VK_EXT_video_decode_h265[]
include::chapters/video_decode_h265_extensions.txt[]
endif::VK_EXT_video_decode_h265[]

ifdef::VK_KHR_video_encode_queue[]
include::chapters/video_encode_extensions.txt[]
endif::VK_KHR_video_encode_queue[]

ifdef::VK_EXT_video_encode_h264[]
include::chapters/video_encode_h264_extensions.txt[]
endif::VK_EXT_video_encode_h264[]

// Sort of an appendix
include::chapters/extensions.txt[]

include::chapters/features.txt[]

include::chapters/limits.txt[]

include::chapters/formats.txt[]

include::chapters/capabilities.txt[]

include::chapters/debugging.txt[]

// Appendices
:numbered!:

include::appendices/spirvenv.txt[]

ifdef::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
include::appendices/memorymodel.txt[]
endif::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]

include::appendices/compressedtex.txt[]

include::appendices/versions.txt[]

// Extension appendices are now included from extensions.txt
include::appendices/extensions.txt[]

include::appendices/boilerplate.txt[]

include::appendices/invariance.txt[]

include::appendices/glossary.txt[]

include::appendices/credits.txt[]

endif::[]
