// Copyright 2022-2024 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_maintenance5.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
    2023-05-02

*Interactions and External Dependencies*::

*Contributors*::
  - Stu Smith, AMD
  - Tobias Hector, AMD
  - Shahbaz Youssefi, Google
  - Slawomir Cygan, Intel
  - Lionel Landwerlin, Intel
  - James Fitzpatrick, Imagination Technologies
  - Andrew Garrard, Imagination Technologies
  - Ralph Potter, Samsung
  - Pan Gao, Huawei
  - Jan-Harald Fredriksen, ARM
  - Jon Leech, Khronos
  - Mike Blumenkrantz, Valve

=== Description

`VK_KHR_maintenance5` adds a collection of minor features, none of which
would warrant an entire extension of their own.

The new features are as follows:

  * A new ename:VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR format
  * A new ename:VK_FORMAT_A8_UNORM_KHR format
  * A property to indicate that multisample coverage operations are
    performed after sample counting in EarlyFragmentTests mode
  * Relax VkBufferView creation requirements by allowing subsets of the
    associated VkBuffer usage using sname:VkBufferUsageFlags2CreateInfoKHR
  * A new entry point flink:vkCmdBindIndexBuffer2KHR, allowing a range of
    memory to be bound as an index buffer
  * flink:vkGetDeviceProcAddr must return code:NULL for supported core
    functions beyond the version requested by the application.
  * A property to indicate that the sample mask test is performed after
    sample counting in EarlyFragmentTests mode
  * `vkCmdBindVertexBuffers2` now supports using `VK_WHOLE_SIZE` in the
    `pSizes` parameter.
  * A default size of 1.0 is used if code:PointSize is not written
  * Shader modules are deprecated - applications can now pass
    slink:VkShaderModuleCreateInfo as a chained struct to pipeline creation
    via slink:VkPipelineShaderStageCreateInfo
  * A function flink:vkGetRenderingAreaGranularityKHR to query the optimal
    render area for a dynamic rendering instance.
  * A property to indicate that depth/stencil texturing operations with
    ename:VK_COMPONENT_SWIZZLE_ONE have defined behavior
  * Add flink:vkGetImageSubresourceLayout2KHR and a new function
    flink:vkGetDeviceImageSubresourceLayoutKHR to allow the application to
    query the image memory layout without having to create an image object
    and query it.
  * Allow ename:VK_REMAINING_ARRAY_LAYERS as the pname:layerCount member of
    slink:VkImageSubresourceLayers
  * Adds stronger guarantees for propagation of ename:VK_ERROR_DEVICE_LOST
    return values
  * A property to indicate whether code:PointSize controls the final
    rasterization of polygons if <<primsrast-polygonmode, polygon mode>> is
    ename:VK_POLYGON_MODE_POINT
  * Two properties to indicate the non-strict line rasterization algorithm
    used
  * Two new flags words elink:VkPipelineCreateFlagBits2KHR and
    elink:VkBufferUsageFlagBits2KHR
  * Physical-device-level functions can now be called with any value in the
    valid range for a type beyond the defined enumerants, such that
    applications can avoid checking individual features, extensions, or
    versions before querying supported properties of a particular enumerant.
  * Clarification that copies between images of any type are allowed,
    treating 1D images as 2D images with a height of 1.

include::{generated}/interfaces/VK_KHR_maintenance5.adoc[]

=== Issues

None.

=== Version History

  * Revision 1, 2022-12-12 (Stu Smith)
  ** Initial revision
