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

include::{generated}/meta/{refprefix}VK_KHR_draw_indirect_count.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2017-08-25
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
*IP Status*::
    No known IP claims.
*Contributors*::
  - Matthaeus G. Chajdas, AMD
  - Derrick Owens, AMD
  - Graham Sellers, AMD
  - Daniel Rakos, AMD
  - Dominik Witczak, AMD
  - Piers Daniell, NVIDIA

=== Description

This extension is based off the `apiext:VK_AMD_draw_indirect_count`
extension.
This extension allows an application to source the number of draws for
indirect draw calls from a buffer.

Applications might want to do culling on the GPU via a compute shader prior
to drawing.
This enables the application to generate an arbitrary number of drawing
commands and execute them without host intervention.

=== Promotion to Vulkan 1.2

All functionality in this extension is included in core Vulkan 1.2, with the
KHR suffix omitted.
However, if Vulkan 1.2 is supported and this extension is not, the entry
points flink:vkCmdDrawIndirectCount and flink:vkCmdDrawIndexedIndirectCount
are optional.
The original type, enum and command names are still available as aliases of
the core functionality.

include::{generated}/interfaces/VK_KHR_draw_indirect_count.txt[]

=== Version History

 * Revision 1, 2017-08-25 (Piers Daniell)
   - Initial draft based off VK_AMD_draw_indirect_count
