VXLIB User Guide
VXLIB_convolve_priv.h File Reference

Introduction

Header file for kernel's internal use. For the kernel's interface, please see VXLIB_convolve.

Definition in file VXLIB_convolve_priv.h.

Go to the source code of this file.

Data Structures

struct  VXLIB_convolve_PrivArgs
 Structure that is reserved for internal use by the kernel. More...
 

Macros

#define VXLIB_CONVOLVE_IXX_IXX_OXX_PBLOCK_SIZE   (3 * VXLIB_SE_PARAM_SIZE + 2 * VXLIB_SA_PARAM_SIZE)
 Macro to define the size of bufPblock array of VXLIB_convolve_PrivArgs structure. More...
 
#define VXLIB_CONVOLVE_I8U_C16S_O8U    ((dTypeIn == VXLIB_UINT8) && (dTypeFilter == VXLIB_INT16) && (dTypeOut == VXLIB_UINT8))
 Macros that will be useful to check for datatype combinations. More...
 
#define VXLIB_CONVOLVE_I8U_C16S_O16S    ((dTypeIn == VXLIB_UINT8) && (dTypeFilter == VXLIB_INT16) && (dTypeOut == VXLIB_INT16))
 
#define VXLIB_CONVOLVE_TYPENAME_I8U_C16S_O8U   uint8_t, int16_t, uint8_t
 Macros for templatization of execution functions. More...
 
#define VXLIB_CONVOLVE_TYPENAME_I8U_C16S_O16S   uint8_t, int16_t, int16_t
 
#define VXLIB_CONVOLVE_DTYPE_I8U_C16S_O8U   VXLIB_UINT8, VXLIB_INT16, VXLIB_UINT8
 Macros for templatization of initialization functions. More...
 
#define VXLIB_CONVOLVE_DTYPE_I8U_C16S_O16S   VXLIB_UINT8, VXLIB_INT16, VXLIB_INT16
 
#define VXLIB_CONVOLVE_I8U_C16S_O8U_TEMPLATE(dTypeOut)    (std::is_same<dTypeOut, uint8_t>::value)
 Macros for datatype combination of exec functions. More...
 
#define VXLIB_CONVOLVE_I8U_C16S_O16S_TEMPLATE(dTypeOut)    (std::is_same<dTypeOut, int16_t>::value)
 

Typedefs

typedef VXLIB_STATUS(* pFxnVXLIB_convolve_exec) (VXLIB_kernelHandle handle, void *restrict pIn, void *restrict pFilter, void *restrict pOut)
 This is a function pointer type that conforms to the declaration of VXLIB_convolve_exec_ci and VXLIB_convolve_exec_cn. More...
 

Functions

template<uint32_t dTypeIn, uint32_t dTypeFilter, uint32_t dTypeOut>
VXLIB_STATUS VXLIB_convolve_init_ci (VXLIB_kernelHandle handle, const VXLIB_bufParams2D_t *bufParamsIn, const VXLIB_bufParams2D_t *bufParamsFilter, const VXLIB_bufParams2D_t *bufParamsOut, const VXLIB_convolve_InitArgs *pKerInitArgs)
 This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of VXLIB_convolve_init. More...
 
template<typename dTypeIn , typename dTypeFilter , typename dTypeOut >
VXLIB_STATUS VXLIB_convolve_exec_ci (VXLIB_kernelHandle handle, void *restrict pIn, void *restrict pFilter, void *restrict pOut)
 This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of VXLIB_convolve_exec. More...
 
template<typename dTypeIn , typename dTypeFilter , typename dTypeOut >
VXLIB_STATUS VXLIB_convolve_exec_cn (VXLIB_kernelHandle handle, void *restrict pIn, void *restrict pFilter, void *restrict pOut)
 This function is the main execution function for the natural C implementation of the kernel. The function declaration conforms to the declaration of VXLIB_convolve_exec. More...
 

Macro Definition Documentation

◆ VXLIB_CONVOLVE_IXX_IXX_OXX_PBLOCK_SIZE

#define VXLIB_CONVOLVE_IXX_IXX_OXX_PBLOCK_SIZE   (3 * VXLIB_SE_PARAM_SIZE + 2 * VXLIB_SA_PARAM_SIZE)

Macro to define the size of bufPblock array of VXLIB_convolve_PrivArgs structure.

Definition at line 55 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_I8U_C16S_O8U

#define VXLIB_CONVOLVE_I8U_C16S_O8U    ((dTypeIn == VXLIB_UINT8) && (dTypeFilter == VXLIB_INT16) && (dTypeOut == VXLIB_UINT8))

Macros that will be useful to check for datatype combinations.

Definition at line 62 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_I8U_C16S_O16S

#define VXLIB_CONVOLVE_I8U_C16S_O16S    ((dTypeIn == VXLIB_UINT8) && (dTypeFilter == VXLIB_INT16) && (dTypeOut == VXLIB_INT16))

Definition at line 65 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_TYPENAME_I8U_C16S_O8U

