Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO :: VkStructureType
- pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES :: VkStructureType
- pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES :: VkStructureType
- pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits
- data VkPhysicalDeviceMultiviewFeatures = VkPhysicalDeviceMultiviewFeatures {}
- data VkPhysicalDeviceMultiviewProperties = VkPhysicalDeviceMultiviewProperties {}
- data VkRenderPassMultiviewCreateInfo = VkRenderPassMultiviewCreateInfo {}
Documentation
pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits Source #
VK_DEPENDENCY_VIEW_LOCAL_BIT
specifies that a subpass has more than
one
view.
data VkPhysicalDeviceMultiviewFeatures Source #
VkPhysicalDeviceMultiviewFeatures - Structure describing multiview features that can be supported by an implementation
Members
The members of the VkPhysicalDeviceMultiviewFeatures
structure
describe the following features:
Description
multiview
specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.
multiviewGeometryShader
specifies whether the implementation supports multiview rendering within a render pass, with geometry shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a geometry shader.multiviewTessellationShader
specifies whether the implementation supports multiview rendering within a render pass, with tessellation shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include any tessellation shaders.
If the VkPhysicalDeviceMultiviewFeatures
structure is included in the
pNext
chain of
VkPhysicalDeviceFeatures2
,
it is filled with values indicating whether each feature is supported.
VkPhysicalDeviceMultiviewFeatures
can also be used in the pNext
chain of VkDeviceCreateInfo
to enable
the features.
Valid Usage
- If
multiviewGeometryShader
is enabled thenmultiview
must also be enabled.
- If
multiviewTessellationShader
is enabled thenmultiview
must also be enabled.
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
See Also
VkBool32
, VkStructureType
Instances
data VkPhysicalDeviceMultiviewProperties Source #
VkPhysicalDeviceMultiviewProperties - Structure describing multiview limits that can be supported by an implementation
Members
The members of the VkPhysicalDeviceMultiviewProperties
structure
describe the following implementation-dependent limits:
Description
maxMultiviewViewCount
is one greater than the maximum view index that can be used in a subpass.
maxMultiviewInstanceIndex
is the maximum valid value of instance index allowed to be generated by a drawing command recorded within a subpass of a multiview render pass instance.
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
If the VkPhysicalDeviceMultiviewProperties
structure is included in
the pNext
chain of
VkPhysicalDeviceProperties2
,
it is filled with the implementation-dependent limits.
See Also
Instances
data VkRenderPassMultiviewCreateInfo Source #
VkRenderPassMultiviewCreateInfo - Structure containing multiview info for all subpasses
Description
When a subpass uses a non-zero view mask, multiview functionality is
considered to be enabled. Multiview is all-or-nothing for a render pass
- that is, either all subpasses must have a non-zero view mask (though
some subpasses may have only one view) or all must be zero.
Multiview causes all drawing and clear commands in the subpass to behave
as if they were broadcast to each view, where a view is represented by
one layer of the framebuffer attachments. All draws and clears are
broadcast to each view index whose bit is set in the view mask. The
view index is provided in the ViewIndex
shader input variable, and
color, depth/stencil, and input attachments all read/write the layer
of the framebuffer corresponding to the view index.
If the view mask is zero for all subpasses, multiview is considered to be disabled and all drawing commands execute normally, without this additional broadcasting.
Some implementations may not support multiview in conjunction with geometry shaders or tessellation shaders.
When multiview is enabled, the VK_DEPENDENCY_VIEW_LOCAL_BIT
bit in a
dependency can be used to express a view-local dependency, meaning
that each view in the destination subpass depends on a single view in
the source subpass. Unlike pipeline barriers, a subpass dependency can
potentially have a different view mask in the source subpass and the
destination subpass. If the dependency is view-local, then each view
(dstView) in the destination subpass depends on the view dstView +
pViewOffsets[dependency] in the source subpass. If there is not such a
view in the source subpass, then this dependency does not affect that
view in the destination subpass. If the dependency is not view-local,
then all views in the destination subpass depend on all views in the
source subpass, and the view offset is ignored. A non-zero view offset
is not allowed in a self-dependency.
The elements of pCorrelationMasks
are a set of masks of views
indicating that views in the same mask may exhibit spatial coherency
between the views, making it more efficient to render them concurrently.
Correlation masks must not have a functional effect on the results of
the multiview rendering.
When multiview is enabled, at the beginning of each subpass all
non-render pass state is undefined. In particular, each time
vkCmdBeginRenderPass
or
vkCmdNextSubpass
is
called the graphics pipeline must be bound, any relevant descriptor
sets or vertex/index buffers must be bound, and any relevant dynamic
state or push constants must be set before they are used.
A multiview subpass can declare that its shaders will write per-view
attributes for all views in a single invocation, by setting the
VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
bit in the subpass
description. The only supported per-view attributes are position and
viewport mask, and per-view position and viewport masks are written to
output array variables decorated with PositionPerViewNV
and
ViewportMaskPerViewNV
, respectively. If
{html_spec_relative}#VK_NV_viewport_array2
is not supported and
enabled, ViewportMaskPerViewNV
must not be used. Values written to
elements of PositionPerViewNV
and ViewportMaskPerViewNV
must not
depend on the ViewIndex
. The shader must also write to an output
variable decorated with Position
, and the value written to Position
must equal the value written to PositionPerViewNV
[ViewIndex
].
Similarly, if ViewportMaskPerViewNV
is written to then the shader
must also write to an output variable decorated with ViewportMaskNV
,
and the value written to ViewportMaskNV
must equal the value written
to ViewportMaskPerViewNV
[ViewIndex
]. Implementations will either use
values taken from Position
and ViewportMaskNV
and invoke the shader
once for each view, or will use values taken from PositionPerViewNV
and ViewportMaskPerViewNV
and invoke the shader fewer times. The
values written to Position
and ViewportMaskNV
must not depend on
the values written to PositionPerViewNV
and ViewportMaskPerViewNV
,
or vice versa (to allow compilers to eliminate the unused outputs). All
attributes that do not have *PerViewNV counterparts must not depend on
ViewIndex
.
Per-view attributes are all-or-nothing for a subpass. That is, all
pipelines compiled against a subpass that includes the
VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
bit must write
per-view attributes to the *PerViewNV[] shader outputs, in addition to
the non-per-view (e.g. Position
) outputs. Pipelines compiled against a
subpass that does not include this bit must not include the
*PerViewNV[] outputs in their interfaces.
Valid Usage
- If
subpassCount
is not zero,subpassCount
must be equal to thesubpassCount
in theVkRenderPassCreateInfo
structure at the start of the chain
- If
dependencyCount
is not zero,dependencyCount
must be equal to thedependencyCount
in theVkRenderPassCreateInfo
structure at the start of the chain - Each view index must not be set in more than one element of
pCorrelationMasks
- If an element of
pViewOffsets
is non-zero, the correspondingVkSubpassDependency
structure must have different values ofsrcSubpass
anddstSubpass
.
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
- If
subpassCount
is not0
,pViewMasks
must be a valid pointer to an array ofsubpassCount
uint32_t
values - If
dependencyCount
is not0
,pViewOffsets
must be a valid pointer to an array ofdependencyCount
int32_t
values - If
correlationMaskCount
is not0
,pCorrelationMasks
must be a valid pointer to an array ofcorrelationMaskCount
uint32_t
values
See Also
VkRenderPassMultiviewCreateInfo | |
|