Class VkBufferMemoryBarrier
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
Description
The first access scope is limited to access to memory through the specified buffer range, via access types in the source access mask specified by srcAccessMask. If srcAccessMask includes ACCESS_HOST_WRITE_BIT, a memory domain operation is performed where available memory in the host domain is also made available to the device domain.
The second access scope is limited to access to memory through the specified buffer range, via access types in the destination access mask specified by dstAccessMask. If dstAccessMask includes ACCESS_HOST_WRITE_BIT or ACCESS_HOST_READ_BIT, a memory domain operation is performed where available memory in the device domain is also made available to the host domain.
Note
When MEMORY_PROPERTY_HOST_COHERENT_BIT is used, available memory in host domain is automatically made visible to host domain, and any host write is automatically made available to host domain.
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 buffer 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 buffer range, and the first synchronization scope of the calling command does not apply to this operation.
Valid Usage
offsetmust be less than the size ofbuffer- If
sizeis not equal toWHOLE_SIZE,sizemust be greater than 0 - If
sizeis not equal toWHOLE_SIZE,sizemust be less than or equal to than the size ofbufferminusoffset - If
bufferis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject - If
bufferwas created with a sharing mode ofSHARING_MODE_EXCLUSIVE, andsrcQueueFamilyIndexanddstQueueFamilyIndexare not equal,srcQueueFamilyIndexmust beQUEUE_FAMILY_EXTERNAL,QUEUE_FAMILY_FOREIGN_EXT, or a valid queue family - If
bufferwas created with a sharing mode ofSHARING_MODE_EXCLUSIVE, andsrcQueueFamilyIndexanddstQueueFamilyIndexare not equal,dstQueueFamilyIndexmust beQUEUE_FAMILY_EXTERNAL,QUEUE_FAMILY_FOREIGN_EXT, or a valid queue family - If
srcQueueFamilyIndexis not equal todstQueueFamilyIndex, at least one ofsrcQueueFamilyIndexordstQueueFamilyIndexmust not beQUEUE_FAMILY_EXTERNALorQUEUE_FAMILY_FOREIGN_EXT - If the
VK_KHR_external_memoryextension is not enabled, and the value ofVkApplicationInfo::apiVersionused to create theVkInstanceis not greater than or equal to Version 1.1,srcQueueFamilyIndexmust not beQUEUE_FAMILY_EXTERNAL - If the
VK_KHR_external_memoryextension is not enabled, and the value ofVkApplicationInfo::apiVersionused to create theVkInstanceis not greater than or equal to Version 1.1,dstQueueFamilyIndexmust not beQUEUE_FAMILY_EXTERNAL - If the
VK_EXT_queue_family_foreignextension is not enabledsrcQueueFamilyIndexmust not beQUEUE_FAMILY_FOREIGN_EXT - If the
VK_EXT_queue_family_foreignextension is not enableddstQueueFamilyIndexmust not beQUEUE_FAMILY_FOREIGN_EXT - If the
synchronization2feature is not enabled, andbufferwas created with a sharing mode ofSHARING_MODE_CONCURRENT, at least one ofsrcQueueFamilyIndexanddstQueueFamilyIndexmust beQUEUE_FAMILY_IGNORED - If the
synchronization2feature is not enabled, andbufferwas created with a sharing mode ofSHARING_MODE_CONCURRENT,srcQueueFamilyIndexmust beQUEUE_FAMILY_IGNOREDorQUEUE_FAMILY_EXTERNAL - If the
synchronization2feature is not enabled, andbufferwas created with a sharing mode ofSHARING_MODE_CONCURRENT,dstQueueFamilyIndexmust beQUEUE_FAMILY_IGNOREDorQUEUE_FAMILY_EXTERNAL
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_BUFFER_MEMORY_BARRIERpNextmust beNULLor a pointer to a valid instance ofVkExternalMemoryAcquireUnmodifiedEXT- The
sTypevalue of each struct in thepNextchain must be unique buffermust be a validVkBufferhandle
See Also
CmdPipelineBarrier, CmdWaitEvents
Layout
struct VkBufferMemoryBarrier {
VkStructureType sType();
void const * pNext();
VkAccessFlags srcAccessMask();
VkAccessFlags dstAccessMask();
uint32_t srcQueueFamilyIndex();
uint32_t dstQueueFamilyIndex();
VkBuffer buffer();
VkDeviceSize offset();
VkDeviceSize size();
}-
Nested Class Summary
Nested ClassesNested 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 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.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
ConstructorsConstructorDescriptionVkBufferMemoryBarrier(ByteBuffer container) Creates aVkBufferMemoryBarrierinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionlongbuffer()a handle to the buffer whose backing memory is affected by the barrier.buffer(long value) Sets the specified value to thebuffer()field.static VkBufferMemoryBarriercalloc()Returns a newVkBufferMemoryBarrierinstance allocated withmemCalloc.static VkBufferMemoryBarrier.Buffercalloc(int capacity) Returns a newVkBufferMemoryBarrier.Bufferinstance allocated withmemCalloc.static VkBufferMemoryBarrier.Buffercalloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkBufferMemoryBarrier.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkBufferMemoryBarriercalloc(org.lwjgl.system.MemoryStack stack) Returns a newVkBufferMemoryBarrierinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkBufferMemoryBarrierDeprecated.static VkBufferMemoryBarrier.BuffercallocStack(int capacity) Deprecated.static VkBufferMemoryBarrier.BuffercallocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.static VkBufferMemoryBarriercallocStack(org.lwjgl.system.MemoryStack stack) Deprecated.static VkBufferMemoryBarriercreate()Returns a newVkBufferMemoryBarrierinstance allocated withBufferUtils.static VkBufferMemoryBarrier.Buffercreate(int capacity) Returns a newVkBufferMemoryBarrier.Bufferinstance allocated withBufferUtils.static VkBufferMemoryBarriercreate(long address) Returns a newVkBufferMemoryBarrierinstance for the specified memory address.static VkBufferMemoryBarrier.Buffercreate(long address, int capacity) Create aVkBufferMemoryBarrier.Bufferinstance at the specified memory.static @Nullable VkBufferMemoryBarriercreateSafe(long address) static @Nullable VkBufferMemoryBarrier.BuffercreateSafe(long address, int capacity) inta bitmask ofVkAccessFlagBitsspecifying a destination access mask.dstAccessMask(int value) Sets the specified value to thedstAccessMask()field.intthe destination queue family for a queue family ownership transfer.dstQueueFamilyIndex(int value) Sets the specified value to thedstQueueFamilyIndex()field.static VkBufferMemoryBarriermalloc()Returns a newVkBufferMemoryBarrierinstance allocated withmemAlloc.static VkBufferMemoryBarrier.Buffermalloc(int capacity) Returns a newVkBufferMemoryBarrier.Bufferinstance allocated withmemAlloc.static VkBufferMemoryBarrier.Buffermalloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkBufferMemoryBarrier.Bufferinstance allocated on the specifiedMemoryStack.static VkBufferMemoryBarriermalloc(org.lwjgl.system.MemoryStack stack) Returns a newVkBufferMemoryBarrierinstance allocated on the specifiedMemoryStack.static VkBufferMemoryBarrierDeprecated.static VkBufferMemoryBarrier.BuffermallocStack(int capacity) Deprecated.static VkBufferMemoryBarrier.BuffermallocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.static VkBufferMemoryBarriermallocStack(org.lwjgl.system.MemoryStack stack) Deprecated.static longnbuffer(long struct) Unsafe version ofbuffer().static voidnbuffer(long struct, long value) Unsafe version ofbuffer.static intndstAccessMask(long struct) Unsafe version ofdstAccessMask().static voidndstAccessMask(long struct, int value) Unsafe version ofdstAccessMask.static intndstQueueFamilyIndex(long struct) Unsafe version ofdstQueueFamilyIndex().static voidndstQueueFamilyIndex(long struct, int value) Unsafe version ofdstQueueFamilyIndex.static longnoffset(long struct) Unsafe version ofoffset().static voidnoffset(long struct, long value) Unsafe version ofoffset.static longnpNext(long struct) Unsafe version ofpNext().static voidnpNext(long struct, long value) Unsafe version ofpNext.static longnsize(long struct) Unsafe version ofsize().static voidnsize(long struct, long value) Unsafe version ofsize.static intnsrcAccessMask(long struct) Unsafe version ofsrcAccessMask().static voidnsrcAccessMask(long struct, int value) Unsafe version ofsrcAccessMask.static intnsrcQueueFamilyIndex(long struct) Unsafe version ofsrcQueueFamilyIndex().static voidnsrcQueueFamilyIndex(long struct, int value) Unsafe version ofsrcQueueFamilyIndex.static intnsType(long struct) Unsafe version ofsType().static voidnsType(long struct, int value) Unsafe version ofsType.longoffset()an offset in bytes into the backing memory forbuffer; this is relative to the base offset as bound to the buffer (seeBindBufferMemory).offset(long value) Sets the specified value to theoffset()field.longpNext()NULLor a pointer to a structure extending this structure.pNext(long value) Sets the specified value to thepNext()field.Prepends the specifiedVkExternalMemoryAcquireUnmodifiedEXTvalue to thepNextchain.set(int sType, long pNext, int srcAccessMask, int dstAccessMask, int srcQueueFamilyIndex, int dstQueueFamilyIndex, long buffer, long offset, long size) Initializes this struct with the specified values.set(VkBufferMemoryBarrier src) Copies the specified struct data to this struct.longsize()a size in bytes of the affected area of backing memory forbuffer, orWHOLE_SIZEto use the range fromoffsetto the end of the buffer.size(long value) Sets the specified value to thesize()field.intsizeof()inta bitmask ofVkAccessFlagBitsspecifying a source access mask.srcAccessMask(int value) Sets the specified value to thesrcAccessMask()field.intthe source queue family for a queue family ownership transfer.srcQueueFamilyIndex(int value) Sets the specified value to thesrcQueueFamilyIndex()field.intsType()aVkStructureTypevalue identifying this structure.sType(int value) Sets the specified value to thesType()field.Sets theSTRUCTURE_TYPE_BUFFER_MEMORY_BARRIERvalue to thesType()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. -
SRCACCESSMASK
public static final int SRCACCESSMASKThe struct member offsets. -
DSTACCESSMASK
public static final int DSTACCESSMASKThe struct member offsets. -
SRCQUEUEFAMILYINDEX
public static final int SRCQUEUEFAMILYINDEXThe struct member offsets. -
DSTQUEUEFAMILYINDEX
public static final int DSTQUEUEFAMILYINDEXThe struct member offsets. -
BUFFER
public static final int BUFFERThe struct member offsets. -
OFFSET
public static final int OFFSETThe struct member offsets. -
SIZE
public static final int SIZEThe struct member offsets.
-
-
Constructor Details
-
VkBufferMemoryBarrier
Creates aVkBufferMemoryBarrierinstance 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<VkBufferMemoryBarrier>
-
sType
public int sType()aVkStructureTypevalue identifying this structure. -
pNext
public long pNext()NULLor a pointer to a structure extending this structure. -
srcAccessMask
public int srcAccessMask()a bitmask ofVkAccessFlagBitsspecifying a source access mask. -
dstAccessMask
public int dstAccessMask()a bitmask ofVkAccessFlagBitsspecifying a destination access mask. -
srcQueueFamilyIndex
public int srcQueueFamilyIndex()the source queue family for a queue family ownership transfer. -
dstQueueFamilyIndex
public int dstQueueFamilyIndex()the destination queue family for a queue family ownership transfer. -
buffer
public long buffer()a handle to the buffer whose backing memory is affected by the barrier. -
offset
public long offset()an offset in bytes into the backing memory forbuffer; this is relative to the base offset as bound to the buffer (seeBindBufferMemory). -
size
public long size()a size in bytes of the affected area of backing memory forbuffer, orWHOLE_SIZEto use the range fromoffsetto the end of the buffer. -
sType
Sets the specified value to thesType()field. -
sType$Default
Sets theSTRUCTURE_TYPE_BUFFER_MEMORY_BARRIERvalue to thesType()field. -
pNext
Sets the specified value to thepNext()field. -
pNext
Prepends the specifiedVkExternalMemoryAcquireUnmodifiedEXTvalue to thepNextchain. -
srcAccessMask
Sets the specified value to thesrcAccessMask()field. -
dstAccessMask
Sets the specified value to thedstAccessMask()field. -
srcQueueFamilyIndex
Sets the specified value to thesrcQueueFamilyIndex()field. -
dstQueueFamilyIndex
Sets the specified value to thedstQueueFamilyIndex()field. -
buffer
Sets the specified value to thebuffer()field. -
offset
Sets the specified value to theoffset()field. -
size
Sets the specified value to thesize()field. -
set
public VkBufferMemoryBarrier set(int sType, long pNext, int srcAccessMask, int dstAccessMask, int srcQueueFamilyIndex, int dstQueueFamilyIndex, long buffer, long offset, long size) 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 newVkBufferMemoryBarrierinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkBufferMemoryBarrierinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkBufferMemoryBarrierinstance allocated withBufferUtils. -
create
Returns a newVkBufferMemoryBarrierinstance for the specified memory address. -
createSafe
-
malloc
Returns a newVkBufferMemoryBarrier.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkBufferMemoryBarrier.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkBufferMemoryBarrier.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aVkBufferMemoryBarrier.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
-
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(MemoryStack)instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(MemoryStack)instead. -
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(MemoryStack)instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(MemoryStack)instead. -
mallocStack
Deprecated.Deprecated for removal in 3.4.0. Usemalloc(int, MemoryStack)instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(int, MemoryStack)instead. -
mallocStack
@Deprecated public static VkBufferMemoryBarrier.Buffer mallocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.Deprecated for removal in 3.4.0. Usemalloc(int, MemoryStack)instead. -
callocStack
@Deprecated public static VkBufferMemoryBarrier.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.Deprecated for removal in 3.4.0. Usecalloc(int, MemoryStack)instead. -
malloc
Returns a newVkBufferMemoryBarrierinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newVkBufferMemoryBarrierinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
Returns a newVkBufferMemoryBarrier.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
Returns a newVkBufferMemoryBarrier.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(). -
nsrcAccessMask
public static int nsrcAccessMask(long struct) Unsafe version ofsrcAccessMask(). -
ndstAccessMask
public static int ndstAccessMask(long struct) Unsafe version ofdstAccessMask(). -
nsrcQueueFamilyIndex
public static int nsrcQueueFamilyIndex(long struct) Unsafe version ofsrcQueueFamilyIndex(). -
ndstQueueFamilyIndex
public static int ndstQueueFamilyIndex(long struct) Unsafe version ofdstQueueFamilyIndex(). -
nbuffer
public static long nbuffer(long struct) Unsafe version ofbuffer(). -
noffset
public static long noffset(long struct) Unsafe version ofoffset(). -
nsize
public static long nsize(long struct) Unsafe version ofsize(). -
nsType
public static void nsType(long struct, int value) Unsafe version ofsType. -
npNext
public static void npNext(long struct, long value) Unsafe version ofpNext. -
nsrcAccessMask
public static void nsrcAccessMask(long struct, int value) Unsafe version ofsrcAccessMask. -
ndstAccessMask
public static void ndstAccessMask(long struct, int value) Unsafe version ofdstAccessMask. -
nsrcQueueFamilyIndex
public static void nsrcQueueFamilyIndex(long struct, int value) Unsafe version ofsrcQueueFamilyIndex. -
ndstQueueFamilyIndex
public static void ndstQueueFamilyIndex(long struct, int value) Unsafe version ofdstQueueFamilyIndex. -
nbuffer
public static void nbuffer(long struct, long value) Unsafe version ofbuffer. -
noffset
public static void noffset(long struct, long value) Unsafe version ofoffset. -
nsize
public static void nsize(long struct, long value) Unsafe version ofsize.
-