VkDataGraphPipelineOpticalFlowCreateInfoARM(3)

# VkDataGraphPipelineOpticalFlowCreateInfoARM(3) Manual Page

## Name

VkDataGraphPipelineOpticalFlowCreateInfoARM - Structure specifying the parameters of a newly-created optical flow graph pipeline

## C Specification

The `VkDataGraphPipelineOpticalFlowCreateInfoARM` structure is defined as:

    // Provided by VK_ARM_data_graph_optical_flow
    typedef struct VkDataGraphPipelineOpticalFlowCreateInfoARM {
        VkStructureType                              sType;
        void*                                        pNext;
        uint32_t                                     width;
        uint32_t                                     height;
        VkFormat                                     imageFormat;
        VkFormat                                     flowVectorFormat;
        VkFormat                                     costFormat;
        VkDataGraphOpticalFlowGridSizeFlagsARM       outputGridSize;
        VkDataGraphOpticalFlowGridSizeFlagsARM       hintGridSize;
        VkDataGraphOpticalFlowPerformanceLevelARM    performanceLevel;
        VkDataGraphOpticalFlowCreateFlagsARM         flags;
    } VkDataGraphPipelineOpticalFlowCreateInfoARM;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `width` is the width in pixels of the input or reference image to be bound to this optical flow pipeline.

- `height` is the height in pixels of the input or reference image to be bound to this optical flow pipeline.

- `imageFormat` is the VkFormat of the input and reference image to be bound to this optical flow pipeline.

- `flowVectorFormat` is the VkFormat of the flow vector maps (output or hint) to be bound to this optical flow pipeline.

- `costFormat` is the VkFormat of the cost maps to be bound to this optical flow pipeline.

- `outputGridSize` is exactly one bit of VkDataGraphOpticalFlowGridSizeFlagsARM specifying the grid size of the output flow and cost maps to be bound to this optical flow pipeline. The size of the output flow and cost maps is a function of the input image dimensions and `outputGridSize` and is calculated as follows:
  OutputWidth = ⌈ `width` / OutputGridWidth ⌉
  OutputHeight = ⌈ `height` / OutputGridHeight ⌉
  where OutputGridWidth and OutputGridHeight are determined by `outputGridSize`.

- `hintGridSize` is one exactly bit of VkDataGraphOpticalFlowGridSizeFlagsARM specifying the grid size of the hint flow vector map to be bound to this optical flow pipeline. The size of the hint maps is a function of the input image dimensions and `hintGridSize` and is calculated as follows:
  HintWidth = ⌈ `width` / HintGridWidth ⌉
  HintHeight = ⌈ `height` / HintGridHeight ⌉
  where HintGridWidth and HintGridHeight are determined by `hintGridSize`.

- `performanceLevel` is the VkDataGraphOpticalFlowPerformanceLevelARM used for this optical flow pipeline.

- `flags` are the VkDataGraphOpticalFlowCreateFlagsARM used for this optical flow pipeline.

## Description

Valid Usage

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-width-09966
  `width` must be greater than or equal to `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`minWidth` and less than or equal to `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`maxWidth`

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-height-09967
  `height` must be greater than or equal to `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`minHeight` and less than or equal to `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`maxHeight`

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-imageFormat-09968
  `imageFormat` must be one of the formats returned by vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM for VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flowVectorFormat-09969
  `flowVectorFormat` must be one of the formats returned by vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM for VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-costFormat-09970
  `costFormat` must be one of the formats returned by vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM for VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM if VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM is set in `flags`

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-outputGridSize-09971
  `outputGridSize` must be exactly one of the bits reported in `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`supportedOutputGridSizes`

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-hintGridSize-09972
  `hintGridSize` must be 0 or exactly one of the bits reported in `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`supportedHintGridSizes` if VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM is set in `flags`

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-hintGridSize-09973
  `hintGridSize` must be the same as `outputGridSize` if `hintGridSize` is not 0

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flags-09974
  VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM must not be set in `flags` if `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`hintSupported` is VK_FALSE

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flags-09975
  VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM must not be set in `flags` if `VkQueueFamilyDataGraphOpticalFlowPropertiesARM`::`costSupported` is VK_FALSE

Valid Usage (Implicit)

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-imageFormat-parameter
  `imageFormat` must be a valid VkFormat value

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flowVectorFormat-parameter
  `flowVectorFormat` must be a valid VkFormat value

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-costFormat-parameter
  If `costFormat` is not `0`, `costFormat` must be a valid VkFormat value

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-performanceLevel-parameter
  If `performanceLevel` is not `0`, `performanceLevel` must be a valid VkDataGraphOpticalFlowPerformanceLevelARM value

- VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flags-parameter
  `flags` must be a valid combination of VkDataGraphOpticalFlowCreateFlagBitsARM values

Structure Chaining

Extends the structure

  - VkDataGraphPipelineCreateInfoARM

## See Also

VK_ARM_data_graph_optical_flow, VkDataGraphOpticalFlowCreateFlagsARM, VkDataGraphOpticalFlowGridSizeFlagsARM, VkDataGraphOpticalFlowPerformanceLevelARM, VkFormat, VkStructureType

## Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0