vulkan
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_NV_optical_flow

Description

Name

VK_NV_optical_flow - device extension

VK_NV_optical_flow

Name String
VK_NV_optical_flow
Extension Type
Device extension
Registered Extension Number
465
Revision
1
Ratification Status
Not ratified
Extension and Version Dependencies

VK_KHR_get_physical_device_properties2          or

Vulkan Version 1.1      and

VK_KHR_format_feature_flags2      and

VK_KHR_synchronization2 or Vulkan Version 1.3

Contact

Other Extension Metadata

Last Modified Date
2022-09-26
Contributors
  • Carsten Rohde, NVIDIA
  • Vipul Parashar, NVIDIA
  • Jeff Bolz, NVIDIA
  • Eric Werness, NVIDIA

Description

Optical flow are fundamental algorithms in computer vision (CV) area. This extension allows applications to estimate 2D displacement of pixels between two frames.

This extension is designed to be used with upcoming NVIDIA Optical Flow SDK Version 5 which will be available on NVIDIA Developer webpage.

New Object Types

New Commands

New Structures

New Enums

New Bitmasks

New Enum Constants

Examples

// Example querying available input formats
VkOpticalFlowImageFormatInfoNV ofFormatInfo = { VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV };
ofFormatInfo.usage = VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV;

uint32_t count = 0;
vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, &ofFormatInfo, &count, NULL);
VkOpticalFlowImageFormatPropertiesNV* fmt = new VkOpticalFlowImageFormatPropertiesNV[count];
memset(fmt, 0, count  * sizeof(VkOpticalFlowImageFormatPropertiesNV));
for (uint32_t i = 0; i < count; i++) {
    fmt[i].sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV;
}
vkGetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice, &ofFormatInfo, &count, fmt);

// Pick one of the available formats
VkFormat inputFormat = fmt[0].format;

// Check feature support for optimal tiling
VkFormatProperties3 formatProperties3 = { VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 };
VkFormatProperties2 formatProperties2 = { VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, &formatProperties3 };
vkGetPhysicalDeviceFormatProperties2(physicalDevice, inputFormat, &formatProperties2);
if (!(formatProperties3.optimalTilingFeatures & VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV)) {
    return false;
}

// Check support for image creation parameters
VkPhysicalDeviceImageFormatInfo2 imageFormatInfo2 = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, &ofFormatInfo };
imageFormatInfo2.format = inputFormat;
imageFormatInfo2.type = VK_IMAGE_TYPE_2D;
imageFormatInfo2.tiling = VK_IMAGE_TILING_OPTIMAL;
imageFormatInfo2.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;

VkImageFormatProperties2 imageFormatProperties2 = { VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 };
if (vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, &imageFormatInfo2, &imageFormatProperties2) != VK_SUCCESS) {
    return false;
}

VkImageCreateInfo imageCreateInfo = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, &ofFormatInfo };
imageCreateInfo.imageType = VK_IMAGE_TYPE_2D;
imageCreateInfo.format = inputFormat;
imageCreateInfo.extent = { width, height, (uint32_t)1};
imageCreateInfo.mipLevels = 1;
imageCreateInfo.arrayLayers = 1;
imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;

vkCreateImage(device, &imageCreateInfo, NULL, &input);
"allocate memory, bind image, create view"

"do the same for reference and output"

// Create optical flow session
VkOpticalFlowSessionCreateInfoNV sessionCreateInfo = { VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV };
sessionCreateInfo.width = width;
sessionCreateInfo.height = height;
sessionCreateInfo.imageFormat = inputFormat;
sessionCreateInfo.flowVectorFormat = outputFormat;
sessionCreateInfo.outputGridSize = VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV;
sessionCreateInfo.performanceLevel = VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV;
VkOpticalFlowSessionNV session;
vkCreateOpticalFlowSessionNV(device, &sessionCreateInfo, NULL, &session);

"allocate command buffer"

"transfer images to VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"
"transfer input images to VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV and output image to VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV"

vkBindOpticalFlowSessionImageNV(device, session, VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV, inputView, VK_IMAGE_LAYOUT_GENERAL);
vkBindOpticalFlowSessionImageNV(device, session, VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV, refView, VK_IMAGE_LAYOUT_GENERAL);
vkBindOpticalFlowSessionImageNV(device, session, VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV, outputView, VK_IMAGE_LAYOUT_GENERAL);

VkOpticalFlowExecuteInfoNV opticalFlowExecuteInfo = { VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV };
vkCmdOpticalFlowExecuteNV(cmd, session, &opticalFlowExecuteInfo);

"submit command buffer"

Version History

  • Revision 1, 2022-09-26 (Carsten Rohde)

    • Internal revisions

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.

Synopsis

Documentation

getPhysicalDeviceOpticalFlowImageFormatsNV Source #

Arguments

:: MonadIO io 
=> PhysicalDevice

physicalDevice is the physical device being queried.

-> OpticalFlowImageFormatInfoNV

pOpticalFlowImageFormatInfo is a pointer to a OpticalFlowImageFormatInfoNV structure specifying the optical flow usage for which information is returned.

-> io (Result, "imageFormatProperties" ::: Vector OpticalFlowImageFormatPropertiesNV) 

vkGetPhysicalDeviceOpticalFlowImageFormatsNV - Query image formats for optical flow

Description

If pImageFormatProperties is NULL, then the number of optical flow properties supported for the given physicalDevice is returned in pFormatCount. Otherwise, pFormatCount must point to a variable set by the application to the number of elements in the pImageFormatProperties array, and on return the variable is overwritten with the number of values actually written to pImageFormatProperties. If the value of pFormatCount is less than the number of optical flow properties supported, at most pFormatCount values will be written to pImageFormatProperties, and INCOMPLETE will be returned instead of SUCCESS, to indicate that not all the available values were returned.

Before creating an image to be used as an optical flow frame, obtain the supported image creation parameters by querying with getPhysicalDeviceFormatProperties2 and getPhysicalDeviceImageFormatProperties2 using one of the reported formats and adding OpticalFlowImageFormatInfoNV to the pNext chain of PhysicalDeviceImageFormatInfo2.

When querying the parameters with getPhysicalDeviceImageFormatProperties2 for images used for optical flow operations, the OpticalFlowImageFormatInfoNV::usage field must contain one or more of the bits defined in OpticalFlowUsageFlagBitsNV.

Valid Usage (Implicit)

  • pOpticalFlowImageFormatInfo must be a valid pointer to a valid OpticalFlowImageFormatInfoNV structure
  • pFormatCount must be a valid pointer to a uint32_t value
  • If the value referenced by pFormatCount is not 0, and pImageFormatProperties is not NULL, pImageFormatProperties must be a valid pointer to an array of pFormatCount OpticalFlowImageFormatPropertiesNV structures

Return Codes

Success
Failure

FORMAT_B8G8R8A8_UNORM, FORMAT_R8_UNORM and FORMAT_G8_B8R8_2PLANE_420_UNORM are initially supported for images with optical usage OPTICAL_FLOW_USAGE_INPUT_BIT_NV.

FORMAT_R16G16_SFIXED5_NV is initially supported for images with optical flow usage OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV, OPTICAL_FLOW_USAGE_HINT_BIT_NV and OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV.

FORMAT_R8_UINT and FORMAT_R32_UINT are initially supported for images with optical flow usage OPTICAL_FLOW_USAGE_COST_BIT_NV. It is recommended to use FORMAT_R8_UINT because of the lower bandwidth.

See Also

VK_NV_optical_flow, OpticalFlowImageFormatInfoNV, OpticalFlowImageFormatPropertiesNV, PhysicalDevice

createOpticalFlowSessionNV Source #

Arguments

:: forall (a :: [Type]) io. (Extendss OpticalFlowSessionCreateInfoNV a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that creates the optical flow session object.

-> OpticalFlowSessionCreateInfoNV a

pCreateInfo is a pointer to a OpticalFlowSessionCreateInfoNV structure containing parameters specifying the creation of the optical flow session.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io OpticalFlowSessionNV 

vkCreateOpticalFlowSessionNV - Creates an optical flow session object

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_NV_optical_flow, AllocationCallbacks, Device, OpticalFlowSessionCreateInfoNV, OpticalFlowSessionNV

withOpticalFlowSessionNV :: forall (a :: [Type]) io r. (Extendss OpticalFlowSessionCreateInfoNV a, PokeChain a, MonadIO io) => Device -> OpticalFlowSessionCreateInfoNV a -> Maybe AllocationCallbacks -> (io OpticalFlowSessionNV -> (OpticalFlowSessionNV -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createOpticalFlowSessionNV and destroyOpticalFlowSessionNV

To ensure that destroyOpticalFlowSessionNV is always called: pass bracket (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.

destroyOpticalFlowSessionNV Source #

Arguments

:: MonadIO io 
=> Device

device is the device that was used for the creation of the optical flow session.

-> OpticalFlowSessionNV

session is the optical flow session to be destroyed.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroyOpticalFlowSessionNV - Destroy optical flow session object

Valid Usage (Implicit)

  • device must be a valid Device handle
  • session must be a valid OpticalFlowSessionNV handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • session must have been created, allocated, or retrieved from device

See Also

VK_NV_optical_flow, AllocationCallbacks, Device, OpticalFlowSessionNV

bindOpticalFlowSessionImageNV Source #

Arguments

:: MonadIO io 
=> Device

device is the device which owns the optical flow session object session.

-> OpticalFlowSessionNV

session is the optical flow session object to which the image view is to be bound.

-> OpticalFlowSessionBindingPointNV

bindingPoint specifies the binding point OpticalFlowSessionBindingPointNV to which the image view is bound.

-> ImageView

view is a ImageView to be bound.

-> ImageLayout

layout must specify the layout that the image subresources accessible from view will be in at the time the optical flow vectors are calculated with cmdOpticalFlowExecuteNV on a Device.

-> io () 

vkBindOpticalFlowSessionImageNV - Bind image to an optical flow session

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_NV_optical_flow, Device, ImageLayout, ImageView, OpticalFlowSessionBindingPointNV, OpticalFlowSessionNV

cmdOpticalFlowExecuteNV Source #

Arguments

:: MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> OpticalFlowSessionNV

session is the optical flow session object on which this command is operating.

-> OpticalFlowExecuteInfoNV

pExecuteInfo Info is a pointer to a OpticalFlowExecuteInfoNV.

-> io () 

vkCmdOpticalFlowExecuteNV - Calculate optical flow vectors

Valid Usage (Implicit)

  • session must be a valid OpticalFlowSessionNV handle
  • pExecuteInfo must be a valid pointer to a valid OpticalFlowExecuteInfoNV structure
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support QUEUE_OPTICAL_FLOW_BIT_NV operations
  • This command must only be called outside of a render pass instance
  • This command must not be called between suspended render pass instances
  • This command must only be called outside of a video coding scope
  • Both of commandBuffer, and session must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside VK_QUEUE_OPTICAL_FLOW_BIT_NV Action

Conditional Rendering

vkCmdOpticalFlowExecuteNV is not affected by conditional rendering

See Also

VK_NV_optical_flow, CommandBuffer, OpticalFlowExecuteInfoNV, OpticalFlowSessionNV

data PhysicalDeviceOpticalFlowFeaturesNV Source #

VkPhysicalDeviceOpticalFlowFeaturesNV - Structure describing the optical flow features supported by the implementation

Members

This structure describes the following feature:

Description

If the PhysicalDeviceOpticalFlowFeaturesNV 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. If the application wishes to use a Device with any features described by PhysicalDeviceOpticalFlowFeaturesNV, it must add an instance of the structure, with the desired feature members set to TRUE, to the pNext chain of DeviceCreateInfo when creating the Device.

Valid Usage (Implicit)

See Also

VK_NV_optical_flow, Bool32, StructureType

Constructors

PhysicalDeviceOpticalFlowFeaturesNV 

Fields

  • opticalFlow :: Bool

    opticalFlow indicates whether the implementation supports optical flow.

Instances

Instances details
Eq PhysicalDeviceOpticalFlowFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable PhysicalDeviceOpticalFlowFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show PhysicalDeviceOpticalFlowFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

FromCStruct PhysicalDeviceOpticalFlowFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

ToCStruct PhysicalDeviceOpticalFlowFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero PhysicalDeviceOpticalFlowFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

data PhysicalDeviceOpticalFlowPropertiesNV Source #

VkPhysicalDeviceOpticalFlowPropertiesNV - Structure describing properties supported by VK_NV_optical_flow

Description

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

Valid Usage (Implicit)

See Also

VK_NV_optical_flow, Bool32, OpticalFlowGridSizeFlagsNV, StructureType

Constructors

PhysicalDeviceOpticalFlowPropertiesNV 

Fields

Instances

Instances details
Eq PhysicalDeviceOpticalFlowPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable PhysicalDeviceOpticalFlowPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show PhysicalDeviceOpticalFlowPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

FromCStruct PhysicalDeviceOpticalFlowPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

ToCStruct PhysicalDeviceOpticalFlowPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero PhysicalDeviceOpticalFlowPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

data OpticalFlowImageFormatInfoNV Source #

VkOpticalFlowImageFormatInfoNV - Structure describing optical flow image format info

Valid Usage (Implicit)

See Also

VK_NV_optical_flow, OpticalFlowUsageFlagsNV, StructureType, getPhysicalDeviceOpticalFlowImageFormatsNV

Constructors

OpticalFlowImageFormatInfoNV 

Fields

Instances

Instances details
Eq OpticalFlowImageFormatInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowImageFormatInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowImageFormatInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

FromCStruct OpticalFlowImageFormatInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

ToCStruct OpticalFlowImageFormatInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowImageFormatInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

data OpticalFlowImageFormatPropertiesNV Source #

VkOpticalFlowImageFormatPropertiesNV - Structure describing properties of an optical flow image format

Valid Usage (Implicit)

See Also

VK_NV_optical_flow, Format, StructureType, getPhysicalDeviceOpticalFlowImageFormatsNV

Constructors

OpticalFlowImageFormatPropertiesNV 

Fields

  • format :: Format

    format is a Format that specifies the format that can be used with the specified optical flow image usages.

Instances

Instances details
Eq OpticalFlowImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

FromCStruct OpticalFlowImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

ToCStruct OpticalFlowImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

data OpticalFlowSessionCreateInfoNV (es :: [Type]) Source #

VkOpticalFlowSessionCreateInfoNV - Structure specifying parameters of a newly created optical flow session

Valid Usage

Valid Usage (Implicit)

See Also

VK_NV_optical_flow, Format, OpticalFlowGridSizeFlagsNV, OpticalFlowPerformanceLevelNV, OpticalFlowSessionCreateFlagsNV, StructureType, createOpticalFlowSessionNV

Constructors

OpticalFlowSessionCreateInfoNV 

Fields

Instances

Instances details
Extensible OpticalFlowSessionCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). OpticalFlowSessionCreateInfoNV es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). OpticalFlowSessionCreateInfoNV ds -> Chain es -> OpticalFlowSessionCreateInfoNV es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends OpticalFlowSessionCreateInfoNV e => b) -> Maybe b Source #

Show (Chain es) => Show (OpticalFlowSessionCreateInfoNV es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

(Extendss OpticalFlowSessionCreateInfoNV es, PeekChain es) => FromCStruct (OpticalFlowSessionCreateInfoNV es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

(Extendss OpticalFlowSessionCreateInfoNV es, PokeChain es) => ToCStruct (OpticalFlowSessionCreateInfoNV es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

es ~ ('[] :: [Type]) => Zero (OpticalFlowSessionCreateInfoNV es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

data OpticalFlowSessionCreatePrivateDataInfoNV Source #

VkOpticalFlowSessionCreatePrivateDataInfoNV - Structure for NV internal use only

Valid Usage (Implicit)

See Also

VK_NV_optical_flow, StructureType

Constructors

OpticalFlowSessionCreatePrivateDataInfoNV 

Fields

Instances

Instances details
Storable OpticalFlowSessionCreatePrivateDataInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowSessionCreatePrivateDataInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

FromCStruct OpticalFlowSessionCreatePrivateDataInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

ToCStruct OpticalFlowSessionCreatePrivateDataInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowSessionCreatePrivateDataInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

data OpticalFlowExecuteInfoNV Source #

VkOpticalFlowExecuteInfoNV - Structure specifying parameters of an optical flow vector calculation

Valid Usage

Valid Usage (Implicit)

  • pNext must be NULL
  • flags must be a valid combination of OpticalFlowExecuteFlagBitsNV values
  • If regionCount is not 0, pRegions must be a valid pointer to an array of regionCount Rect2D structures

See Also

VK_NV_optical_flow, OpticalFlowExecuteFlagsNV, Rect2D, StructureType, cmdOpticalFlowExecuteNV

Constructors

OpticalFlowExecuteInfoNV 

Fields

newtype OpticalFlowGridSizeFlagBitsNV Source #

VkOpticalFlowGridSizeFlagBitsNV - Bits specifying grid sizes for optical flow operations

Description

See Also

VK_NV_optical_flow, OpticalFlowGridSizeFlagsNV

Instances

Instances details
Bits OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Methods

(.&.) :: OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV #

(.|.) :: OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV #

xor :: OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV #

complement :: OpticalFlowGridSizeFlagBitsNV -> OpticalFlowGridSizeFlagBitsNV #

shift :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

rotate :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

zeroBits :: OpticalFlowGridSizeFlagBitsNV #

bit :: Int -> OpticalFlowGridSizeFlagBitsNV #

setBit :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

clearBit :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

complementBit :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

testBit :: OpticalFlowGridSizeFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: OpticalFlowGridSizeFlagBitsNV -> Maybe Int #

bitSize :: OpticalFlowGridSizeFlagBitsNV -> Int #

isSigned :: OpticalFlowGridSizeFlagBitsNV -> Bool #

shiftL :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

unsafeShiftL :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

shiftR :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

unsafeShiftR :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

rotateL :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

rotateR :: OpticalFlowGridSizeFlagBitsNV -> Int -> OpticalFlowGridSizeFlagBitsNV #

popCount :: OpticalFlowGridSizeFlagBitsNV -> Int #

FiniteBits OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Eq OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Ord OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Read OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowGridSizeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

newtype OpticalFlowUsageFlagBitsNV Source #

VkOpticalFlowUsageFlagBitsNV - Bits specifying usage for optical flow operations

Description

See Also

VK_NV_optical_flow, OpticalFlowUsageFlagsNV

Instances

Instances details
Bits OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Methods

(.&.) :: OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV #

(.|.) :: OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV #

xor :: OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV #

complement :: OpticalFlowUsageFlagBitsNV -> OpticalFlowUsageFlagBitsNV #

shift :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

rotate :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

zeroBits :: OpticalFlowUsageFlagBitsNV #

bit :: Int -> OpticalFlowUsageFlagBitsNV #

setBit :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

clearBit :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

complementBit :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

testBit :: OpticalFlowUsageFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: OpticalFlowUsageFlagBitsNV -> Maybe Int #

bitSize :: OpticalFlowUsageFlagBitsNV -> Int #

isSigned :: OpticalFlowUsageFlagBitsNV -> Bool #

shiftL :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

unsafeShiftL :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

shiftR :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

unsafeShiftR :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

rotateL :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

rotateR :: OpticalFlowUsageFlagBitsNV -> Int -> OpticalFlowUsageFlagBitsNV #

popCount :: OpticalFlowUsageFlagBitsNV -> Int #

FiniteBits OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Eq OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Ord OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Read OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowUsageFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

newtype OpticalFlowPerformanceLevelNV Source #

VkOpticalFlowPerformanceLevelNV - Optical flow performance level types

Description

See Also

VK_NV_optical_flow, OpticalFlowSessionCreateInfoNV

Instances

Instances details
Eq OpticalFlowPerformanceLevelNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Ord OpticalFlowPerformanceLevelNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowPerformanceLevelNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Read OpticalFlowPerformanceLevelNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowPerformanceLevelNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowPerformanceLevelNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

newtype OpticalFlowSessionBindingPointNV Source #

VkOpticalFlowSessionBindingPointNV - Binding points of an optical flow session

Description

See Also

VK_NV_optical_flow, bindOpticalFlowSessionImageNV

Instances

Instances details
Eq OpticalFlowSessionBindingPointNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Ord OpticalFlowSessionBindingPointNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowSessionBindingPointNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Read OpticalFlowSessionBindingPointNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowSessionBindingPointNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowSessionBindingPointNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

newtype OpticalFlowSessionCreateFlagBitsNV Source #

VkOpticalFlowSessionCreateFlagBitsNV - Bits specifying flags for optical flow session

Description

See Also

VK_NV_optical_flow, OpticalFlowSessionCreateFlagsNV

Instances

Instances details
Bits OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Methods

(.&.) :: OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV #

(.|.) :: OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV #

xor :: OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV #

complement :: OpticalFlowSessionCreateFlagBitsNV -> OpticalFlowSessionCreateFlagBitsNV #

shift :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

rotate :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

zeroBits :: OpticalFlowSessionCreateFlagBitsNV #

bit :: Int -> OpticalFlowSessionCreateFlagBitsNV #

setBit :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

clearBit :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

complementBit :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

testBit :: OpticalFlowSessionCreateFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: OpticalFlowSessionCreateFlagBitsNV -> Maybe Int #

bitSize :: OpticalFlowSessionCreateFlagBitsNV -> Int #

isSigned :: OpticalFlowSessionCreateFlagBitsNV -> Bool #

shiftL :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

unsafeShiftL :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

shiftR :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

unsafeShiftR :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

rotateL :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

rotateR :: OpticalFlowSessionCreateFlagBitsNV -> Int -> OpticalFlowSessionCreateFlagBitsNV #

popCount :: OpticalFlowSessionCreateFlagBitsNV -> Int #

FiniteBits OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Eq OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Ord OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Read OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowSessionCreateFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

newtype OpticalFlowExecuteFlagBitsNV Source #

VkOpticalFlowExecuteFlagBitsNV - Bits specifying flags for an optical flow vector calculation

Description

  • OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV specifies that temporal hints from previously generated flow vectors are not used. If temporal hints are enabled, optical flow vectors from previous cmdOpticalFlowExecuteNV call are automatically used as hints for the current cmdOpticalFlowExecuteNV call, to take advantage of temporal correlation in a video sequence. Temporal hints should be disabled if there is a-priori knowledge of no temporal correlation (e.g. a scene change, independent successive frame pairs).

See Also

VK_NV_optical_flow, OpticalFlowExecuteFlagsNV

Instances

Instances details
Bits OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Methods

(.&.) :: OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV #

(.|.) :: OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV #

xor :: OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV #

complement :: OpticalFlowExecuteFlagBitsNV -> OpticalFlowExecuteFlagBitsNV #

shift :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

rotate :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

zeroBits :: OpticalFlowExecuteFlagBitsNV #

bit :: Int -> OpticalFlowExecuteFlagBitsNV #

setBit :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

clearBit :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

complementBit :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

testBit :: OpticalFlowExecuteFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: OpticalFlowExecuteFlagBitsNV -> Maybe Int #

bitSize :: OpticalFlowExecuteFlagBitsNV -> Int #

isSigned :: OpticalFlowExecuteFlagBitsNV -> Bool #

shiftL :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

unsafeShiftL :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

shiftR :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

unsafeShiftR :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

rotateL :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

rotateR :: OpticalFlowExecuteFlagBitsNV -> Int -> OpticalFlowExecuteFlagBitsNV #

popCount :: OpticalFlowExecuteFlagBitsNV -> Int #

FiniteBits OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Eq OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Ord OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Storable OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Read OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Show OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

Zero OpticalFlowExecuteFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_optical_flow

type NV_OPTICAL_FLOW_EXTENSION_NAME = "VK_NV_optical_flow" Source #

newtype OpticalFlowSessionNV Source #

Instances

Instances details
Eq OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Storable OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero OpticalFlowSessionNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles