// Copyright (c) 2016-2020 Advanced Micro Devices, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
    2016-08-23
*Interactions and External Dependencies*::
  - Promoted to `apiext:VK_KHR_draw_indirect_count`
*IP Status*::
    No known IP claims.
*Contributors*::
  - Matthaeus G. Chajdas, AMD
  - Derrick Owens, AMD
  - Graham Sellers, AMD
  - Daniel Rakos, AMD
  - Dominik Witczak, AMD

=== Description

This extension allows an application to source the number of draws for
indirect drawing commands from a buffer.
This enables applications to generate an arbitrary number of drawing
commands and execute them without host intervention.

=== Promotion to `VK_KHR_draw_indirect_count`

All functionality in this extension is included in
`apiext:VK_KHR_draw_indirect_count`, with the suffix changed to KHR.
The original type, enum and command names are still available as aliases of
the core functionality.

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

=== Version History

 * Revision 2, 2016-08-23 (Dominik Witczak)
   - Minor fixes
 * Revision 1, 2016-07-21 (Matthaeus Chajdas)
   - Initial draft
