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

// Common Valid Usage
// Common to non-indirect drawing commands
ifdef::VK_VERSION_1_1[]
  * [[VUID-{refpage}-commandBuffer-02712]]
    If pname:commandBuffer is a protected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    any resource written to by the sname:VkPipeline object bound to the
    pipeline bind point used by this command must: not be an unprotected
    resource
  * [[VUID-{refpage}-commandBuffer-02713]]
    If pname:commandBuffer is a protected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    pipeline stages other than the framebuffer-space and compute stages in
    the sname:VkPipeline object bound to the pipeline bind point used by
    this command must: not write to any resource
  * [[VUID-{refpage}-commandBuffer-04617]]
    If any of the shader stages of the sname:VkPipeline bound to the
    pipeline bind point used by this command uses the
    <<spirvenv-capabilities-table-RayQueryKHR,RayQueryKHR>> capability, then
    pname:commandBuffer must: not be a protected command buffer
endif::VK_VERSION_1_1[]
// Common Valid Usage
