| // Copyright 2016-2021 The Khronos Group, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_KHR_maintenance2.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2017-09-05 |
| *Interactions and External Dependencies*:: |
| - Promoted to Vulkan 1.1 Core |
| *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 combined depth stencil format) will be |
| accessed via a code:subpassLoad operation. |
| |
| On some implementations there may: be a performance penalty if the |
| implementation does not know (at flink:vkCreateRenderPass 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. |
| |
| include::{generated}/interfaces/VK_KHR_maintenance2.txt[] |
| |
| === Input Attachment Specification Example |
| |
| Consider the case where a render pass has two subpasses and two attachments. |
| |
| Attachment 0 has the format ename:VK_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. |
| |
| [source,c++] |
| ---------------------------------------- |
| 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 |