TIOVX User Guide
tivx_target_kernel_priv.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2017 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
63 
64 
65 
66 #ifndef TIVX_TARGET_KERNEL_PRIV_H_
67 #define TIVX_TARGET_KERNEL_PRIV_H_
68 
69 
70 #ifdef __cplusplus
71 extern "C" {
72 #endif
73 
74 #include <vx_internal.h>
75 
76 #if defined(BUILD_BAM)
78 #endif
79 
89 #define TIVX_TARGET_KERNEL_ID_INVALID (0xFFFFu)
90 
96 #define TIVX_TARGET_KERNEL_ID_NOT_USED (0xFFFEu)
97 
98 
103 typedef struct _tivx_target_kernel {
104 
107  vx_enum target_id;
108  char kernel_name[VX_MAX_KERNEL_NAME];
109 
110  tivx_target_kernel_f process_func;
111  tivx_target_kernel_f create_func;
112  tivx_target_kernel_f delete_func;
113  tivx_target_kernel_control_f control_func;
114 
115 #if defined(BUILD_BAM)
116  tivx_target_kernel_create_in_bam_graph_f create_in_bam_func;
117  tivx_target_kernel_get_node_port_f get_node_port_func;
118  tivx_target_kernel_append_internal_edges_f append_internal_edges_func;
120  tivx_target_kernel_pre_post_process_f postprocess_func;
121  int32_t kernel_params_size;
122 #endif
123 
124  void *caller_priv_arg;
125 
128 
130 
138 vx_status ownTargetKernelExecute(tivx_target_kernel_instance target_kernel_instance, tivx_obj_desc_t *obj_desc[], uint16_t num_params);
139 
147 vx_status ownTargetKernelCreate(tivx_target_kernel_instance target_kernel_instance, tivx_obj_desc_t *obj_desc[], uint16_t num_params);
148 
156 vx_status ownTargetKernelDelete(tivx_target_kernel_instance target_kernel_instance, tivx_obj_desc_t *obj_desc[], uint16_t num_params);
157 
167  tivx_target_kernel_instance target_kernel_instance,
168  uint32_t node_cmd_id, tivx_obj_desc_t *obj_desc[], uint16_t num_params);
169 
175 tivx_target_kernel ownTargetKernelGet(vx_enum kernel_id, volatile char *kernel_name, vx_enum target_id);
176 
183 
189 void ownTargetKernelDeInit(void);
190 
191 
192 #ifdef __cplusplus
193 }
194 #endif
195 
196 #endif
Object descriptor.
int32_t vx_enum
struct _tivx_target_kernel * tivx_target_kernel
Handle to kernel on a target.
vx_enum vx_status
tivx_target_kernel ownTargetKernelGet(vx_enum kernel_id, volatile char *kernel_name, vx_enum target_id)
Returns target kernel registered against this kernel ID and target ID.
struct _tivx_target_kernel_instance * tivx_target_kernel_instance
Handle to instance of kernel on a target.
vx_status(VX_CALLBACK * tivx_target_kernel_control_f)(tivx_target_kernel_instance kernel, uint32_t node_cmd_id, tivx_obj_desc_t *obj_desc[], uint16_t num_params, void *priv_arg)
The target kernel callback for control command.
vx_status ownTargetKernelInit(void)
Init target kernel module.
vx_uint32 num_pipeup_bufs
Number of buffers needed for this kernel.
Holds information about a target kernel instance.
vx_status ownTargetKernelCreate(tivx_target_kernel_instance target_kernel_instance, tivx_obj_desc_t *obj_desc[], uint16_t num_params)
Create kernel on the target.
This file provides a BAM wrapper interface around each VXLIB kernel to be included in TIOVX...
vx_status(VX_CALLBACK * tivx_target_kernel_pre_post_process_f)(tivx_target_kernel_instance kernel, tivx_obj_desc_t *obj_desc[], uint16_t num_params, tivx_bam_graph_handle *graph_handle, void *priv_arg)
The "create in bam graph" target kernel callback.
vx_status ownTargetKernelExecute(tivx_target_kernel_instance target_kernel_instance, tivx_obj_desc_t *obj_desc[], uint16_t num_params)
Execute kernel on the target.
#define VX_MAX_KERNEL_NAME
uint32_t vx_uint32
vx_status(VX_CALLBACK * tivx_target_kernel_f)(tivx_target_kernel_instance kernel, tivx_obj_desc_t *obj_desc[], uint16_t num_params, void *priv_arg)
The target kernel callback.
The top level TI OpenVX implementation header.
vx_status(VX_CALLBACK * tivx_target_kernel_get_node_port_f)(tivx_target_kernel_instance kernel, uint8_t ovx_port, uint8_t plane, uint8_t *bam_node, uint8_t *bam_port)
The "get node port" target kernel callback.
vx_status(VX_CALLBACK * tivx_target_kernel_append_internal_edges_f)(tivx_target_kernel_instance kernel, BAM_EdgeParams edge_list[], int32_t *bam_edge_cnt)
The "append internal edges" target kernel callback This callback is optional and only needs to be imp...
vx_status ownTargetKernelControl(tivx_target_kernel_instance target_kernel_instance, uint32_t node_cmd_id, tivx_obj_desc_t *obj_desc[], uint16_t num_params)
Control kernel on the target.
vx_status(VX_CALLBACK * tivx_target_kernel_create_in_bam_graph_f)(tivx_target_kernel_instance kernel, tivx_obj_desc_t *obj_desc[], uint16_t num_params, void *priv_arg, BAM_NodeParams node_list[], tivx_bam_kernel_details_t kernel_details[], int32_t *bam_node_cnt, void *scratch, int32_t *size)
The "create in bam graph" target kernel callback.
vx_status ownTargetKernelDelete(tivx_target_kernel_instance target_kernel_instance, tivx_obj_desc_t *obj_desc[], uint16_t num_params)
Delete kernel on the target.
void ownTargetKernelDeInit(void)
DeInit target kernel module.