// Copyright 2014-2024 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[]

// Video Coding
ifdef::VK_KHR_video_queue[]
include::{chapters}/videocoding.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::[]
