Class VkHostImageLayoutTransitionInfo
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
- Direct Known Subclasses:
VkHostImageLayoutTransitionInfoEXT
Description
vkTransitionImageLayout does not check whether the device memory associated with an image is currently in use before performing the layout transition. The application must guarantee that any previously submitted command that reads from or writes to this subresource has completed before the host performs the layout transition. The memory of image is accessed by the host as if coherent.
Note
Image layout transitions performed on the host do not require queue family ownership transfers as the physical layout of the image will not vary between queue families for the layouts supported by this function.
Note
If the device has written to the image memory, it is not automatically made available to the host. Before this command can be called, a memory barrier for this image must have been issued on the device with the second synchronization scope including PIPELINE_STAGE_HOST_BIT and ACCESS_HOST_READ_BIT.
Because queue submissions automatically make host memory visible to the device, there would not be a need for a memory barrier before using the results of this layout transition on the device.
Valid Usage
imagemust have been created withIMAGE_USAGE_HOST_TRANSFER_BIT
subresourceRange.baseMipLevelmust be less than themipLevelsspecified inVkImageCreateInfowhenimagewas created- If
subresourceRange.levelCountis notREMAINING_MIP_LEVELS,subresourceRange.baseMipLevel + subresourceRange.levelCountmust be less than or equal to themipLevelsspecified inVkImageCreateInfowhenimagewas created subresourceRange.baseArrayLayermust be less than thearrayLayersspecified inVkImageCreateInfowhenimagewas created- If
subresourceRange.layerCountis notREMAINING_ARRAY_LAYERS,subresourceRange.baseArrayLayer + subresourceRange.layerCountmust be less than or equal to thearrayLayersspecified inVkImageCreateInfowhenimagewas created - If
imageis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject - If
imagehas a color format that is single-plane, then theaspectMaskmember ofsubresourceRangemust beIMAGE_ASPECT_COLOR_BIT - If
imagehas a color format and is not disjoint, then theaspectMaskmember ofsubresourceRangemust beIMAGE_ASPECT_COLOR_BIT - If
imagehas a multi-planar format and the image is disjoint, then theaspectMaskmember ofsubresourceRangemust include at least one multi-planar aspect mask bit orIMAGE_ASPECT_COLOR_BIT - If
imagehas a depth/stencil format with both depth and stencil and theseparateDepthStencilLayoutsfeature is not enabled, then theaspectMaskmember ofsubresourceRangemust include bothIMAGE_ASPECT_DEPTH_BITandIMAGE_ASPECT_STENCIL_BIT - If
imagehas a depth/stencil format with both depth and stencil and theseparateDepthStencilLayoutsfeature is enabled, then theaspectMaskmember ofsubresourceRangemust include either or bothIMAGE_ASPECT_DEPTH_BITandIMAGE_ASPECT_STENCIL_BIT - If the
aspectMaskmember ofsubresourceRangeincludesIMAGE_ASPECT_DEPTH_BIT,oldLayoutandnewLayoutmust not be one ofIMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMALorIMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL - If the
aspectMaskmember ofsubresourceRangeincludesIMAGE_ASPECT_STENCIL_BIT,oldLayoutandnewLayoutmust not be one ofIMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMALorIMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL subresourceRange.aspectMaskmust be valid for theformattheimagewas created witholdLayoutmust be eitherIMAGE_LAYOUT_UNDEFINEDor the current layout of the image subresources as specified insubresourceRange- If
oldLayoutis notIMAGE_LAYOUT_UNDEFINEDorIMAGE_LAYOUT_PREINITIALIZED, it must be one of the layouts inVkPhysicalDeviceHostImageCopyProperties::pCopySrcLayouts newLayoutmust be one of the layouts inVkPhysicalDeviceHostImageCopyProperties::pCopyDstLayouts
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFOpNextmust beNULLimagemust be a validVkImagehandleoldLayoutmust be a validVkImageLayoutvaluenewLayoutmust be a validVkImageLayoutvaluesubresourceRangemust be a validVkImageSubresourceRangestructure
See Also
VkImageSubresourceRange, TransitionImageLayout, TransitionImageLayoutEXT
Layout
struct VkHostImageLayoutTransitionInfo {
VkStructureType sType();
void const * pNext();
VkImage image();
VkImageLayout oldLayout();
VkImageLayout newLayout();
VkImageSubresourceRange subresourceRange();
}-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn array ofVkHostImageLayoutTransitionInfostructs.Nested classes/interfaces inherited from class org.lwjgl.system.Struct
org.lwjgl.system.Struct.StructValidationNested classes/interfaces inherited from interface org.lwjgl.system.Pointer
org.lwjgl.system.Pointer.Default -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe struct alignment in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct size in bytes.static final intThe struct member offsets.static final intThe struct member offsets.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionVkHostImageLayoutTransitionInfo(ByteBuffer container) Creates aVkHostImageLayoutTransitionInfoinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptioncalloc()Returns a newVkHostImageLayoutTransitionInfoinstance allocated withmemCalloc.calloc(int capacity) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated withmemCalloc.calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.calloc(org.lwjgl.system.MemoryStack stack) Returns a newVkHostImageLayoutTransitionInfoinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.create()Returns a newVkHostImageLayoutTransitionInfoinstance allocated withBufferUtils.create(int capacity) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated withBufferUtils.create(long address) Returns a newVkHostImageLayoutTransitionInfoinstance for the specified memory address.create(long address, int capacity) Create aVkHostImageLayoutTransitionInfo.Bufferinstance at the specified memory.static @Nullable VkHostImageLayoutTransitionInfocreateSafe(long address) static @Nullable VkHostImageLayoutTransitionInfo.BuffercreateSafe(long address, int capacity) longimage()a handle to the image affected by this layout transition.image(long value) Sets the specified value to theimage()field.malloc()Returns a newVkHostImageLayoutTransitionInfoinstance allocated withmemAlloc.malloc(int capacity) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated withmemAlloc.malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated on the specifiedMemoryStack.malloc(org.lwjgl.system.MemoryStack stack) Returns a newVkHostImageLayoutTransitionInfoinstance allocated on the specifiedMemoryStack.intthe new layout in an image layout transition.newLayout(int value) Sets the specified value to thenewLayout()field.static longnimage(long struct) Unsafe version ofimage().static voidnimage(long struct, long value) Unsafe version ofimage.static intnnewLayout(long struct) Unsafe version ofnewLayout().static voidnnewLayout(long struct, int value) Unsafe version ofnewLayout.static intnoldLayout(long struct) Unsafe version ofoldLayout().static voidnoldLayout(long struct, int value) Unsafe version ofoldLayout.static longnpNext(long struct) Unsafe version ofpNext().static voidnpNext(long struct, long value) Unsafe version ofpNext.static intnsType(long struct) Unsafe version ofsType().static voidnsType(long struct, int value) Unsafe version ofsType.static VkImageSubresourceRangensubresourceRange(long struct) Unsafe version ofsubresourceRange().static voidnsubresourceRange(long struct, VkImageSubresourceRange value) Unsafe version ofsubresourceRange.intthe old layout in an image layout transition.oldLayout(int value) Sets the specified value to theoldLayout()field.longpNext()NULLor a pointer to a structure extending this structure.pNext(long value) Sets the specified value to thepNext()field.set(int sType, long pNext, long image, int oldLayout, int newLayout, VkImageSubresourceRange subresourceRange) Initializes this struct with the specified values.Copies the specified struct data to this struct.intsizeof()intsType()aVkStructureTypevalue identifying this structure.sType(int value) Sets the specified value to thesType()field.Sets theSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFOvalue to thesType()field.describes the image subresource range withinimagethat is affected by this layout transition.subresourceRange(Consumer<VkImageSubresourceRange> consumer) Passes thesubresourceRange()field to the specifiedConsumer.Copies the specifiedVkImageSubresourceRangeto thesubresourceRange()field.Methods inherited from class org.lwjgl.system.Struct
clear, free, isNull, validate, validateMethods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toStringMethods inherited from interface org.lwjgl.system.NativeResource
close, free
-
Field Details
-
SIZEOF
public static final int SIZEOFThe struct size in bytes. -
ALIGNOF
public static final int ALIGNOFThe struct alignment in bytes. -
STYPE
public static final int STYPEThe struct member offsets. -
PNEXT
public static final int PNEXTThe struct member offsets. -
IMAGE
public static final int IMAGEThe struct member offsets. -
OLDLAYOUT
public static final int OLDLAYOUTThe struct member offsets. -
NEWLAYOUT
public static final int NEWLAYOUTThe struct member offsets. -
SUBRESOURCERANGE
public static final int SUBRESOURCERANGEThe struct member offsets.
-
-
Constructor Details
-
VkHostImageLayoutTransitionInfo
Creates aVkHostImageLayoutTransitionInfoinstance at the current position of the specifiedByteBuffercontainer. Changes to the buffer's content will be visible to the struct instance and vice versa.The created instance holds a strong reference to the container object.
-
-
Method Details
-
sizeof
public int sizeof()- Specified by:
sizeofin classorg.lwjgl.system.Struct<VkHostImageLayoutTransitionInfo>
-
sType
public int sType()aVkStructureTypevalue identifying this structure. -
pNext
public long pNext()NULLor a pointer to a structure extending this structure. -
image
public long image()a handle to the image affected by this layout transition. -
oldLayout
public int oldLayout()the old layout in an image layout transition. -
newLayout
public int newLayout()the new layout in an image layout transition. -
subresourceRange
describes the image subresource range withinimagethat is affected by this layout transition. -
sType
Sets the specified value to thesType()field. -
sType$Default
Sets theSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFOvalue to thesType()field. -
pNext
Sets the specified value to thepNext()field. -
image
Sets the specified value to theimage()field. -
oldLayout
Sets the specified value to theoldLayout()field. -
newLayout
Sets the specified value to thenewLayout()field. -
subresourceRange
Copies the specifiedVkImageSubresourceRangeto thesubresourceRange()field. -
subresourceRange
Passes thesubresourceRange()field to the specifiedConsumer. -
set
public VkHostImageLayoutTransitionInfo set(int sType, long pNext, long image, int oldLayout, int newLayout, VkImageSubresourceRange subresourceRange) Initializes this struct with the specified values. -
set
Copies the specified struct data to this struct.- Parameters:
src- the source struct- Returns:
- this struct
-
malloc
Returns a newVkHostImageLayoutTransitionInfoinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkHostImageLayoutTransitionInfoinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkHostImageLayoutTransitionInfoinstance allocated withBufferUtils. -
create
Returns a newVkHostImageLayoutTransitionInfoinstance for the specified memory address. -
createSafe
-
malloc
Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aVkHostImageLayoutTransitionInfo.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
public static @Nullable VkHostImageLayoutTransitionInfo.Buffer createSafe(long address, int capacity) -
malloc
Returns a newVkHostImageLayoutTransitionInfoinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newVkHostImageLayoutTransitionInfoinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
public static VkHostImageLayoutTransitionInfo.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
public static VkHostImageLayoutTransitionInfo.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkHostImageLayoutTransitionInfo.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
nsType
public static int nsType(long struct) Unsafe version ofsType(). -
npNext
public static long npNext(long struct) Unsafe version ofpNext(). -
nimage
public static long nimage(long struct) Unsafe version ofimage(). -
noldLayout
public static int noldLayout(long struct) Unsafe version ofoldLayout(). -
nnewLayout
public static int nnewLayout(long struct) Unsafe version ofnewLayout(). -
nsubresourceRange
Unsafe version ofsubresourceRange(). -
nsType
public static void nsType(long struct, int value) Unsafe version ofsType. -
npNext
public static void npNext(long struct, long value) Unsafe version ofpNext. -
nimage
public static void nimage(long struct, long value) Unsafe version ofimage. -
noldLayout
public static void noldLayout(long struct, int value) Unsafe version ofoldLayout. -
nnewLayout
public static void nnewLayout(long struct, int value) Unsafe version ofnewLayout. -
nsubresourceRange
Unsafe version ofsubresourceRange.
-