VkExternalMemoryAcquireUnmodifiedEXT - 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 DeviceMemory bound to the
resource was modified at any time between the release operation and
the acquire operation, then the application should add a
ExternalMemoryAcquireUnmodifiedEXT structure to the pNext chain of
the acquire operation's memory barrier structure because this may
reduce the performance penalty.
This structure is ignored if acquireUnmodifiedMemory is
FALSE. In particular,
FALSE does not specify that memory
was modified.
This structure is ignored if the memory barrier’s srcQueueFamilyIndex
is not a special queue family reserved for external memory ownership
transfers.
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
ExternalMemoryAcquireUnmodifiedEXT::acquireUnmodifiedMemory is
independent of memory ranges outside the ranges of
DeviceMemory bound to the resource. In
particular, it is independent of any implementation-private memory
associated with the resource.
Valid Usage
If
acquireUnmodifiedMemoryis TRUE, and the memory barrier’ssrcQueueFamilyIndexis a special queue family reserved for external memory ownership transfers (as described in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers), then each range of DeviceMemory 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)
sTypemust be STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
Structure Chaining
See Also
VK_EXT_external_memory_acquire_unmodified, Bool32, StructureType
Constructors
ExternalMemoryAcquireUnmodifiedEXTacquireUnmodifiedMemory :: BoolacquireUnmodifiedMemoryspecifies, if TRUE, that no range of DeviceMemory bound to the resource of the memory barrier’s subresource range was modified at any time since the resource’s most recent release of ownership to the queue family specified by the memory barrier’ssrcQueueFamilyIndex. If FALSE, it specifies nothing.
Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero
Eq ExternalMemoryAcquireUnmodifiedEXTDefined in vulkan-3.27 · Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodifiedShow ExternalMemoryAcquireUnmodifiedEXTDefined in vulkan-3.27 · Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodifiedStorable ExternalMemoryAcquireUnmodifiedEXTDefined in vulkan-3.27 · Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodifiedFromCStruct ExternalMemoryAcquireUnmodifiedEXTDefined in vulkan-3.27 · Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodifiedToCStruct ExternalMemoryAcquireUnmodifiedEXTDefined in vulkan-3.27 · Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodifiedZero ExternalMemoryAcquireUnmodifiedEXTDefined in vulkan-3.27 · Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified