Class VkSubpassDependency
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
Description
If srcSubpass is equal to dstSubpass then the VkSubpassDependency does not directly define a dependency. Instead, it enables pipeline barriers to be used in a render pass instance within the identified subpass, where the scopes of one pipeline barrier must be a subset of those described by one subpass dependency. Subpass dependencies specified in this way that include framebuffer-space stages in the srcStageMask must only include framebuffer-space stages in dstStageMask, and must include DEPENDENCY_BY_REGION_BIT. When a subpass dependency is specified in this way for a subpass that has more than one view in its view mask, its dependencyFlags must include DEPENDENCY_VIEW_LOCAL_BIT.
If srcSubpass and dstSubpass are not equal, when a render pass instance which includes a subpass dependency is submitted to a queue, it defines a dependency between the subpasses identified by srcSubpass and dstSubpass.
If srcSubpass is equal to SUBPASS_EXTERNAL, the first synchronization scope includes commands that occur earlier in submission order than the CmdBeginRenderPass used to begin the render pass instance. Otherwise, the first set of commands includes all commands submitted as part of the subpass instance identified by srcSubpass and any load, store, or multisample resolve operations on attachments used in srcSubpass. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the source stage mask specified by srcStageMask.
If dstSubpass is equal to SUBPASS_EXTERNAL, the second synchronization scope includes commands that occur later in submission order than the CmdEndRenderPass used to end the render pass instance. Otherwise, the second set of commands includes all commands submitted as part of the subpass instance identified by dstSubpass and any load, store, and multisample resolve operations on attachments used in dstSubpass. In either case, the second synchronization scope is limited to operations on the pipeline stages determined by the destination stage mask specified by dstStageMask.
The first access scope is limited to accesses 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 by srcAccessMask.
The second access scope is limited to accesses 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 by dstAccessMask.
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 matching srcAccessMask and dstAccessMask parameters) submitted as a part of a CmdPipelineBarrier (with matching srcStageMask and 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 the VkMemoryBarrier above, the queue family indices set to QUEUE_FAMILY_IGNORED, and layouts as follows:
- The equivalent to
oldLayoutis the attachment’s layout according to the subpass description forsrcSubpass. - The equivalent to
newLayoutis the attachment’s layout according to the subpass description fordstSubpass.
Valid Usage
- If the
geometryShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_GEOMETRY_SHADER_BIT - If the
tessellationShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITorPIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT - If the
conditionalRenderingfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT - If the
fragmentDensityMapfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT - If the
transformFeedbackfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT - If the
meshShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_MESH_SHADER_BIT_EXT - If the
taskShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_TASK_SHADER_BIT_EXT - If neither of the
shadingRateImageor theattachmentFragmentShadingRatefeatures are enabled,srcStageMaskmust not containPIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR - If the
synchronization2feature is not enabled,srcStageMaskmust not be 0 - If neither the
VK_NV_ray_tracingextension or therayTracingPipelinefeature are enabled,srcStageMaskmust not containPIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
- If the
geometryShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_GEOMETRY_SHADER_BIT - If the
tessellationShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITorPIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT - If the
conditionalRenderingfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT - If the
fragmentDensityMapfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT - If the
transformFeedbackfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT - If the
meshShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_MESH_SHADER_BIT_EXT - If the
taskShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_TASK_SHADER_BIT_EXT - If neither of the
shadingRateImageor theattachmentFragmentShadingRatefeatures are enabled,dstStageMaskmust not containPIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR - If the
synchronization2feature is not enabled,dstStageMaskmust not be 0 - If neither the
VK_NV_ray_tracingextension or therayTracingPipelinefeature are enabled,dstStageMaskmust not containPIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR srcSubpassmust be less than or equal todstSubpass, unless one of them isSUBPASS_EXTERNAL, to avoid cyclic dependencies and ensure a valid execution ordersrcSubpassanddstSubpassmust not both be equal toSUBPASS_EXTERNAL- If
srcSubpassis equal todstSubpassandsrcStageMaskincludes a framebuffer-space stage,dstStageMaskmust only contain framebuffer-space stages - Any access flag included in
srcAccessMaskmust be supported by one of the pipeline stages insrcStageMask, as specified in the table of supported access types - Any access flag included in
dstAccessMaskmust be supported by one of the pipeline stages indstStageMask, as specified in the table of supported access types - If
srcSubpassequalsdstSubpass, andsrcStageMaskanddstStageMaskboth include a framebuffer-space stage, thendependencyFlagsmust includeDEPENDENCY_BY_REGION_BIT - If
dependencyFlagsincludesDEPENDENCY_VIEW_LOCAL_BIT,srcSubpassmust not be equal toSUBPASS_EXTERNAL - If
dependencyFlagsincludesDEPENDENCY_VIEW_LOCAL_BIT,dstSubpassmust not be equal toSUBPASS_EXTERNAL - If
srcSubpassequalsdstSubpassand that subpass has more than one bit set in the view mask, thendependencyFlagsmust includeDEPENDENCY_VIEW_LOCAL_BIT
Valid Usage (Implicit)
srcStageMaskmust be a valid combination ofVkPipelineStageFlagBitsvaluesdstStageMaskmust be a valid combination ofVkPipelineStageFlagBitsvaluessrcAccessMaskmust be a valid combination ofVkAccessFlagBitsvaluesdstAccessMaskmust be a valid combination ofVkAccessFlagBitsvaluesdependencyFlagsmust be a valid combination ofVkDependencyFlagBitsvalues
See Also
Layout
struct VkSubpassDependency {
uint32_t srcSubpass();
uint32_t dstSubpass();
VkPipelineStageFlags srcStageMask();
VkPipelineStageFlags dstStageMask();
VkAccessFlags srcAccessMask();
VkAccessFlags dstAccessMask();
VkDependencyFlags dependencyFlags();
}-
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 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
ConstructorsConstructorDescriptionVkSubpassDependency(ByteBuffer container) Creates aVkSubpassDependencyinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionstatic VkSubpassDependencycalloc()Returns a newVkSubpassDependencyinstance allocated withmemCalloc.static VkSubpassDependency.Buffercalloc(int capacity) Returns a newVkSubpassDependency.Bufferinstance allocated withmemCalloc.static VkSubpassDependency.Buffercalloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkSubpassDependency.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkSubpassDependencycalloc(org.lwjgl.system.MemoryStack stack) Returns a newVkSubpassDependencyinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkSubpassDependencyDeprecated.static VkSubpassDependency.BuffercallocStack(int capacity) Deprecated.static VkSubpassDependency.BuffercallocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.static VkSubpassDependencycallocStack(org.lwjgl.system.MemoryStack stack) Deprecated.static VkSubpassDependencycreate()Returns a newVkSubpassDependencyinstance allocated withBufferUtils.static VkSubpassDependency.Buffercreate(int capacity) Returns a newVkSubpassDependency.Bufferinstance allocated withBufferUtils.static VkSubpassDependencycreate(long address) Returns a newVkSubpassDependencyinstance for the specified memory address.static VkSubpassDependency.Buffercreate(long address, int capacity) Create aVkSubpassDependency.Bufferinstance at the specified memory.static @Nullable VkSubpassDependencycreateSafe(long address) static @Nullable VkSubpassDependency.BuffercreateSafe(long address, int capacity) inta bitmask ofVkDependencyFlagBits.dependencyFlags(int value) Sets the specified value to thedependencyFlags()field.inta bitmask ofVkAccessFlagBitsspecifying a destination access mask.dstAccessMask(int value) Sets the specified value to thedstAccessMask()field.inta bitmask ofVkPipelineStageFlagBitsspecifying the destination stage maskdstStageMask(int value) Sets the specified value to thedstStageMask()field.intthe subpass index of the second subpass in the dependency, orSUBPASS_EXTERNAL.dstSubpass(int value) Sets the specified value to thedstSubpass()field.static VkSubpassDependencymalloc()Returns a newVkSubpassDependencyinstance allocated withmemAlloc.static VkSubpassDependency.Buffermalloc(int capacity) Returns a newVkSubpassDependency.Bufferinstance allocated withmemAlloc.static VkSubpassDependency.Buffermalloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkSubpassDependency.Bufferinstance allocated on the specifiedMemoryStack.static VkSubpassDependencymalloc(org.lwjgl.system.MemoryStack stack) Returns a newVkSubpassDependencyinstance allocated on the specifiedMemoryStack.static VkSubpassDependencyDeprecated.static VkSubpassDependency.BuffermallocStack(int capacity) Deprecated.static VkSubpassDependency.BuffermallocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.static VkSubpassDependencymallocStack(org.lwjgl.system.MemoryStack stack) Deprecated.static intndependencyFlags(long struct) Unsafe version ofdependencyFlags().static voidndependencyFlags(long struct, int value) Unsafe version ofdependencyFlags.static intndstAccessMask(long struct) Unsafe version ofdstAccessMask().static voidndstAccessMask(long struct, int value) Unsafe version ofdstAccessMask.static intndstStageMask(long struct) Unsafe version ofdstStageMask().static voidndstStageMask(long struct, int value) Unsafe version ofdstStageMask.static intndstSubpass(long struct) Unsafe version ofdstSubpass().static voidndstSubpass(long struct, int value) Unsafe version ofdstSubpass.static intnsrcAccessMask(long struct) Unsafe version ofsrcAccessMask().static voidnsrcAccessMask(long struct, int value) Unsafe version ofsrcAccessMask.static intnsrcStageMask(long struct) Unsafe version ofsrcStageMask().static voidnsrcStageMask(long struct, int value) Unsafe version ofsrcStageMask.static intnsrcSubpass(long struct) Unsafe version ofsrcSubpass().static voidnsrcSubpass(long struct, int value) Unsafe version ofsrcSubpass.set(int srcSubpass, int dstSubpass, int srcStageMask, int dstStageMask, int srcAccessMask, int dstAccessMask, int dependencyFlags) Initializes this struct with the specified values.set(VkSubpassDependency src) Copies the specified struct data to this struct.intsizeof()inta bitmask ofVkAccessFlagBitsspecifying a source access mask.srcAccessMask(int value) Sets the specified value to thesrcAccessMask()field.inta bitmask ofVkPipelineStageFlagBitsspecifying the source stage mask.srcStageMask(int value) Sets the specified value to thesrcStageMask()field.intthe subpass index of the first subpass in the dependency, orSUBPASS_EXTERNAL.srcSubpass(int value) Sets the specified value to thesrcSubpass()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. -
SRCSUBPASS
public static final int SRCSUBPASSThe struct member offsets. -
DSTSUBPASS
public static final int DSTSUBPASSThe struct member offsets. -
SRCSTAGEMASK
public static final int SRCSTAGEMASKThe struct member offsets. -
DSTSTAGEMASK
public static final int DSTSTAGEMASKThe struct member offsets. -
SRCACCESSMASK
public static final int SRCACCESSMASKThe struct member offsets. -
DSTACCESSMASK
public static final int DSTACCESSMASKThe struct member offsets. -
DEPENDENCYFLAGS
public static final int DEPENDENCYFLAGSThe struct member offsets.
-
-
Constructor Details
-
VkSubpassDependency
Creates aVkSubpassDependencyinstance 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<VkSubpassDependency>
-
srcSubpass
public int srcSubpass()the subpass index of the first subpass in the dependency, orSUBPASS_EXTERNAL. -
dstSubpass
public int dstSubpass()the subpass index of the second subpass in the dependency, orSUBPASS_EXTERNAL. -
srcStageMask
public int srcStageMask()a bitmask ofVkPipelineStageFlagBitsspecifying the source stage mask. -
dstStageMask
public int dstStageMask()a bitmask ofVkPipelineStageFlagBitsspecifying the destination stage mask -
srcAccessMask
public int srcAccessMask()a bitmask ofVkAccessFlagBitsspecifying a source access mask. -
dstAccessMask
public int dstAccessMask()a bitmask ofVkAccessFlagBitsspecifying a destination access mask. -
dependencyFlags
public int dependencyFlags()a bitmask ofVkDependencyFlagBits. -
srcSubpass
Sets the specified value to thesrcSubpass()field. -
dstSubpass
Sets the specified value to thedstSubpass()field. -
srcStageMask
Sets the specified value to thesrcStageMask()field. -
dstStageMask
Sets the specified value to thedstStageMask()field. -
srcAccessMask
Sets the specified value to thesrcAccessMask()field. -
dstAccessMask
Sets the specified value to thedstAccessMask()field. -
dependencyFlags
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
Copies the specified struct data to this struct.- Parameters:
src- the source struct- Returns:
- this struct
-
malloc
Returns a newVkSubpassDependencyinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkSubpassDependencyinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkSubpassDependencyinstance allocated withBufferUtils. -
create
Returns a newVkSubpassDependencyinstance for the specified memory address. -
createSafe
-
malloc
Returns a newVkSubpassDependency.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkSubpassDependency.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkSubpassDependency.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aVkSubpassDependency.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 VkSubpassDependency.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 VkSubpassDependency.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack) Deprecated.Deprecated for removal in 3.4.0. Usecalloc(int, MemoryStack)instead. -
malloc
Returns a newVkSubpassDependencyinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newVkSubpassDependencyinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
Returns a newVkSubpassDependency.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
Returns a newVkSubpassDependency.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
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.
-