Halide 22.0.0 Halide compiler and libraries

Enumerations | Functions
Halide Hexagon DMA runtime

## Enumerations
enum | halide_hexagon_image_fmt_t { halide_hexagon_fmt_RawData , halide_hexagon_fmt_NV12 , halide_hexagon_fmt_NV12_Y , halide_hexagon_fmt_NV12_UV , halide_hexagon_fmt_P010 , halide_hexagon_fmt_P010_Y , halide_hexagon_fmt_P010_UV , halide_hexagon_fmt_TP10 , halide_hexagon_fmt_TP10_Y , halide_hexagon_fmt_TP10_UV , halide_hexagon_fmt_NV124R , halide_hexagon_fmt_NV124R_Y , halide_hexagon_fmt_NV124R_UV }
| Image Formats to prepare the application for DMA Transfer. More...

## Functions
const struct halide_device_interface_t * | halide_hexagon_dma_device_interface ()
int | halide_hexagon_dma_device_wrap_native (void *user_context, struct halide_buffer_t *buf, uint64_t mem)
| This API is used to set up the DMA device interface to be used for DMA transfer. More...
int | halide_hexagon_dma_device_detach_native (void *user_context, struct halide_buffer_t *buf)
| Detach the Input/Output Buffer from DMA device handle and deallocate the DMA device handle buffer allocation This API also frees up the DMA device and makes it available for another usage. More...
int | halide_hexagon_dma_allocate_engine (void *user_context, void **dma_engine)
| This API will allocate a DMA Engine needed for DMA read/write. More...
int | halide_hexagon_dma_deallocate_engine (void *user_context, void *dma_engine)
| This API free up the allocated DMA engine. More...
int | halide_hexagon_dma_prepare_for_copy_to_host (void *user_context, struct halide_buffer_t *buf, void *dma_engine, bool is_ubwc, halide_hexagon_image_fmt_t fmt)
| This API Prepares a buffer for DMA Read Operation. More...
int | halide_hexagon_dma_prepare_for_copy_to_device (void *user_context, struct halide_buffer_t *buf, void *dma_engine, bool is_ubwc, halide_hexagon_image_fmt_t fmt)
| This API Prepares a buffer for DMA Write Operation. More...
int | halide_hexagon_dma_unprepare (void *user_context, struct halide_buffer_t *buf)
| This API is used to frees up the DMA Resources associated with the buffer. More...
int | halide_hexagon_dma_power_mode_voting (void *user_context, halide_hexagon_power_mode_t cornercase)
| This API is used to setup the hexagon Operation modes. More...

## Detailed Description

## Enumeration Type Documentation

## ◆ halide_hexagon_image_fmt_t

enum halide_hexagon_image_fmt_t

Image Formats to prepare the application for DMA Transfer.

Enumerator
halide_hexagon_fmt_RawData |
halide_hexagon_fmt_NV12 |
halide_hexagon_fmt_NV12_Y |
halide_hexagon_fmt_NV12_UV |
halide_hexagon_fmt_P010 |
halide_hexagon_fmt_P010_Y |
halide_hexagon_fmt_P010_UV |
halide_hexagon_fmt_TP10 |
halide_hexagon_fmt_TP10_Y |
halide_hexagon_fmt_TP10_UV |
halide_hexagon_fmt_NV124R |
halide_hexagon_fmt_NV124R_Y |
halide_hexagon_fmt_NV124R_UV |

Definition at line 34 of file HalideRuntimeHexagonDma.h.

## Function Documentation

## ◆ halide_hexagon_dma_device_interface()

const struct halide_device_interface_t * halide_hexagon_dma_device_interface | ( |  | ) |

## ◆ halide_hexagon_dma_device_wrap_native()

int halide_hexagon_dma_device_wrap_native | ( | void * | user_context,
|  | struct halide_buffer_t * | buf,
|  | uint64_t | mem
| ) |  |

This API is used to set up the DMA device interface to be used for DMA transfer.

This also internally creates the DMA device handle and populates all the Buffer related parameters (width, height, stride) to be used for DMA configuration.

## ◆ halide_hexagon_dma_device_detach_native()

int halide_hexagon_dma_device_detach_native | ( | void * | user_context,
|  | struct halide_buffer_t * | buf
| ) |  |

Detach the Input/Output Buffer from DMA device handle and deallocate the DMA device handle buffer allocation This API also frees up the DMA device and makes it available for another usage.

## ◆ halide_hexagon_dma_allocate_engine()

int halide_hexagon_dma_allocate_engine | ( | void * | user_context,
|  | void ** | dma_engine
| ) |  |

This API will allocate a DMA Engine needed for DMA read/write.

This is the first step Before a buffer can be used in a copy operation (i.e. a DMA read/write operation).

## ◆ halide_hexagon_dma_deallocate_engine()

int halide_hexagon_dma_deallocate_engine | ( | void * | user_context,
|  | void * | dma_engine
| ) |  |

This API free up the allocated DMA engine.

This need to be called after a user program ends all the DMA Operations and make it available for subsequent DMA transfers

## ◆ halide_hexagon_dma_prepare_for_copy_to_host()

int halide_hexagon_dma_prepare_for_copy_to_host | ( | void * | user_context,
|  | struct halide_buffer_t * | buf,
|  | void * | dma_engine,
|  | bool | is_ubwc,
|  | halide_hexagon_image_fmt_t | fmt
| ) |  |

This API Prepares a buffer for DMA Read Operation.

This will setup the DMA format, direction (read). Will also make necessary adjustments to the DMA frame parameters based on Image format provided.

## ◆ halide_hexagon_dma_prepare_for_copy_to_device()

int halide_hexagon_dma_prepare_for_copy_to_device | ( | void * | user_context,
|  | struct halide_buffer_t * | buf,
|  | void * | dma_engine,
|  | bool | is_ubwc,
|  | halide_hexagon_image_fmt_t | fmt
| ) |  |

This API Prepares a buffer for DMA Write Operation.

This will setup the DMA format, direction (write). Will also make necessary adjustments to the DMA frame parameters based on Image format provided.

## ◆ halide_hexagon_dma_unprepare()

int halide_hexagon_dma_unprepare | ( | void * | user_context,
|  | struct halide_buffer_t * | buf
| ) |  |

This API is used to frees up the DMA Resources associated with the buffer.

TODO: Currently this API is a dummy as all the necessary freeing is done in an another API. This will be used in future.

## ◆ halide_hexagon_dma_power_mode_voting()

int halide_hexagon_dma_power_mode_voting | ( | void * | user_context,
|  | halide_hexagon_power_mode_t | cornercase
| ) |  |

This API is used to setup the hexagon Operation modes.

We will setup the necessary Operating frequency based on the power mode chosen. Check the structure halide_hexagon_power_mode_t defined in Halide HalideRuntimeHexagonHost.h for the supported power modes.