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.
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.
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.sType must be STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
struct VkExternalMemoryAcquireUnmodifiedEXT {
VkStructureType sType;
void const * pNext;
VkBool32 acquireUnmodifiedMemory;
}
| Modifier and Type | Class and Description |
|---|---|
| public static class | VkExternalMemoryAcquireUnmodifiedEXT.
An array of |
| Modifier and Type | Field and Description |
|---|---|
| public static final int | ACQUIREUNMODIFIEDMEMORY
The struct member offsets. |
| public static final int | ALIGNOF
The struct alignment in bytes. |
| public static final int | PNEXT
The struct member offsets. |
| public static final int | SIZEOF
The struct size in bytes. |
| public static final int | STYPE
The struct member offsets. |
| Access | Constructor and Description |
|---|---|
| protected | |
| public | VkExternalMemoryAcquireUnmodifiedEXT(ByteBuffer container)
Creates a |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | acquireUnmodifiedMemory()
specifies, if |
| public VkExternalMemoryAcquireUnmodifiedEXT | acquireUnmodifiedMemory(boolean value)
Sets the specified value to the |
| public static VkExternalMemoryAcquireUnmodifiedEXT | |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | calloc(int
the buffer capacity capacity)Returns a new |
| public static VkExternalMemoryAcquireUnmodifiedEXT | calloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | calloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| protected VkExternalMemoryAcquireUnmodifiedEXT | create(long
the struct memory address address, ByteBuffer an optional container buffer, to be referenced strongly by the struct instance. container)Implements abstract org. the constructor, but returns the exact type of the Struct subclass.
|
| public static VkExternalMemoryAcquireUnmodifiedEXT | |
| public static VkExternalMemoryAcquireUnmodifiedEXT | create(long address)
Returns a new |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | create(int
the buffer capacity capacity)Returns a new |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | create(long
the memory address address, int the buffer capacity capacity)Create a |
| public static VkExternalMemoryAcquireUnmodifiedEXT | |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | |
| public static VkExternalMemoryAcquireUnmodifiedEXT | |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | malloc(int
the buffer capacity capacity)Returns a new |
| public static VkExternalMemoryAcquireUnmodifiedEXT | malloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkExternalMemoryAcquireUnmodifiedEXT. | malloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static int | |
| public static void | |
| public static long | |
| public static void | |
| public static int | |
| public static void | |
| public long | |
| public VkExternalMemoryAcquireUnmodifiedEXT | |
| public VkExternalMemoryAcquireUnmodifiedEXT | set(int sType, long pNext, boolean acquireUnmodifiedMemory)
Initializes this struct with the specified values. |
| public VkExternalMemoryAcquireUnmodifiedEXT | Returns: this structthe source struct src)Copies the specified struct data to this struct. |
| public int | |
| public int | |
| public VkExternalMemoryAcquireUnmodifiedEXT | |
| public VkExternalMemoryAcquireUnmodifiedEXT | sType$Default()
Sets the |
| ACQUIREUNMODIFIEDMEMORY | back to summary |
|---|---|
| public static final int ACQUIREUNMODIFIEDMEMORY The struct member offsets. | |
| ALIGNOF | back to summary |
|---|---|
| public static final int ALIGNOF The struct alignment in bytes. | |
| PNEXT | back to summary |
|---|---|
| public static final int PNEXT The struct member offsets. | |
| SIZEOF | back to summary |
|---|---|
| public static final int SIZEOF The struct size in bytes. | |
| STYPE | back to summary |
|---|---|
| public static final int STYPE The struct member offsets. | |
| VkExternalMemoryAcquireUnmodifiedEXT | back to summary |
|---|---|
| protected VkExternalMemoryAcquireUnmodifiedEXT(long address, ByteBuffer container) | |
| VkExternalMemoryAcquireUnmodifiedEXT | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT(ByteBuffer container) Creates a The created instance holds a strong reference to the container object. | |
| acquireUnmodifiedMemory | back to summary |
|---|---|
| public boolean acquireUnmodifiedMemory() specifies, if
| |
| acquireUnmodifiedMemory | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT acquireUnmodifiedMemory(boolean value) Sets the specified value to the | |
| calloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT calloc() Returns a new | |
| calloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Returns a new
| |
| calloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT calloc(MemoryStack stack) Returns a new
| |
| calloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Returns a new
| |
| create | back to summary |
|---|---|
| protected VkExternalMemoryAcquireUnmodifiedEXT create(long address, ByteBuffer container) Implements abstract org. Doc from org. Similar to Effectively, every
| |
| create | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT create() Returns a new | |
| create | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT create(long address) Returns a new | |
| create | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Returns a new
| |
| create | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Create a
| |
| createSafe | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT createSafe(long address) Like
| |
| createSafe | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Like
| |
| malloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT malloc() Returns a new | |
| malloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Returns a new
| |
| malloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT malloc(MemoryStack stack) Returns a new
| |
| malloc | back to summary |
|---|---|
| public static VkExternalMemoryAcquireUnmodifiedEXT. Returns a new
| |
| nacquireUnmodifiedMemory | back to summary |
|---|---|
| public static int nacquireUnmodifiedMemory(long struct) Unsafe version of | |
| nacquireUnmodifiedMemory | back to summary |
|---|---|
| public static void nacquireUnmodifiedMemory(long struct, int value) Unsafe version of | |
| npNext | back to summary |
|---|---|
| public static long npNext(long struct) Unsafe version of | |
| npNext | back to summary |
|---|---|
| public static void npNext(long struct, long value) Unsafe version of | |
| nsType | back to summary |
|---|---|
| public static int nsType(long struct) Unsafe version of | |
| nsType | back to summary |
|---|---|
| public static void nsType(long struct, int value) Unsafe version of | |
| pNext | back to summary |
|---|---|
| public long pNext()
| |
| pNext | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT pNext(long value) Sets the specified value to the | |
| set | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT set(int sType, long pNext, boolean acquireUnmodifiedMemory) Initializes this struct with the specified values. | |
| set | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT set(VkExternalMemoryAcquireUnmodifiedEXT src) Copies the specified struct data to this struct.
| |
| sizeof | back to summary |
|---|---|
| public int sizeof() Implements abstract org. Doc from org. Returns
| |
| sType | back to summary |
|---|---|
| public int sType() a
| |
| sType | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT sType(int value) Sets the specified value to the | |
| sType$Default | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT sType$Default() Sets the | |
VkExternalMemoryAcquireUnmodifiedEXT structs.
| Modifier and Type | Field and Description |
|---|---|
| private static final VkExternalMemoryAcquireUnmodifiedEXT |
| Access | Constructor and Description |
|---|---|
| public | Buffer(ByteBuffer container)
Creates a new |
| public | |
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | Returns: the value of theVkExternalMemoryAcquireUnmodifiedEXT#acquireUnmodifiedMemory field.
|
| public VkExternalMemoryAcquireUnmodifiedEXT. | acquireUnmodifiedMemory(boolean value)
Sets the specified value to the |
| protected VkExternalMemoryAcquireUnmodifiedEXT | |
| public long | |
| public VkExternalMemoryAcquireUnmodifiedEXT. | |
| protected VkExternalMemoryAcquireUnmodifiedEXT. | |
| public int | |
| public VkExternalMemoryAcquireUnmodifiedEXT. | |
| public VkExternalMemoryAcquireUnmodifiedEXT. | sType$Default()
Sets the |
| ELEMENT_FACTORY | back to summary |
|---|---|
| private static final VkExternalMemoryAcquireUnmodifiedEXT ELEMENT_FACTORY | |
| Buffer | back to summary |
|---|---|
| public Buffer(ByteBuffer container) Creates a new Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
by The created buffer instance holds a strong reference to the container object. | |
| Buffer | back to summary |
|---|---|
| public Buffer(long address, int cap) | |
| Buffer | back to summary |
|---|---|
| pack-priv Buffer(long address, ByteBuffer container, int mark, int pos, int lim, int cap) | |
| acquireUnmodifiedMemory | back to summary |
|---|---|
public boolean acquireUnmodifiedMemory()
| |
| acquireUnmodifiedMemory | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT. Sets the specified value to the | |
| getElementFactory | back to summary |
|---|---|
| protected VkExternalMemoryAcquireUnmodifiedEXT getElementFactory() Implements abstract org.
| |
| pNext | back to summary |
|---|---|
public long pNext()
| |
| pNext | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT. Sets the specified value to the | |
| self | back to summary |
|---|---|
| protected VkExternalMemoryAcquireUnmodifiedEXT. Implements abstract org.
| |
| sType | back to summary |
|---|---|
public int sType()
| |
| sType | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT. Sets the specified value to the | |
| sType$Default | back to summary |
|---|---|
| public VkExternalMemoryAcquireUnmodifiedEXT. Sets the | |