// Copyright 2019-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_filter_cubic.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2019-12-13
*Contributors*::
  - Bill Licea-Kane, Qualcomm Technologies, Inc.
  - Andrew Garrard, Samsung
  - Daniel Koch, NVIDIA
  - Donald Scorgie, Imagination Technologies
  - Graeme Leese, Broadcom
  - Jan-Herald Fredericksen, ARM
  - Jeff Leger, Qualcomm Technologies, Inc.
  - Tobias Hector, AMD
  - Tom Olson, ARM
  - Stuart Smith, Imagination Technologies

=== Description

`VK_EXT_filter_cubic` extends `VK_IMG_filter_cubic`.

It documents cubic filtering of other image view types.
It adds new structures that can: be added to the pname:pNext chain of
slink:VkPhysicalDeviceImageFormatInfo2 and slink:VkImageFormatProperties2
that can: be used to determine which image types and which image view types
support cubic filtering.

include::{generated}/interfaces/VK_EXT_filter_cubic.txt[]

=== Version History

 * Revision 3, 2019-12-13 (wwlk)
   - Delete requirement to cubic filter the formats USCALED_PACKED32,
     SSCALED_PACKED32, UINT_PACK32, and SINT_PACK32 (cut/paste error)
 * Revision 2, 2019-06-05 (wwlk)
   - Clarify 1D optional
 * Revision 1, 2019-01-24 (wwlk)
   - Initial version
