vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_QCOM_image_processing

Description

Name

VK_QCOM_image_processing - device extension

VK_QCOM_image_processing

Name String
VK_QCOM_image_processing
Extension Type
Device extension
Registered Extension Number
441
Revision
1
Ratification Status
Not ratified
Extension and Version Dependencies
VK_KHR_format_feature_flags2
Contact
Extension Proposal
VK_QCOM_image_processing

Other Extension Metadata

Last Modified Date
2022-07-08
Interactions and External Dependencies
Contributors
  • Jeff Leger, Qualcomm Technologies, Inc.
  • Ruihao Zhang, Qualcomm Technologies, Inc.

Description

GPUs are commonly used to process images for various applications from 3D graphics to UI and from composition to compute applications. Simple scaling and filtering can be done with bilinear filtering, which comes for free during texture sampling. However, as screen sizes get larger and more use cases rely on GPU such as camera and video post-processing needs, there is increasing demand for GPU to support higher order filtering and other advanced image processing.

This extension introduces a new set of SPIR-V built-in functions for image processing. It exposes the following new imaging operations

  • The OpImageSampleWeightedQCOM instruction takes 3 operands: sampled image, weight image, and texture coordinates. The instruction computes a weighted average of an MxN region of texels in the sampled image, using a set of MxN weights in the /weight image/.
  • The OpImageBoxFilterQCOM instruction takes 3 operands: /sampled image, box size, and texture coordinates. Note that box size/ specifies a floating point width and height in texels. The instruction computes a weighted average of all texels in the sampled image that are covered (either partially or fully) by a box with the specified size and centered at the specified texture coordinates.
  • The OpImageBlockMatchSADQCOM and OpImageBlockMatchSSDQCOM instructions each takes 5 operands: target image, /target coordinates, reference image, reference coordinates, and block size/. Each instruction computes an error metric, that describes whether a block of texels in the target image matches a corresponding block of texels in the reference image. The error metric is computed per-component. OpImageBlockMatchSADQCOM computes "Sum Of Absolute Difference" and OpImageBlockMatchSSDQCOM computes "Sum of Squared Difference".

Each of the image processing instructions operate only on 2D images. The instructions do not-support sampling of mipmap, multi-plane, multi-layer, multi-sampled, or depth/stencil images. The instructions can be used in any shader stage.

Implementations of this this extension should support these operations natively at the HW instruction level, offering potential performance gains as well as ease of development.

New Structures

New Enum Constants

If VK_KHR_format_feature_flags2 is supported:

Version History

  • Revision 1, 2022-07-08 (Jeff Leger)

See Also

ImageViewSampleWeightCreateInfoQCOM, PhysicalDeviceImageProcessingFeaturesQCOM, PhysicalDeviceImageProcessingPropertiesQCOM

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

Documentation

data ImageViewSampleWeightCreateInfoQCOM Source #

VkImageViewSampleWeightCreateInfoQCOM - Structure describing weight sampling parameters for image view

Description

The filterCenter specifies the origin or center of the filter kernel, as described in Weight Sampling Operation. The numPhases describes the number of sub-pixel filter phases as described in Weight Sampling Phases.

Valid Usage (Implicit)

See Also

VK_QCOM_image_processing, Extent2D, Offset2D, StructureType

Constructors

ImageViewSampleWeightCreateInfoQCOM 

Fields

Instances

Instances details
Storable ImageViewSampleWeightCreateInfoQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Show ImageViewSampleWeightCreateInfoQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

FromCStruct ImageViewSampleWeightCreateInfoQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

ToCStruct ImageViewSampleWeightCreateInfoQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Zero ImageViewSampleWeightCreateInfoQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

data PhysicalDeviceImageProcessingFeaturesQCOM Source #

VkPhysicalDeviceImageProcessingFeaturesQCOM - Structure describing image processing features that can be supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceImageProcessingFeaturesQCOM structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceImageProcessingFeaturesQCOM can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_QCOM_image_processing, Bool32, StructureType

Constructors

PhysicalDeviceImageProcessingFeaturesQCOM 

Fields

  • textureSampleWeighted :: Bool

    textureSampleWeighted indicates that the implementation supports shader modules that declare the TextureSampleWeightedQCOM capability.

  • textureBoxFilter :: Bool

    textureBoxFilter indicates that the implementation supports shader modules that declare the TextureBoxFilterQCOM capability.

  • textureBlockMatch :: Bool

    textureBlockMatch indicates that the implementation supports shader modules that declare the TextureBlockMatchQCOM capability.

Instances

Instances details
Storable PhysicalDeviceImageProcessingFeaturesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Show PhysicalDeviceImageProcessingFeaturesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Eq PhysicalDeviceImageProcessingFeaturesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

FromCStruct PhysicalDeviceImageProcessingFeaturesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

ToCStruct PhysicalDeviceImageProcessingFeaturesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Zero PhysicalDeviceImageProcessingFeaturesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

data PhysicalDeviceImageProcessingPropertiesQCOM Source #

VkPhysicalDeviceImageProcessingPropertiesQCOM - Structure containing image processing properties

Description

If the PhysicalDeviceImageProcessingPropertiesQCOM structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

These are properties of the image processing information of a physical device.

Valid Usage (Implicit)

See Also

VK_QCOM_image_processing, Extent2D, StructureType

Constructors

PhysicalDeviceImageProcessingPropertiesQCOM 

Fields

Instances

Instances details
Storable PhysicalDeviceImageProcessingPropertiesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Show PhysicalDeviceImageProcessingPropertiesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

FromCStruct PhysicalDeviceImageProcessingPropertiesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

ToCStruct PhysicalDeviceImageProcessingPropertiesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

Zero PhysicalDeviceImageProcessingPropertiesQCOM Source # 
Instance details

Defined in Vulkan.Extensions.VK_QCOM_image_processing

type QCOM_IMAGE_PROCESSING_EXTENSION_NAME = "VK_QCOM_image_processing" Source #

pattern QCOM_IMAGE_PROCESSING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #