VK_QCOM_image_processing3(3)

# VK_QCOM_image_processing3(3) Manual Page

## Name

VK_QCOM_image_processing3 - device extension

## Registered Extension Number

304

## Revision

1

## Ratification Status

Not ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1

## API Interactions

- Interacts with VK_QCOM_image_processing

## SPIR-V Dependencies

- SPV_QCOM_image_processing3

## Contact

- Matthew Netsch [GitHub]mnetsch

## Extension Proposal

VK_QCOM_image_processing3

## Other Extension Metadata

Last Modified Date

  2026-05-08

Interactions and External Dependencies

  - This extension provides API support for `GL_QCOM_image_processing3`

  - Interacts with `VK_QCOM_tile_shading`

  - Interacts with `VK_QCOM_image_processing`

  - Interacts with `VK_QCOM_image_processing2`

Contributors

  - Matthew Netsch, Qualcomm Technologies, Inc.

  - Jonathan Wicks, Qualcomm Technologies, Inc.

  - Liang Li, Qualcomm Technologies, Inc.

  - Wooyoung Kim, Qualcomm Technologies, Inc.

## Description

This extension introduces a new SPIR-V built-in function to support predefined image gather operations used in popular image processing algorithms such as super resolution upscaling and contrast-adaptive sharpening.

The `OpImageGatherQCOM` instruction supports the following modes:

- `GatherH2QCOM` - produces an image gather with an extra horizontal offset

- `GatherV2QCOM` - produces an image gather with an extra vertical offset. Combined with `OpImageGather` and `GatherH2QCOM`, this is useful for creating a 12-tap filter for upscaling.

- `GatherDQCOM` - produces an image gather by sampling the cardinal offsets. Combined with a point sample of the center texel, this is useful for creating a 5-tap sharpening filter (eg. CAS).

- `Gather4x1QCOM` - produces an image gather by sampling 4 texels in a horizontal row. This is useful for kernels requiring vectorized loads, and can help with cache locality for linear access.

Each of the image processing instructions operate on the same sampled images that the `OpImage*Gather` instructions support with the exception of cube-maps, depth comparison, `ConstOffsets`, and sparse residency check.

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

This extension also adds some block matching improvements over `VK_QCOM_image_processing` and `VK_QCOM_image_processing2` by exposing more formats and wrap modes.

## New Structures

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceImageProcessing3FeaturesQCOM

## New Enum Constants

- `VK_QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME`

- `VK_QCOM_IMAGE_PROCESSING_3_SPEC_VERSION`

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM

If VK_QCOM_image_processing is supported:

- Extending VkFormatFeatureFlagBits2:

  - VK_FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM

## New SPIR-V Capabilities

- ImageGatherLinearQCOM

- ImageGatherExtendedModesQCOM

## Version History

- Revision 1, 2026-05-08 (Matthew Netsch)

## 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.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0