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

include::{generated}/meta/{refprefix}VK_EXT_multi_draw.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
    2021-05-19
*Interactions and External Dependencies*::
  - Interacts with Vulkan 1.1.
  - Interacts with `apiext:VK_KHR_shader_draw_parameters`.
*IP Status*::
    No known IP claims.
*Contributors*::
  - Mike Blumenkrantz, VALVE
  - Piers Daniell, NVIDIA
  - Faith Ekstrand, INTEL
  - Spencer Fricke, SAMSUNG
  - Ricardo Garcia, IGALIA
  - Jon Leech, KHRONOS
  - Stu Smith, AMD

=== Description

Processing multiple draw commands in sequence incurs measurable overhead
within drivers due to repeated state checks and updates during dispatch.
This extension enables passing the entire sequence of draws directly to the
driver in order to avoid any such overhead, using an array of
slink:VkMultiDrawInfoEXT or slink:VkMultiDrawIndexedInfoEXT structs with
fname:vkCmdDrawMultiEXT or fname:vkCmdDrawMultiIndexedEXT, respectively.
These functions could be used any time multiple draw commands are being
recorded without any state changes between them in order to maximize
performance.

include::{generated}/interfaces/VK_EXT_multi_draw.adoc[]

=== New or Modified Built-In Variables

  * (modified)code:DrawIndex

=== Version History

  * Revision 1, 2021-01-20 (Mike Blumenkrantz)
  ** Initial version
