87 lines
4.2 KiB
Plaintext
87 lines
4.2 KiB
Plaintext
|
VkImageLayout(3)
|
||
|
================
|
||
|
|
||
|
Name
|
||
|
----
|
||
|
VkImageLayout - Specifies what layout an image object (or a sub-range of it) is in.
|
||
|
|
||
|
C Specification
|
||
|
---------------
|
||
|
|
||
|
include::../enums/VkImageLayout.txt[]
|
||
|
|
||
|
Constants
|
||
|
---------
|
||
|
|
||
|
VK_IMAGE_LAYOUT_UNDEFINED::
|
||
|
The contents of images (or a sub-range of it) in this layout are undefined. +
|
||
|
This is the layout all images are assumed to be in right after creation, or when their memory
|
||
|
binding is changed. +
|
||
|
Any operation performed on an image sub-range in this layout leaves the contents of it undefined.
|
||
|
Applications need to transition an image sub-range to another layout before being able to perform
|
||
|
any operations on it that should result in defined contents.
|
||
|
|
||
|
VK_IMAGE_LAYOUT_GENERAL::
|
||
|
An image (or a sub-range of it) in this layout allows all operations to be performed on the image
|
||
|
sub-range that is otherwise permitted by the usage flags the image object was created with (see
|
||
|
elink:VkImageUsageFlags for more detail).
|
||
|
|
||
|
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL::
|
||
|
An image (or a sub-range of it) in this layout can only be used as a framebuffer color attachment
|
||
|
and as such can only be accessed through framebuffer color reads and writes resulting from the
|
||
|
issuing of draw commands, fname:vkCmdClearAttachments, and through clearing writes resulting from the use of
|
||
|
the ename:VK_ATTACHMENT_LOAD_OP_CLEAR framebuffer attachment load operation.
|
||
|
|
||
|
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL::
|
||
|
An image (or a sub-range of it) in this layout can only be used as a framebuffer depth/stencil
|
||
|
attachment and as such can only be accessed through framebuffer depth/stencil reads and writes
|
||
|
resulting from the issuing of draw commands, fname:vkCmdClearAttachments, and through clearing writes resulting from the use of
|
||
|
the ename:VK_ATTACHMENT_LOAD_OP_CLEAR framebuffer attachment load operation.
|
||
|
|
||
|
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL::
|
||
|
An image (or a sub-range of it) in this layout can only be used as a read-only framebuffer
|
||
|
depth/stencil attachment and as such can only be accessed through framebuffer depth/stencil reads
|
||
|
resulting from the issuing of draw commands, and through shader reads done via a sampled image
|
||
|
descriptor, combined image sampler descriptor, or read-only storage image descriptor (see
|
||
|
elink:VkDescriptorType for more detail).
|
||
|
|
||
|
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL::
|
||
|
An image (or a sub-range of it) in this layout can only be used as a read-only shader resource and
|
||
|
as such can only be accessed by shader reads done via a sampled image descriptor, combined image
|
||
|
sampler descriptor, or read-only storage image descriptor (see elink:VkDescriptorType for more detail).
|
||
|
|
||
|
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL::
|
||
|
An image (or a sub-range of it) in this layout can only be used as the source operand of the
|
||
|
commands flink:vkCmdCopyImage, flink:vkCmdBlitImage, flink:vkCmdCopyImageToBuffer,
|
||
|
and flink:vkCmdResolveImage.
|
||
|
|
||
|
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL::
|
||
|
An image (or a sub-range of it) in this layout can only be used as the destination operand of the
|
||
|
commands flink:vkCmdCopyImage, flink:vkCmdBlitImage, flink:vkCmdCopyBufferToImage, flink:vkCmdResolveImage,
|
||
|
flink:vkCmdClearColorImage, and flink:vkCmdClearDepthStencilImage.
|
||
|
|
||
|
Description
|
||
|
-----------
|
||
|
|
||
|
The constants of this enumeration are used to identify the layout an image object (or a sub-range of it)
|
||
|
is expected to be in at any given time, or used to specify the destination layout an image sub-range
|
||
|
should be transitioned to as the result of an image memory barrier (see slink:VkImageMemoryBarrier for more
|
||
|
details).
|
||
|
|
||
|
Performing any operation on an image sub-range that isn't permitted by the layout the image sub-range is
|
||
|
currently in is undefined.
|
||
|
|
||
|
If any operation tries to read from an image sub-range that isn't in the expected image layout results
|
||
|
in undefined data to be returned as the result of the read.
|
||
|
|
||
|
If any operation tries to write to or perform an atomic operation on an image sub-range that isn't in the
|
||
|
expected image layout results in the contents of the whole image to become undefined, i.e. the whole image
|
||
|
is logically transitioned to the ename:VK_IMAGE_LAYOUT_UNDEFINED layout.
|
||
|
|
||
|
See Also
|
||
|
--------
|
||
|
|
||
|
slink:VkImageMemoryBarrier
|
||
|
|
||
|
include::footer.txt[]
|