VK_QCOM_multiview_per_view_render_areas
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
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 VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
- Extending VkRenderPassBeginInfo, VkRenderingInfo:
New Enum Constants
VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME
VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION
- Extending VkStructureType:
VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
Issues
1) Do the per-view renderAreas
interact with
vkGetRenderAreaGranularity ?
RESOLVED: There is no change.
The granularity returned by vkGetRenderAreaGranularity 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 VkRenderingInfo::renderArea
,
VkRenderPassBeginInfo::renderArea
, or
VkCommandBufferInheritanceRenderPassTransformInfoQCOM::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
VkRenderPassBeginInfo::renderArea
and
VkRenderingInfo::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)