Vulkan-Docs/doc/specs/vulkan/man/VkSubpassDependency.txt

103 lines
3.6 KiB
Plaintext

// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
VkSubpassDependency(3)
======================
Name
----
VkSubpassDependency - Structure specifying a subpass dependency
C Specification
---------------
// refBegin VkSubpassDependency - Structure specifying a subpass dependency
The sname:VkSubpassDependency structure is defined as:
include::../api/structs/VkSubpassDependency.txt[]
Members
-------
* pname:srcSubpass and pname:dstSubpass are the subpass indices of the
producer and consumer subpasses, respectively. pname:srcSubpass and
pname:dstSubpass can: also have the special value
ename:VK_SUBPASS_EXTERNAL. The source subpass must: always be a lower
numbered subpass than the destination subpass (excluding external
subpasses and
<<synchronization-pipeline-barriers-subpass-self-dependencies,
self-dependencies>>), so that the order of subpass descriptions is a
valid execution ordering, avoiding cycles in the dependency graph.
* pname:srcStageMask, pname:dstStageMask, pname:srcAccessMask,
pname:dstAccessMask, and pname:dependencyFlags describe an
<<synchronization-execution-and-memory-dependencies,execution and memory
dependency>> between subpasses. The bits that can: be included in
pname:dependencyFlags are:
+
--
// refBegin VkDependencyFlagBits - Bitmask specifying dependencies between subpasses
include::../api/enums/VkDependencyFlagBits.txt[]
--
** If pname:dependencyFlags contains ename:VK_DEPENDENCY_BY_REGION_BIT,
then the dependency is by-region as defined in
<<synchronization-execution-and-memory-dependencies,Execution And Memory
Dependencies>>.
Description
-----------
Each subpass dependency defines an execution and memory dependency
between two sets of commands, with the second set depending on the first
set. When pname:srcSubpass does not equal pname:dstSubpass then the first
set of commands is:
* All commands in the subpass indicated by pname:srcSubpass, if
pname:srcSubpass is not ename:VK_SUBPASS_EXTERNAL.
* All commands before the render pass instance, if pname:srcSubpass is
ename:VK_SUBPASS_EXTERNAL.
While the corresponding second set of commands is:
* All commands in the subpass indicated by pname:dstSubpass, if
pname:dstSubpass is not ename:VK_SUBPASS_EXTERNAL.
* All commands after the render pass instance, if pname:dstSubpass is
ename:VK_SUBPASS_EXTERNAL.
When pname:srcSubpass equals pname:dstSubpass then the first set consists of
commands in the subpass before a call to flink:vkCmdPipelineBarrier and the
second set consists of commands in the subpass following that same call as
described in the
<<synchronization-pipeline-barriers-subpass-self-dependencies, Subpass
Self-dependency>> section.
The pname:srcStageMask, pname:dstStageMask, pname:srcAccessMask,
pname:dstAccessMask, and pname:dependencyFlags parameters of the dependency
are interpreted the same way as for other dependencies, as described in
<<synchronization, Synchronization and Cache Control>>.
include::../validity/structs/VkSubpassDependency.txt[]
See Also
--------
elink:VkAccessFlags, elink:VkDependencyFlags, elink:VkPipelineStageFlags, slink:VkRenderPassCreateInfo
Document Notes
--------------
For more information, see the Vulkan Specification at URL
https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubpassDependency
This page is extracted from the Vulkan Specification.
Fixes and changes should be made to the Specification,not directly.
include::footer.txt[]