Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_QCOM_multiview_per_view_render_areas - device extension
VK_QCOM_multiview_per_view_render_areas
- Name String
VK_QCOM_multiview_per_view_render_areas
- Extension Type
- Device extension
- Registered Extension Number
- 511
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies; Contact
Other Extension Metadata
- Last Modified Date
- 2023-01-10
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- This extension interacts with
VK_KHR_dynamic_rendering
- This extension interacts with
VK_QCOM_render_pass_transform
- This extension interacts with
- Contributors
- Jeff Leger, Qualcomm
- Jonathan Tinkham, Qualcomm
- Jonathan Wicks, Qualcomm
Description
Certain use cases (e.g., side-by-side VR rendering) use multiview and render to distinct regions of the framebuffer for each view. On some implementations, there may be a performance benefit for providing per-view render areas to the implementation. Such per-view render areas can be used by the implementation to reduce the pixels that are affected by attachment load, store, and multisample resolve operations.
The extension enables a multiview render pass instance to define per-view render areas. For each view of a multiview render pass instance, only those pixels in the per-view render area are affected by load, store and resolve operations.
New Structures
Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:
New Enum Constants
Issues
1) Do the per-view renderAreas
interact with
getRenderAreaGranularity
?
RESOLVED: There is no change. The granularity returned by
getRenderAreaGranularity
also applies to the
per-view renderAreas
.
2) How does this extension interact with
VK_QCOM_render_pass_transform
?
RESOLVED: When VK_QCOM_render_pass_transform
is enabled, the
application provides render area in non-rotated coordinates which is
rotated by the implementation to the rotated coordinate system. When
this extension is used in combination with
VK_QCOM_render_pass_transform
, then the renderArea
provided in
RenderingInfo
::renderArea
,
RenderPassBeginInfo
::renderArea
,
or
CommandBufferInheritanceRenderPassTransformInfoQCOM
::renderArea
is rotated by the implementation. The per-view render areas are not
rotated.
3) How does this extension interact with
VK_QCOM_multiview_per_view_viewports
RESOLVED: There is no direct interaction. The per-view viewports and the per-view renderAreas are orthogonal features.
4) When a per-view renderArea
is specified, must multiview rendering
for each view of a multiview render pass be contained within the
per-view renderArea
?
RESOLVED: Yes, and the VK_QCOM_multiview_per_view_viewports
may
help here since it provides per-view scissors.
5) When per-view render areas are specified, what purpose if any do
RenderPassBeginInfo
::renderArea
and
RenderingInfo
::renderArea
serve?
RESOLVED: The per-view renderArea
effectively overrides the
per-renderpass renderArea
. The per-view renderArea
defines the
regions of the attachments that are effected by load, store, and
multisample resolve operations. A valid implementation could ignore the
per-renderpass renderArea
. However, as an aid to the implementation,
the application must set the per-renderpass renderArea
to an area that
is at least as large as the union of all the per-view render areas.
Pixels that are within the per-renderpass renderArea
but not within
any per-view render area must not be affected by load, store, or
multisample resolve operations.
Version History
- Revision 1, 2023-01-10 (Jeff Leger)
See Also
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
,
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- data PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
- data MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
- type QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1
- pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION :: forall a. Integral a => a
- type QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas"
- pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM Source #
VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM - Structure describing multiview per view render areas features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
structure
is included in the pNext
chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2
,
it is filled in to indicate whether each corresponding feature is
supported. PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
can
also be used in the pNext
chain of
DeviceCreateInfo
to selectively enable these
features.
Valid Usage (Implicit)
See Also
VK_QCOM_multiview_per_view_render_areas,
Bool32
,
StructureType
Instances
data MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM Source #
VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM - Set the multiview per view render areas for a render pass instance
Description
If perViewRenderAreaCount
is not zero, then the elements of
pPerViewRenderAreas
override the value of
RenderPassBeginInfo
::renderArea
or
RenderingInfo
::renderArea
and define per-view render areas for the individual views of a multiview
render pass. The render area for the view with view index i
is
specified by pPerViewRenderAreas
[i].
The per-view render areas define per-view regions of attachments that
are loaded, stored, and resolved according to the loadOp
, storeOp
,
and resolveMode
values of the render pass instance. When per-view
render areas are defined, the value of
RenderPassBeginInfo
::renderArea
or
RenderingInfo
::renderArea
must be set to a render area that includes the union of all per-view
render areas, may be used by the implementation for optimizations, but
does not affect loads, stores, or resolves.
If this structure is present and if perViewRenderAreaCount
is not
zero, then perViewRenderAreaCount
must be at least least one greater
than the most significant bit set in any any element of
RenderPassMultiviewCreateInfo
::pViewMasks
.
or
RenderingInfo
::viewMask
If this structure is not present or if perViewRenderAreaCount
is zero,
RenderPassBeginInfo
::renderArea
or
RenderingInfo
::renderArea
is used for all views.
Valid Usage
-
The
offset.y
member of any element ofpPerViewRenderAreas
must be greater than or equal to 0 -
The sum of the
offset.x
andextent.width
members of any element ofpPerViewRenderAreas
must be less than or equal to maxFramebufferWidth -
The sum of the
offset.y
andextent.height
members of any element ofpPerViewRenderAreas
must be less than or equal to maxFramebufferHeight -
If this structure is in the
pNext
chain ofRenderPassBeginInfo
and if the render pass object included an element inRenderPassMultiviewCreateInfo
::pViewMasks
that set bitn
, thenperViewRenderAreaCount
must be at least equal ton+1
. -
If this structure is in the
pNext
chain ofRenderingInfo
and ifRenderingInfo
::viewMask
set bitn
, thenperViewRenderAreaCount
must be at least equal ton+1
.
Valid Usage (Implicit)
-
If
perViewRenderAreaCount
is not0
,pPerViewRenderAreas
must be a valid pointer to an array ofperViewRenderAreaCount
Rect2D
structures
See Also
VK_QCOM_multiview_per_view_render_areas,
Rect2D
,
StructureType
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM | |
|
Instances
pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION :: forall a. Integral a => a Source #
type QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas" Source #
pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #