Class VkExternalMemoryAcquireUnmodifiedEXT

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

public class VkExternalMemoryAcquireUnmodifiedEXT extends org.lwjgl.system.Struct<VkExternalMemoryAcquireUnmodifiedEXT> implements org.lwjgl.system.NativeResource
Structure specifying that external memory has remained unmodified since releasing ownership.
Description

If the application releases ownership of the subresource range to one of the special queue families reserved for external memory ownership transfers with a memory barrier structure, and later re-acquires ownership from the same queue family with a memory barrier structure, and if no range of VkDeviceMemory bound to the resource was modified at any time between the release operation and the acquire operation, then the application should add a VkExternalMemoryAcquireUnmodifiedEXT structure to the pNext chain of the acquire operation's memory barrier structure because this may reduce the performance penalty.

This struct is ignored if acquireUnmodifiedMemory is FALSE. In particular, FALSE does not specify that memory was modified.

This struct is ignored if the memory barrier’s srcQueueFamilyIndex is not a special queue family reserved for external memory ownership transfers.

Note

The method by which the application determines whether memory was modified between the release operation and acquire operation is outside the scope of Vulkan.

For any Vulkan operation that accesses a resource, the application must not assume the implementation accesses the resource’s memory as read-only, even for apparently read-only operations such as transfer commands and shader reads.

The validity of VkExternalMemoryAcquireUnmodifiedEXT::acquireUnmodifiedMemory is independent of memory ranges outside the ranges of VkDeviceMemory bound to the resource. In particular, it is independent of any implementation-private memory associated with the resource.

Valid Usage
  • If acquireUnmodifiedMemory is TRUE, and the memory barrier’s srcQueueFamilyIndex is a special queue family reserved for external memory ownership transfers (as described in Queue Family Ownership Transfer), then each range of VkDeviceMemory bound to the resource must have remained unmodified during all time since the resource’s most recent release of ownership to the queue family
Valid Usage (Implicit)

Layout


 struct VkExternalMemoryAcquireUnmodifiedEXT {
     VkStructureType sType();
     void const * pNext();
     VkBool32 acquireUnmodifiedMemory();
 }