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

// Common Valid Usage
// Common to VkCmdCopyBufferToImage* command buffer
ifdef::VK_VERSION_1_1[]
  * [[VUID-{refpage}-commandBuffer-01828]]
    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-01829]]
    If pname:commandBuffer is an unprotected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    pname:dstImage must: not be a protected image
  * [[VUID-{refpage}-commandBuffer-01830]]
    If pname:commandBuffer is a protected command buffer and
    <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
    pname:dstImage must: not be an unprotected image
endif::VK_VERSION_1_1[]
// Common Valid Usage
