summaryrefslogtreecommitdiff
path: root/chapters/commonvalidity/copy_buffer_to_image_common.adoc
blob: 38bbd150e7d7794f5dd9f1fe75a5636e2b431d67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Copyright 2020-2023 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// Common Valid Usage
// Common to vkCmdCopyBufferToImage* commands
  * [[VUID-{refpage}-pRegions-00171]]
    pname:srcBuffer must: be large enough to contain all buffer locations
    that are accessed according to <<copies-buffers-images-addressing,Buffer
    and Image Addressing>>, for each element of pname:pRegions
  * [[VUID-{refpage}-pRegions-00173]]
    The union of all source regions, and the union of all destination
    regions, specified by the elements of pname:pRegions, must: not overlap
    in memory
  * [[VUID-{refpage}-srcBuffer-00174]]
    pname:srcBuffer must: have been created with
    ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
  * [[VUID-{refpage}-dstImage-01997]]
    The <<resources-image-format-features,format features>> of
    pname:dstImage must: contain ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
  * [[VUID-{refpage}-srcBuffer-00176]]
    If pname:srcBuffer is non-sparse then it must: be bound completely and
    contiguously to a single sname:VkDeviceMemory object
  * [[VUID-{refpage}-dstImage-00177]]
    pname:dstImage must: have been created with
    ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
  * [[VUID-{refpage}-dstImageLayout-00180]]
    pname:dstImageLayout must: specify the layout of the image subresources
    of pname:dstImage specified in pname:pRegions at the time this command
    is executed on a sname:VkDevice
ifndef::VK_KHR_shared_presentable_image[]
  * [[VUID-{refpage}-dstImageLayout-00181]]
    pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
    or ename:VK_IMAGE_LAYOUT_GENERAL
endif::VK_KHR_shared_presentable_image[]
ifdef::VK_KHR_shared_presentable_image[]
  * [[VUID-{refpage}-dstImageLayout-01396]]
    pname:dstImageLayout must: be
    ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
    ename:VK_IMAGE_LAYOUT_GENERAL, or
    ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
endif::VK_KHR_shared_presentable_image[]
ifndef::VK_EXT_depth_range_unrestricted[]
  * [[VUID-{refpage}-None-00214]]
    For each element of pname:pRegions whose pname:imageSubresource contains
    a depth aspect, the data in pname:srcBuffer must: be in the range
    [eq]#[0,1]#
endif::VK_EXT_depth_range_unrestricted[]
ifdef::VK_EXT_depth_range_unrestricted[]
  * [[VUID-{refpage}-pRegions-07931]]
    If apiext:VK_EXT_depth_range_unrestricted is not enabled, for each
    element of pname:pRegions whose pname:imageSubresource contains a depth
    aspect, the data in pname:srcBuffer must: be in the range [eq]#[0,1]#
endif::VK_EXT_depth_range_unrestricted[]
// Common Valid Usage