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

// Common Valid Usage
// Common to VkBufferImageCopy* struct
  * [[VUID-{refpage}-bufferRowLength-00195]]
    pname:bufferRowLength must: be `0`, or greater than or equal to the
    pname:width member of pname:imageExtent
  * [[VUID-{refpage}-bufferImageHeight-00196]]
    pname:bufferImageHeight must: be `0`, or greater than or equal to the
    pname:height member of pname:imageExtent
  * [[VUID-{refpage}-aspectMask-00212]]
    The pname:aspectMask member of pname:imageSubresource must: only have a
    single bit set
// Common Valid Usage
