Class VkImageMemoryBarrier

java.lang.Object
org.lwjgl.system.Pointer.Default
org.lwjgl.system.Struct<VkImageMemoryBarrier>
org.lwjgl.vulkan.VkImageMemoryBarrier
All Implemented Interfaces:
AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

public class VkImageMemoryBarrier extends org.lwjgl.system.Struct<VkImageMemoryBarrier> implements org.lwjgl.system.NativeResource
Structure specifying the parameters of an image memory barrier.
Description

The first access scope is limited to access to memory through the specified image subresource range, via access types in the source access mask specified by srcAccessMask. If srcAccessMask includes ACCESS_HOST_WRITE_BIT, memory writes performed by that access type are also made visible, as that access type is not performed through a resource.

The second access scope is limited to access to memory through the specified image subresource range, via access types in the destination access mask specified by dstAccessMask. If dstAccessMask includes ACCESS_HOST_WRITE_BIT or ACCESS_HOST_READ_BIT, available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.

If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a queue family release operation for the specified image subresource range, and the second synchronization scope of the calling command does not apply to this operation.

If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a queue family acquire operation for the specified image subresource range, and the first synchronization scope of the calling command does not apply to this operation.

If the synchronization2 feature is not enabled or oldLayout is not equal to newLayout, oldLayout and newLayout define an image layout transition for the specified image subresource range.

Note

If the synchronization2 feature is enabled, when the old and new layout are equal, the layout values are ignored - data is preserved no matter what values are specified, or what layout the image is currently in.

If image has a multi-planar format and the image is disjoint, then including IMAGE_ASPECT_COLOR_BIT in the aspectMask member of subresourceRange is equivalent to including IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, and (for three-plane formats only) IMAGE_ASPECT_PLANE_2_BIT.

Valid Usage
Valid Usage (Implicit)
See Also

VkImageSubresourceRange, CmdPipelineBarrier, CmdWaitEvents

Layout


 struct VkImageMemoryBarrier {
     VkStructureType sType();
     void const * pNext();
     VkAccessFlags srcAccessMask();
     VkAccessFlags dstAccessMask();
     VkImageLayout oldLayout();
     VkImageLayout newLayout();
     uint32_t srcQueueFamilyIndex();
     uint32_t dstQueueFamilyIndex();
     VkImage image();
     VkImageSubresourceRange subresourceRange();
 }