Class VkBufferMemoryBarrier
- All Implemented Interfaces:
AutoCloseable
,NativeResource
,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 access scope includes no access, as if dstAccessMask
was 0.
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 access scope includes no access, as if srcAccessMask
was 0.
Valid Usage
offset
must be less than the size ofbuffer
- If
size
is not equal toWHOLE_SIZE
,size
must be greater than 0 - If
size
is not equal toWHOLE_SIZE
,size
must be less than or equal to than the size ofbuffer
minusoffset
- If
buffer
is non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemory
object - If
buffer
was created with a sharing mode ofSHARING_MODE_EXCLUSIVE
, andsrcQueueFamilyIndex
anddstQueueFamilyIndex
are not equal,srcQueueFamilyIndex
must beQUEUE_FAMILY_EXTERNAL
,QUEUE_FAMILY_FOREIGN_EXT
, or a valid queue family - If
buffer
was created with a sharing mode ofSHARING_MODE_EXCLUSIVE
, andsrcQueueFamilyIndex
anddstQueueFamilyIndex
are not equal,dstQueueFamilyIndex
must beQUEUE_FAMILY_EXTERNAL
,QUEUE_FAMILY_FOREIGN_EXT
, or a valid queue family - If
srcQueueFamilyIndex
is not equal todstQueueFamilyIndex
, at least one ofsrcQueueFamilyIndex
ordstQueueFamilyIndex
must not beQUEUE_FAMILY_EXTERNAL
orQUEUE_FAMILY_FOREIGN_EXT
- If the
VK_KHR_external_memory
extension is not enabled, and the value ofVkApplicationInfo
::apiVersion
used to create theVkInstance
is not greater than or equal to Version 1.1,srcQueueFamilyIndex
must not beQUEUE_FAMILY_EXTERNAL
- If the
VK_KHR_external_memory
extension is not enabled, and the value ofVkApplicationInfo
::apiVersion
used to create theVkInstance
is not greater than or equal to Version 1.1,dstQueueFamilyIndex
must not beQUEUE_FAMILY_EXTERNAL
- If the
VK_EXT_queue_family_foreign
extension is not enabledsrcQueueFamilyIndex
must not beQUEUE_FAMILY_FOREIGN_EXT
- If the
VK_EXT_queue_family_foreign
extension is not enableddstQueueFamilyIndex
must not beQUEUE_FAMILY_FOREIGN_EXT
- If the
synchronization2
feature is not enabled, andbuffer
was created with a sharing mode ofSHARING_MODE_CONCURRENT
, at least one ofsrcQueueFamilyIndex
anddstQueueFamilyIndex
must beQUEUE_FAMILY_IGNORED
- If the
synchronization2
feature is not enabled, andbuffer
was created with a sharing mode ofSHARING_MODE_CONCURRENT
,srcQueueFamilyIndex
must beQUEUE_FAMILY_IGNORED
orQUEUE_FAMILY_EXTERNAL
- If the
synchronization2
feature is not enabled, andbuffer
was created with a sharing mode ofSHARING_MODE_CONCURRENT
,dstQueueFamilyIndex
must beQUEUE_FAMILY_IGNORED
orQUEUE_FAMILY_EXTERNAL
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
pNext
must beNULL
or a pointer to a valid instance ofVkExternalMemoryAcquireUnmodifiedEXT
- The
sType
value of each struct in thepNext
chain must be unique buffer
must be a validVkBuffer
handle
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 classes/interfaces inherited from class org.lwjgl.system.Struct
Struct.StructValidation
Nested classes/interfaces inherited from interface org.lwjgl.system.Pointer
Pointer.Default
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The struct alignment in bytes.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct size in bytes.static final int
The struct member offsets.static final int
The struct member offsets.static final int
The struct member offsets.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE
-
Constructor Summary
ConstructorDescriptionVkBufferMemoryBarrier
(ByteBuffer container) Creates aVkBufferMemoryBarrier
instance at the current position of the specifiedByteBuffer
container. -
Method Summary
Modifier and TypeMethodDescriptionlong
buffer()
a handle to the buffer whose backing memory is affected by the barrier.buffer
(long value) Sets the specified value to thebuffer()
field.static VkBufferMemoryBarrier
calloc()
Returns a newVkBufferMemoryBarrier
instance allocated withmemCalloc
.static VkBufferMemoryBarrier.Buffer
calloc
(int capacity) Returns a newVkBufferMemoryBarrier.Buffer
instance allocated withmemCalloc
.static VkBufferMemoryBarrier.Buffer
calloc
(int capacity, MemoryStack stack) Returns a newVkBufferMemoryBarrier.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkBufferMemoryBarrier
calloc
(MemoryStack stack) Returns a newVkBufferMemoryBarrier
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkBufferMemoryBarrier
Deprecated.static VkBufferMemoryBarrier.Buffer
callocStack
(int capacity) Deprecated.static VkBufferMemoryBarrier.Buffer
callocStack
(int capacity, MemoryStack stack) Deprecated.static VkBufferMemoryBarrier
callocStack
(MemoryStack stack) Deprecated.static VkBufferMemoryBarrier
create()
Returns a newVkBufferMemoryBarrier
instance allocated withBufferUtils
.static VkBufferMemoryBarrier.Buffer
create
(int capacity) Returns a newVkBufferMemoryBarrier.Buffer
instance allocated withBufferUtils
.static VkBufferMemoryBarrier
create
(long address) Returns a newVkBufferMemoryBarrier
instance for the specified memory address.static VkBufferMemoryBarrier.Buffer
create
(long address, int capacity) Create aVkBufferMemoryBarrier.Buffer
instance at the specified memory.static VkBufferMemoryBarrier
createSafe
(long address) static VkBufferMemoryBarrier.Buffer
createSafe
(long address, int capacity) int
a bitmask ofVkAccessFlagBits
specifying a destination access mask.dstAccessMask
(int value) Sets the specified value to thedstAccessMask()
field.int
the destination queue family for a queue family ownership transfer.dstQueueFamilyIndex
(int value) Sets the specified value to thedstQueueFamilyIndex()
field.static VkBufferMemoryBarrier
malloc()
Returns a newVkBufferMemoryBarrier
instance allocated withmemAlloc
.static VkBufferMemoryBarrier.Buffer
malloc
(int capacity) Returns a newVkBufferMemoryBarrier.Buffer
instance allocated withmemAlloc
.static VkBufferMemoryBarrier.Buffer
malloc
(int capacity, MemoryStack stack) Returns a newVkBufferMemoryBarrier.Buffer
instance allocated on the specifiedMemoryStack
.static VkBufferMemoryBarrier
malloc
(MemoryStack stack) Returns a newVkBufferMemoryBarrier
instance allocated on the specifiedMemoryStack
.static VkBufferMemoryBarrier
Deprecated.static VkBufferMemoryBarrier.Buffer
mallocStack
(int capacity) Deprecated.static VkBufferMemoryBarrier.Buffer
mallocStack
(int capacity, MemoryStack stack) Deprecated.static VkBufferMemoryBarrier
mallocStack
(MemoryStack stack) Deprecated.static long
nbuffer
(long struct) Unsafe version ofbuffer()
.static void
nbuffer
(long struct, long value) Unsafe version ofbuffer
.static int
ndstAccessMask
(long struct) Unsafe version ofdstAccessMask()
.static void
ndstAccessMask
(long struct, int value) Unsafe version ofdstAccessMask
.static int
ndstQueueFamilyIndex
(long struct) Unsafe version ofdstQueueFamilyIndex()
.static void
ndstQueueFamilyIndex
(long struct, int value) Unsafe version ofdstQueueFamilyIndex
.static long
noffset
(long struct) Unsafe version ofoffset()
.static void
noffset
(long struct, long value) Unsafe version ofoffset
.static long
npNext
(long struct) Unsafe version ofpNext()
.static void
npNext
(long struct, long value) Unsafe version ofpNext
.static long
nsize
(long struct) Unsafe version ofsize()
.static void
nsize
(long struct, long value) Unsafe version ofsize
.static int
nsrcAccessMask
(long struct) Unsafe version ofsrcAccessMask()
.static void
nsrcAccessMask
(long struct, int value) Unsafe version ofsrcAccessMask
.static int
nsrcQueueFamilyIndex
(long struct) Unsafe version ofsrcQueueFamilyIndex()
.static void
nsrcQueueFamilyIndex
(long struct, int value) Unsafe version ofsrcQueueFamilyIndex
.static int
nsType
(long struct) Unsafe version ofsType()
.static void
nsType
(long struct, int value) Unsafe version ofsType
.long
offset()
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.long
pNext()
NULL
or a pointer to a structure extending this structure.pNext
(long value) Sets the specified value to thepNext()
field.Prepends the specifiedVkExternalMemoryAcquireUnmodifiedEXT
value to thepNext
chain.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.long
size()
a size in bytes of the affected area of backing memory forbuffer
, orWHOLE_SIZE
to use the range fromoffset
to the end of the buffer.size
(long value) Sets the specified value to thesize()
field.int
sizeof()
Returnssizeof(struct)
.int
a bitmask ofVkAccessFlagBits
specifying a source access mask.srcAccessMask
(int value) Sets the specified value to thesrcAccessMask()
field.int
the source queue family for a queue family ownership transfer.srcQueueFamilyIndex
(int value) Sets the specified value to thesrcQueueFamilyIndex()
field.int
sType()
aVkStructureType
value identifying this structure.sType
(int value) Sets the specified value to thesType()
field.Sets theSTRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
value to thesType()
field.Methods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toString
Methods 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 aVkBufferMemoryBarrier
instance at the current position of the specifiedByteBuffer
container. 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()Description copied from class:Struct
Returnssizeof(struct)
.- Specified by:
sizeof
in classStruct<VkBufferMemoryBarrier>
-
sType
public int sType()aVkStructureType
value identifying this structure. -
pNext
public long pNext()NULL
or a pointer to a structure extending this structure. -
srcAccessMask
public int srcAccessMask()a bitmask ofVkAccessFlagBits
specifying a source access mask. -
dstAccessMask
public int dstAccessMask()a bitmask ofVkAccessFlagBits
specifying 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_SIZE
to use the range fromoffset
to the end of the buffer. -
sType
Sets the specified value to thesType()
field. -
sType$Default
Sets theSTRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
value to thesType()
field. -
pNext
Sets the specified value to thepNext()
field. -
pNext
Prepends the specifiedVkExternalMemoryAcquireUnmodifiedEXT
value to thepNext
chain. -
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 newVkBufferMemoryBarrier
instance allocated withmemAlloc
. The instance must be explicitly freed. -
calloc
Returns a newVkBufferMemoryBarrier
instance allocated withmemCalloc
. The instance must be explicitly freed. -
create
Returns a newVkBufferMemoryBarrier
instance allocated withBufferUtils
. -
create
Returns a newVkBufferMemoryBarrier
instance for the specified memory address. -
createSafe
-
malloc
Returns a newVkBufferMemoryBarrier.Buffer
instance allocated withmemAlloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
calloc
Returns a newVkBufferMemoryBarrier.Buffer
instance allocated withmemCalloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
create
Returns a newVkBufferMemoryBarrier.Buffer
instance allocated withBufferUtils
.- Parameters:
capacity
- the buffer capacity
-
create
Create aVkBufferMemoryBarrier.Buffer
instance 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.Deprecated for removal in 3.4.0. Usemalloc(int, MemoryStack)
instead. -
callocStack
Deprecated.Deprecated for removal in 3.4.0. Usecalloc(int, MemoryStack)
instead. -
malloc
Returns a newVkBufferMemoryBarrier
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocate
-
calloc
Returns a newVkBufferMemoryBarrier
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocate
-
malloc
Returns a newVkBufferMemoryBarrier.Buffer
instance allocated on the specifiedMemoryStack
.- Parameters:
capacity
- the buffer capacitystack
- the stack from which to allocate
-
calloc
Returns a newVkBufferMemoryBarrier.Buffer
instance allocated on the specifiedMemoryStack
and 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
.
-