Modulevulkan-3.27GHC2021
Vulkan.Extensions.VK_KHR_maintenance2
Name
VK_KHR_maintenance2 - device extension
VK_KHR_maintenance2
- Name String
VK_KHR_maintenance2
- Extension Type
Device extension
- Registered Extension Number
118
- Revision
1
- Ratification Status
Ratified
- Extension and Version Dependencies
None
- Deprecation State
Promoted to Vulkan 1.1
- Contact
Other Extension Metadata
- Last Modified Date
2017-09-05
- Contributors
Michael Worcester, Imagination Technologies
Stuart Smith, Imagination Technologies
Jeff Bolz, NVIDIA
Daniel Koch, NVIDIA
Jan-Harald Fredriksen, ARM
Daniel Rakos, AMD
Neil Henning, Codeplay
Piers Daniell, NVIDIA
Description
VK_KHR_maintenance2 adds a collection of minor features that were
intentionally left out or overlooked from the original Vulkan 1.0
release.
The new features are as follows:
Allow the application to specify which aspect of an input attachment might be read for a given subpass.
Allow implementations to express the clipping behavior of points.
Allow creating images with usage flags that may not be supported for the base image’s format, but are supported for image views of the image that have a different but compatible format.
Allow creating uncompressed image views of compressed images.
Allow the application to select between an upper-left and lower-left origin for the tessellation domain space.
Adds two new image layouts for depth stencil images to allow either the depth or stencil aspect to be read-only while the other aspect is writable.
Input Attachment Specification
Input attachment specification allows an application to specify which
aspect of a multi-aspect image (e.g. a depth/stencil format) will be
accessed via a subpassLoad operation.
On some implementations there may be a performance penalty if the implementation does not know (at createRenderPass time) which aspect(s) of multi-aspect images can be accessed as input attachments.
Promotion to Vulkan 1.1
All functionality in this extension is included in core Vulkan 1.1, with the KHR suffix omitted. The original type, enum, and command names are still available as aliases of the core functionality.
New Structures
Extending ImageViewCreateInfo:
Extending PhysicalDeviceProperties2:
Extending PipelineTessellationStateCreateInfo:
Extending RenderPassCreateInfo:
New Enums
New Enum Constants
Extending ImageCreateFlagBits:
Extending ImageLayout:
Extending PointClippingBehavior:
Extending StructureType:
Extending TessellationDomainOrigin:
Input Attachment Specification Example
Consider the case where a render pass has two subpasses and two attachments.
Attachment 0 has the format FORMAT_D24_UNORM_S8_UINT, attachment 1 has some color format.
Subpass 0 writes to attachment 0, subpass 1 reads only the depth information from attachment 0 (using inputAttachmentRead) and writes to attachment 1.
VkInputAttachmentAspectReferenceKHR references[] = {
{
.subpass = 1,
.inputAttachmentIndex = 0,
.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT
}
};
VkRenderPassInputAttachmentAspectCreateInfoKHR specifyAspects = {
.sType = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
.pNext = NULL,
.aspectReferenceCount = 1,
.pAspectReferences = references
};
VkRenderPassCreateInfo createInfo = {
...
.pNext = &specifyAspects,
...
};
vkCreateRenderPass(...);Issues
1) What is the default tessellation domain origin?
RESOLVED: Vulkan 1.0 originally inadvertently documented a lower-left origin, but the conformance tests and all implementations implemented an upper-left origin. This extension adds a control to select between lower-left (for compatibility with OpenGL) and upper-left, and we retroactively fix unextended Vulkan to have a default of an upper-left origin.
Version History
Revision 1, 2017-04-28
See Also
No cross-references are available
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
- pattern KHR_MAINTENANCE2_SPEC_VERSION
- pattern KHR_MAINTENANCE2_EXTENSION_NAME
- pattern IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR
- pattern IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR
- pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR
- pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR
- pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR
- pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR
- pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
- pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
- pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR
- pattern POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
- pattern TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR
- pattern TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
- type PointClippingBehaviorKHR
- type TessellationDomainOriginKHR
- type InputAttachmentAspectReferenceKHR
- type RenderPassInputAttachmentAspectCreateInfoKHR
- type PhysicalDevicePointClippingPropertiesKHR
- type ImageViewUsageCreateInfoKHR
- type PipelineTessellationDomainOriginStateCreateInfoKHR
- type KHR_MAINTENANCE_2_SPEC_VERSION
- pattern KHR_MAINTENANCE_2_SPEC_VERSION
- type KHR_MAINTENANCE_2_EXTENSION_NAME
- pattern KHR_MAINTENANCE_2_EXTENSION_NAME
- Packagevulkan-3.27
- Exports25
- LanguageGHC2021
- LicenceBSD-3-Clause
- SourceVK_KHR_maintenance2.hs