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

// Core versions and extensions to enable
// Must be included before the header and attribs.adoc
include::{generated}/specattribs.adoc[]

// Define titles and title logos for either Vulkan or Vulkan SC
ifdef::VKSC_VERSION_1_0[]
:DocTitle: Vulkan^®^ {SC} {revnumber} - A Specification {apititle} : Based on Vulkan {baserevnumber}
:SC: SC
:VulkanLogo: vulkansc-unscaled.svg
:LogoDir: vulkansc
endif::VKSC_VERSION_1_0[]
ifndef::VKSC_VERSION_1_0[]
:DocTitle: Vulkan^®^ {revnumber} - A Specification {apititle}
:SC:
:VulkanLogo: vulkan2-unscaled.svg
:LogoDir: vulkan
endif::VKSC_VERSION_1_0[]

// :regtitle: is explained in
// https://discuss.asciidoctor.org/How-to-add-markup-to-author-information-in-document-title-td6488.html

= {DocTitle}
:regtitle: pass:q,r[^®^]
The Khronos{regtitle} Vulkan {SC} Working Group
:data-uri:
:icons: font
:toc2:
:toclevels: 2
:numbered:
:source-highlighter: rouge
:rouge-style: github
:docinfo: shared-header
:docinfodir: {config}/{LogoDir}
:title-logo-image: image:{images}/{VulkanLogo}[top="25%"]
:attribute-missing: warn

// Various special / math symbols. This is easier to edit with than Unicode.
include::{config}/attribs.adoc[]

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

:leveloffset: 1

<<<<

// Preamble "chapter"

include::{chapters}/preamble.adoc[]

// Actual chapters

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

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

include::{chapters}/introduction.adoc[]

endif::[]

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

include::{chapters}/fundamentals.adoc[]

include::{chapters}/initialization.adoc[]

include::{chapters}/devsandqueues.adoc[]

include::{chapters}/cmdbuffers.adoc[]

include::{chapters}/synchronization.adoc[]

include::{chapters}/renderpass.adoc[]

include::{chapters}/shaders.adoc[]

include::{chapters}/pipelines.adoc[]

include::{chapters}/memory.adoc[]

include::{chapters}/resources.adoc[]

include::{chapters}/samplers.adoc[]

include::{chapters}/descriptorsets.adoc[]

include::{chapters}/interfaces.adoc[]

include::{chapters}/textures.adoc[]

ifdef::VK_EXT_fragment_density_map[]
include::{chapters}/fragmentdensitymapops.adoc[]
endif::VK_EXT_fragment_density_map[]

include::{chapters}/queries.adoc[]

// Transfer operations
include::{chapters}/clears.adoc[]

include::{chapters}/copies.adoc[]

// Graphics Operations
include::{chapters}/drawing.adoc[]

include::{chapters}/fxvertex.adoc[]

include::{chapters}/tessellation.adoc[]

include::{chapters}/geometry.adoc[]

ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
include::{chapters}/VK_NV_mesh_shader/mesh.adoc[]
endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[]

ifdef::VK_HUAWEI_cluster_culling_shader[]
include::{chapters}/VK_HUAWEI_cluster_culling_shader/clusterculling.adoc[]
endif::VK_HUAWEI_cluster_culling_shader[]

include::{chapters}/vertexpostproc.adoc[]

include::{chapters}/primsrast.adoc[]

include::{chapters}/fragops.adoc[]

include::{chapters}/framebuffer.adoc[]

// Compute
include::{chapters}/dispatch.adoc[]

// Device Generated Commands
ifdef::VK_NV_device_generated_commands[]
include::{chapters}/VK_NV_device_generated_commands/generatedcommands.adoc[]
endif::VK_NV_device_generated_commands[]

// Sparse
include::{chapters}/sparsemem.adoc[]

ifdef::VK_KHR_surface[]
include::{chapters}/VK_KHR_surface/wsi.adoc[]
endif::VK_KHR_surface[]

// Deferred host ops
ifdef::VK_KHR_deferred_host_operations[]
include::{chapters}/VK_KHR_deferred_host_operations/deferred_host_operations.adoc[]
endif::VK_KHR_deferred_host_operations[]

// Private data
ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
include::{chapters}/VK_EXT_private_data.adoc[]
endif::VK_VERSION_1_3,VK_EXT_private_data[]

// Acceleration structures
ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
include::{chapters}/accelstructures.adoc[]
endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]

// Micromaps
ifdef::VK_EXT_opacity_micromap[]
include::{chapters}/VK_EXT_opacity_micromap/micromaps.adoc[]
endif::VK_EXT_opacity_micromap[]

// Ray traversal
ifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_ray_query[]
include::{chapters}/raytraversal.adoc[]
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.adoc[]
endif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]

// Memory Decompression
ifdef::VK_NV_memory_decompression[]
include::{chapters}/VK_NV_memory_decompression.adoc[]
endif::VK_NV_memory_decompression[]

// Vulkan Video extensions
ifdef::VK_KHR_video_queue[]
include::{chapters}/video_extensions.adoc[]
endif::VK_KHR_video_queue[]

ifdef::VK_NV_optical_flow[]
include::{chapters}/VK_NV_optical_flow/optical_flow.adoc[]
endif::VK_NV_optical_flow[]

ifdef::VK_AMDX_shader_enqueue[]
include::{chapters}/executiongraphs.adoc[]
endif::VK_AMDX_shader_enqueue[]

ifdef::VK_NV_low_latency2[]
include::{chapters}/VK_NV_low_latency2/low_latency2.adoc[]
endif::VK_NV_low_latency2[]

// Sort of an appendix
include::{chapters}/extensions.adoc[]

include::{chapters}/features.adoc[]

include::{chapters}/limits.adoc[]

include::{chapters}/formats.adoc[]

include::{chapters}/capabilities.adoc[]

include::{chapters}/debugging.adoc[]

// Appendices
:numbered!:

include::{appendices}/spirvenv.adoc[]

ifdef::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
include::{appendices}/memorymodel.adoc[]
endif::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]

include::{appendices}/compressedtex.adoc[]

include::{appendices}/versions.adoc[]

// Extension appendices are now included from extensions.adoc
include::{appendices}/extensions.adoc[]

ifdef::VK_VERSION_1_3[]
include::{appendices}/roadmap.adoc[]
endif::VK_VERSION_1_3[]

include::{appendices}/boilerplate.adoc[]

include::{appendices}/invariance.adoc[]

ifdef::VKSC_VERSION_1_0[]
include::{appendices}/vulkanscdeviations.adoc[]
endif::VKSC_VERSION_1_0[]

include::{appendices}/glossary.adoc[]

include::{appendices}/credits.adoc[]

endif::[]
