Class VkSubpassDependency
- java.lang.Object
-
- org.lwjgl.system.Pointer.Default
-
- org.lwjgl.system.Struct
-
- org.lwjgl.vulkan.VkSubpassDependency
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,org.lwjgl.system.NativeResource
,org.lwjgl.system.Pointer
public class VkSubpassDependency extends org.lwjgl.system.Struct implements org.lwjgl.system.NativeResource
Structure specifying a subpass dependency.Description
If
srcSubpass
is equal todstSubpass
then theVkSubpassDependency
describes a subpass self-dependency, and only constrains the pipeline barriers allowed within a subpass instance. Otherwise, when a render pass instance which includes a subpass dependency is submitted to a queue, it defines a memory dependency between the subpasses identified bysrcSubpass
anddstSubpass
.If
srcSubpass
is equal toSUBPASS_EXTERNAL
, the first synchronization scope includes commands that occur earlier in submission order than theCmdBeginRenderPass
used to begin the render pass instance. Otherwise, the first set of commands includes all commands submitted as part of the subpass instance identified bysrcSubpass
and any load, store or multisample resolve operations on attachments used insrcSubpass
. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the source stage mask specified bysrcStageMask
.If
dstSubpass
is equal toSUBPASS_EXTERNAL
, the second synchronization scope includes commands that occur later in submission order than theCmdEndRenderPass
used to end the render pass instance. Otherwise, the second set of commands includes all commands submitted as part of the subpass instance identified bydstSubpass
and any load, store or multisample resolve operations on attachments used indstSubpass
. In either case, the second synchronization scope is limited to operations on the pipeline stages determined by the destination stage mask specified bydstStageMask
.The first access scope is limited to access in the pipeline stages determined by the source stage mask specified by
srcStageMask
. It is also limited to access types in the source access mask specified bysrcAccessMask
.The second access scope is limited to access in the pipeline stages determined by the destination stage mask specified by
dstStageMask
. It is also limited to access types in the destination access mask specified bydstAccessMask
.The availability and visibility operations defined by a subpass dependency affect the execution of image layout transitions within the render pass.
Note
For non-attachment resources, the memory dependency expressed by subpass dependency is nearly identical to that of a
VkMemoryBarrier
(with matchingsrcAccessMask
/dstAccessMask
parameters) submitted as a part of aCmdPipelineBarrier
(with matchingsrcStageMask
/dstStageMask
parameters). The only difference being that its scopes are limited to the identified subpasses rather than potentially affecting everything before and after.For attachments however, subpass dependencies work more like a
VkImageMemoryBarrier
defined similarly to theVkMemoryBarrier
above, the queue family indices set toQUEUE_FAMILY_IGNORED
, and layouts as follows:- The equivalent to
oldLayout
is the attachment’s layout according to the subpass description forsrcSubpass
. - The equivalent to
newLayout
is the attachment’s layout according to the subpass description fordstSubpass
.
Valid Usage
- If the geometry shaders feature is not enabled,
srcStageMask
must not containPIPELINE_STAGE_GEOMETRY_SHADER_BIT
- If the geometry shaders feature is not enabled,
dstStageMask
must not containPIPELINE_STAGE_GEOMETRY_SHADER_BIT
- If the tessellation shaders feature is not enabled,
srcStageMask
must not containPIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
orPIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
- If the tessellation shaders feature is not enabled,
dstStageMask
must not containPIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
orPIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
srcSubpass
must be less than or equal todstSubpass
, unless one of them isSUBPASS_EXTERNAL
, to avoid cyclic dependencies and ensure a valid execution ordersrcSubpass
anddstSubpass
must not both be equal toSUBPASS_EXTERNAL
- If
srcSubpass
is equal todstSubpass
and not all of the stages insrcStageMask
anddstStageMask
are framebuffer-space stages, the logically latest pipeline stage insrcStageMask
must be logically earlier than or equal to the logically earliest pipeline stage indstStageMask
- Any access flag included in
srcAccessMask
must be supported by one of the pipeline stages insrcStageMask
, as specified in the table of supported access types - Any access flag included in
dstAccessMask
must be supported by one of the pipeline stages indstStageMask
, as specified in the table of supported access types - If
srcSubpass
equalsdstSubpass
, andsrcStageMask
anddstStageMask
both include a framebuffer-space stage, thendependencyFlags
must includeDEPENDENCY_BY_REGION_BIT
- If
dependencyFlags
includesDEPENDENCY_VIEW_LOCAL_BIT
,srcSubpass
must not be equal toSUBPASS_EXTERNAL
- If
dependencyFlags
includesDEPENDENCY_VIEW_LOCAL_BIT
,dstSubpass
must not be equal toSUBPASS_EXTERNAL
- If
srcSubpass
equalsdstSubpass
and that subpass has more than one bit set in the view mask, thendependencyFlags
must includeDEPENDENCY_VIEW_LOCAL_BIT
- If the mesh shaders feature is not enabled,
srcStageMask
must not containPIPELINE_STAGE_MESH_SHADER_BIT_NV
- If the task shaders feature is not enabled,
srcStageMask
must not containPIPELINE_STAGE_TASK_SHADER_BIT_NV
- If the mesh shaders feature is not enabled,
dstStageMask
must not containPIPELINE_STAGE_MESH_SHADER_BIT_NV
- If the task shaders feature is not enabled,
dstStageMask
must not containPIPELINE_STAGE_TASK_SHADER_BIT_NV
Valid Usage (Implicit)
srcStageMask
must be a valid combination ofVkPipelineStageFlagBits
valuessrcStageMask
must not be 0dstStageMask
must be a valid combination ofVkPipelineStageFlagBits
valuesdstStageMask
must not be 0srcAccessMask
must be a valid combination ofVkAccessFlagBits
valuesdstAccessMask
must be a valid combination ofVkAccessFlagBits
valuesdependencyFlags
must be a valid combination ofVkDependencyFlagBits
values
See Also
Member documentation
srcSubpass
– the subpass index of the first subpass in the dependency, orSUBPASS_EXTERNAL
.dstSubpass
– the subpass index of the second subpass in the dependency, orSUBPASS_EXTERNAL
.srcStageMask
– a bitmask ofVkPipelineStageFlagBits
specifying the source stage mask.dstStageMask
– a bitmask ofVkPipelineStageFlagBits
specifying the destination stage masksrcAccessMask
– a bitmask ofVkAccessFlagBits
specifying a source access mask.dstAccessMask
– a bitmask ofVkAccessFlagBits
specifying a destination access mask.dependencyFlags
– a bitmask ofVkDependencyFlagBits
.
Layout
struct VkSubpassDependency { uint32_t srcSubpass; uint32_t dstSubpass; VkPipelineStageFlags srcStageMask; VkPipelineStageFlags dstStageMask; VkAccessFlags srcAccessMask; VkAccessFlags dstAccessMask; VkDependencyFlags dependencyFlags; }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
VkSubpassDependency.Buffer
An array ofVkSubpassDependency
structs.
-
Field Summary
Fields Modifier and Type Field Description static int
ALIGNOF
The struct alignment in bytes.static int
DEPENDENCYFLAGS
DSTACCESSMASK
DSTSTAGEMASK
DSTSUBPASSThe struct member offsets.static int
SIZEOF
The struct size in bytes.static int
SRCACCESSMASK
SRCSTAGEMASK
SRCSUBPASSThe struct member offsets.
-
Constructor Summary
Constructors Constructor Description VkSubpassDependency(java.nio.ByteBuffer container)
Creates aVkSubpassDependency
instance at the current position of the specifiedByteBuffer
container.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static VkSubpassDependency
calloc()
Returns a newVkSubpassDependency
instance allocated withmemCalloc
.static VkSubpassDependency.Buffer
calloc(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated withmemCalloc
.static VkSubpassDependency
callocStack()
Returns a newVkSubpassDependency
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.static VkSubpassDependency.Buffer
callocStack(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.static VkSubpassDependency.Buffer
callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkSubpassDependency
callocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static VkSubpassDependency
create()
Returns a newVkSubpassDependency
instance allocated withBufferUtils
.static VkSubpassDependency.Buffer
create(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated withBufferUtils
.static VkSubpassDependency
create(long address)
Returns a newVkSubpassDependency
instance for the specified memory address.static VkSubpassDependency.Buffer
create(long address, int capacity)
Create aVkSubpassDependency.Buffer
instance at the specified memory.static VkSubpassDependency
createSafe(long address)
static VkSubpassDependency.Buffer
createSafe(long address, int capacity)
int
dependencyFlags()
Returns the value of thedependencyFlags
field.VkSubpassDependency
dependencyFlags(int value)
Sets the specified value to thedependencyFlags
field.int
dstAccessMask()
Returns the value of thedstAccessMask
field.VkSubpassDependency
dstAccessMask(int value)
Sets the specified value to thedstAccessMask
field.int
dstStageMask()
Returns the value of thedstStageMask
field.VkSubpassDependency
dstStageMask(int value)
Sets the specified value to thedstStageMask
field.int
dstSubpass()
Returns the value of thedstSubpass
field.VkSubpassDependency
dstSubpass(int value)
Sets the specified value to thedstSubpass
field.static VkSubpassDependency
malloc()
Returns a newVkSubpassDependency
instance allocated withmemAlloc
.static VkSubpassDependency.Buffer
malloc(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated withmemAlloc
.static VkSubpassDependency
mallocStack()
Returns a newVkSubpassDependency
instance allocated on the thread-localMemoryStack
.static VkSubpassDependency.Buffer
mallocStack(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated on the thread-localMemoryStack
.static VkSubpassDependency.Buffer
mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency.Buffer
instance allocated on the specifiedMemoryStack
.static VkSubpassDependency
mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency
instance allocated on the specifiedMemoryStack
.static int
ndependencyFlags(long struct)
Unsafe version ofdependencyFlags()
.static void
ndependencyFlags(long struct, int value)
Unsafe version ofdependencyFlags
.static int
ndstAccessMask(long struct)
Unsafe version ofdstAccessMask()
.static void
ndstAccessMask(long struct, int value)
Unsafe version ofdstAccessMask
.static int
ndstStageMask(long struct)
Unsafe version ofdstStageMask()
.static void
ndstStageMask(long struct, int value)
Unsafe version ofdstStageMask
.static int
ndstSubpass(long struct)
Unsafe version ofdstSubpass()
.static void
ndstSubpass(long struct, int value)
Unsafe version ofdstSubpass
.static int
nsrcAccessMask(long struct)
Unsafe version ofsrcAccessMask()
.static void
nsrcAccessMask(long struct, int value)
Unsafe version ofsrcAccessMask
.static int
nsrcStageMask(long struct)
Unsafe version ofsrcStageMask()
.static void
nsrcStageMask(long struct, int value)
Unsafe version ofsrcStageMask
.static int
nsrcSubpass(long struct)
Unsafe version ofsrcSubpass()
.static void
nsrcSubpass(long struct, int value)
Unsafe version ofsrcSubpass
.VkSubpassDependency
set(int srcSubpass, int dstSubpass, int srcStageMask, int dstStageMask, int srcAccessMask, int dstAccessMask, int dependencyFlags)
Initializes this struct with the specified values.VkSubpassDependency
set(VkSubpassDependency src)
Copies the specified struct data to this struct.int
sizeof()
int
srcAccessMask()
Returns the value of thesrcAccessMask
field.VkSubpassDependency
srcAccessMask(int value)
Sets the specified value to thesrcAccessMask
field.int
srcStageMask()
Returns the value of thesrcStageMask
field.VkSubpassDependency
srcStageMask(int value)
Sets the specified value to thesrcStageMask
field.int
srcSubpass()
Returns the value of thesrcSubpass
field.VkSubpassDependency
srcSubpass(int value)
Sets the specified value to thesrcSubpass
field.
-
-
-
Constructor Detail
-
VkSubpassDependency
public VkSubpassDependency(java.nio.ByteBuffer container)
Creates aVkSubpassDependency
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 Detail
-
sizeof
public int sizeof()
- Specified by:
sizeof
in classorg.lwjgl.system.Struct
-
srcSubpass
public int srcSubpass()
Returns the value of thesrcSubpass
field.
-
dstSubpass
public int dstSubpass()
Returns the value of thedstSubpass
field.
-
srcStageMask
public int srcStageMask()
Returns the value of thesrcStageMask
field.
-
dstStageMask
public int dstStageMask()
Returns the value of thedstStageMask
field.
-
srcAccessMask
public int srcAccessMask()
Returns the value of thesrcAccessMask
field.
-
dstAccessMask
public int dstAccessMask()
Returns the value of thedstAccessMask
field.
-
dependencyFlags
public int dependencyFlags()
Returns the value of thedependencyFlags
field.
-
srcSubpass
public VkSubpassDependency srcSubpass(int value)
Sets the specified value to thesrcSubpass
field.
-
dstSubpass
public VkSubpassDependency dstSubpass(int value)
Sets the specified value to thedstSubpass
field.
-
srcStageMask
public VkSubpassDependency srcStageMask(int value)
Sets the specified value to thesrcStageMask
field.
-
dstStageMask
public VkSubpassDependency dstStageMask(int value)
Sets the specified value to thedstStageMask
field.
-
srcAccessMask
public VkSubpassDependency srcAccessMask(int value)
Sets the specified value to thesrcAccessMask
field.
-
dstAccessMask
public VkSubpassDependency dstAccessMask(int value)
Sets the specified value to thedstAccessMask
field.
-
dependencyFlags
public VkSubpassDependency dependencyFlags(int value)
Sets the specified value to thedependencyFlags
field.
-
set
public VkSubpassDependency set(int srcSubpass, int dstSubpass, int srcStageMask, int dstStageMask, int srcAccessMask, int dstAccessMask, int dependencyFlags)
Initializes this struct with the specified values.
-
set
public VkSubpassDependency set(VkSubpassDependency src)
Copies the specified struct data to this struct.- Parameters:
src
- the source struct- Returns:
- this struct
-
malloc
public static VkSubpassDependency malloc()
Returns a newVkSubpassDependency
instance allocated withmemAlloc
. The instance must be explicitly freed.
-
calloc
public static VkSubpassDependency calloc()
Returns a newVkSubpassDependency
instance allocated withmemCalloc
. The instance must be explicitly freed.
-
create
public static VkSubpassDependency create()
Returns a newVkSubpassDependency
instance allocated withBufferUtils
.
-
create
public static VkSubpassDependency create(long address)
Returns a newVkSubpassDependency
instance for the specified memory address.
-
createSafe
@Nullable public static VkSubpassDependency createSafe(long address)
-
malloc
public static VkSubpassDependency.Buffer malloc(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated withmemAlloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
calloc
public static VkSubpassDependency.Buffer calloc(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated withmemCalloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
create
public static VkSubpassDependency.Buffer create(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated withBufferUtils
.- Parameters:
capacity
- the buffer capacity
-
create
public static VkSubpassDependency.Buffer create(long address, int capacity)
Create aVkSubpassDependency.Buffer
instance at the specified memory.- Parameters:
address
- the memory addresscapacity
- the buffer capacity
-
createSafe
@Nullable public static VkSubpassDependency.Buffer createSafe(long address, int capacity)
-
mallocStack
public static VkSubpassDependency mallocStack()
Returns a newVkSubpassDependency
instance allocated on the thread-localMemoryStack
.
-
callocStack
public static VkSubpassDependency callocStack()
Returns a newVkSubpassDependency
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.
-
mallocStack
public static VkSubpassDependency mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocate
-
callocStack
public static VkSubpassDependency callocStack(org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocate
-
mallocStack
public static VkSubpassDependency.Buffer mallocStack(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated on the thread-localMemoryStack
.- Parameters:
capacity
- the buffer capacity
-
callocStack
public static VkSubpassDependency.Buffer callocStack(int capacity)
Returns a newVkSubpassDependency.Buffer
instance allocated on the thread-localMemoryStack
and initializes all its bits to zero.- Parameters:
capacity
- the buffer capacity
-
mallocStack
public static VkSubpassDependency.Buffer mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency.Buffer
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
callocStack
public static VkSubpassDependency.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newVkSubpassDependency.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
nsrcSubpass
public static int nsrcSubpass(long struct)
Unsafe version ofsrcSubpass()
.
-
ndstSubpass
public static int ndstSubpass(long struct)
Unsafe version ofdstSubpass()
.
-
nsrcStageMask
public static int nsrcStageMask(long struct)
Unsafe version ofsrcStageMask()
.
-
ndstStageMask
public static int ndstStageMask(long struct)
Unsafe version ofdstStageMask()
.
-
nsrcAccessMask
public static int nsrcAccessMask(long struct)
Unsafe version ofsrcAccessMask()
.
-
ndstAccessMask
public static int ndstAccessMask(long struct)
Unsafe version ofdstAccessMask()
.
-
ndependencyFlags
public static int ndependencyFlags(long struct)
Unsafe version ofdependencyFlags()
.
-
nsrcSubpass
public static void nsrcSubpass(long struct, int value)
Unsafe version ofsrcSubpass
.
-
ndstSubpass
public static void ndstSubpass(long struct, int value)
Unsafe version ofdstSubpass
.
-
nsrcStageMask
public static void nsrcStageMask(long struct, int value)
Unsafe version ofsrcStageMask
.
-
ndstStageMask
public static void ndstStageMask(long struct, int value)
Unsafe version ofdstStageMask
.
-
nsrcAccessMask
public static void nsrcAccessMask(long struct, int value)
Unsafe version ofsrcAccessMask
.
-
ndstAccessMask
public static void ndstAccessMask(long struct, int value)
Unsafe version ofdstAccessMask
.
-
ndependencyFlags
public static void ndependencyFlags(long struct, int value)
Unsafe version ofdependencyFlags
.
-
-