// Copyright 2023-2024 The Khronos Group, Inc
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
    2023-09-18
*Contributors*::
  - Daniel Story, Nintendo
  - Peter Kohaut, NVIDIA
  - Shahbaz Youssefi, Google
  - Slawomir Grajewski, Intel
  - Stu Smith, AMD

=== Description

With core Vulkan it is not legal to call flink:vkCmdExecuteCommands when
recording a secondary command buffer.
This extension relaxes that restriction, allowing secondary command buffers
to execute other secondary command buffers.

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

=== Issues

1) The Command Buffer Levels property for the Vulkan commands comes from the
`cmdbufferlevel` attribute in `vk.xml` for the command, and it is currently
not possible to modify this attribute based on whether an extension is
enabled.
For this extension we want the `cmdbufferlevel` attribute for
vkCmdExecuteCommands to be `primary,secondary` when this extension is
enabled and `primary` otherwise.

*RESOLVED*: The `cmdbufferlevel` attribute for flink:vkCmdExecuteCommands
has been changed to `primary,secondary` and a new VUID added to prohibit
recording this command in a secondary command buffer unless this extension
is enabled.

=== Version History

  * Revision 1, 2023-09-18 (Piers Daniell)
  ** Internal revisions
