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

// Common Valid Usage
// Common to VkCmdCopyBuffer* command buffer
ifdef::VK_VERSION_1_1[]
  * [[VUID-{refpage}-commandBuffer-01822]]
    If pname:commandBuffer is an unprotected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    pname:srcBuffer must: not be a protected buffer
  * [[VUID-{refpage}-commandBuffer-01823]]
    If pname:commandBuffer is an unprotected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    pname:dstBuffer must: not be a protected buffer
  * [[VUID-{refpage}-commandBuffer-01824]]
    If pname:commandBuffer is a protected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    pname:dstBuffer must: not be an unprotected buffer
endif::VK_VERSION_1_1[]
// Common Valid Usage