#define VXLIB_CONVOLVE_TYPENAME_I8U_C16S_O8U   uint8_t, int16_t, uint8_t

Macros for templatization of execution functions.

Definition at line 73 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_TYPENAME_I8U_C16S_O16S

#define VXLIB_CONVOLVE_TYPENAME_I8U_C16S_O16S   uint8_t, int16_t, int16_t

Definition at line 74 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_DTYPE_I8U_C16S_O8U

#define VXLIB_CONVOLVE_DTYPE_I8U_C16S_O8U   VXLIB_UINT8, VXLIB_INT16, VXLIB_UINT8

Macros for templatization of initialization functions.

Definition at line 81 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_DTYPE_I8U_C16S_O16S

#define VXLIB_CONVOLVE_DTYPE_I8U_C16S_O16S   VXLIB_UINT8, VXLIB_INT16, VXLIB_INT16

Definition at line 82 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_I8U_C16S_O8U_TEMPLATE

#define VXLIB_CONVOLVE_I8U_C16S_O8U_TEMPLATE (   dTypeOut)     (std::is_same<dTypeOut, uint8_t>::value)

Macros for datatype combination of exec functions.

Definition at line 89 of file VXLIB_convolve_priv.h.

◆ VXLIB_CONVOLVE_I8U_C16S_O16S_TEMPLATE

#define VXLIB_CONVOLVE_I8U_C16S_O16S_TEMPLATE (   dTypeOut)     (std::is_same<dTypeOut, int16_t>::value)

Definition at line 91 of file VXLIB_convolve_priv.h.

Typedef Documentation

◆ pFxnVXLIB_convolve_exec

typedef VXLIB_STATUS(* pFxnVXLIB_convolve_exec) (VXLIB_kernelHandle handle, void *restrict pIn, void *restrict pFilter, void *restrict pOut)

This is a function pointer type that conforms to the declaration of VXLIB_convolve_exec_ci and VXLIB_convolve_exec_cn.

Definition at line 100 of file VXLIB_convolve_priv.h.

Function Documentation

◆ VXLIB_convolve_init_ci()

template<uint32_t dTypeIn, uint32_t dTypeFilter, uint32_t dTypeOut>
VXLIB_STATUS VXLIB_convolve_init_ci ( VXLIB_kernelHandle  handle,
const VXLIB_bufParams2D_t bufParamsIn,
const VXLIB_bufParams2D_t bufParamsFilter,
const VXLIB_bufParams2D_t bufParamsOut,
const VXLIB_convolve_InitArgs pKerInitArgs 
)

This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of VXLIB_convolve_init.

This function determines the configuration for the streaming engine resources based on the function call parameters, and the configuration is saved in bufPBlock array. In the kernel call sequence, VXLIB_convolve_exec_ci would be called later independently by the application. When VXLIB_convolve_exec_ci runs, it merely retrieves the configuration from the bufPBlock and uses it to set up the hardware resources. This arrangement is so that VXLIB_convolve_exec_ci does not lose cycles to determine the hardware configuration.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsIn: Pointer to the structure containing dimensional input image
[in]bufParamsFilter: Pointer to the structure containing * dimensional information of input filter
[out]bufParamsOut: Pointer to the structure containing dimensional information of output image
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to VXLIB_STATUS.

Definition at line 768 of file VXLIB_convolve_ci.cpp.

◆ VXLIB_convolve_exec_ci()

template<typename dTypeIn , typename dTypeFilter , typename dTypeOut >
VXLIB_STATUS VXLIB_convolve_exec_ci ( VXLIB_kernelHandle  handle,
void *restrict  pIn,
void *restrict  pFilter,
void *restrict  pOut 
)

This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of VXLIB_convolve_exec.

Parameters
[in]handle: Active handle to the kernel
[in]pFilter: Pointer to buffer holding input filter
[in]pIn: Pointer to buffer holding the input image
[out]pOut: Pointer to buffer holding the output image
Returns
Status value indicating success or failure. Refer to VXLIB_STATUS.
Performance Considerations:
For best performance,
  • the input and output data buffers are expected to be in L2 memory
  • the buffer pointers are assumed to be 64-byte aligned

Definition at line 1691 of file VXLIB_convolve_ci.cpp.

◆ VXLIB_convolve_exec_cn()

template<typename dTypeIn , typename dTypeFilter , typename dTypeOut >
VXLIB_STATUS VXLIB_convolve_exec_cn ( VXLIB_kernelHandle  handle,
void *restrict  pIn,
void *restrict  pFilter,
void *restrict  pOut 
)

This function is the main execution function for the natural C implementation of the kernel. The function declaration conforms to the declaration of VXLIB_convolve_exec.

Parameters
[in]handle: Active handle to the kernel
[in]pIn: Pointer to buffer holding the input data
[in]pFilter: Pointer to buffer holding the input filter
[out]pOut: Pointer to buffer holding the output data
Returns
Status value indicating success or failure. Refer to VXLIB_STATUS.

Definition at line 61 of file VXLIB_convolve_cn.cpp.