#ifndef IONBUF_H #define IONBUF_H #define CL_USE_DEPRECATED_OPENCL_1_2_APIS #ifdef __APPLE__ #include #else #include #endif #ifdef __cplusplus extern "C" { #endif typedef struct VisionBuf { size_t len; void* addr; int handle; int fd; cl_context ctx; cl_device_id device_id; cl_mem buf_cl; cl_command_queue copy_q; } VisionBuf; #define VISIONBUF_SYNC_FROM_DEVICE 0 #define VISIONBUF_SYNC_TO_DEVICE 1 VisionBuf visionbuf_allocate(size_t len); VisionBuf visionbuf_allocate_cl(size_t len, cl_device_id device_id, cl_context ctx, cl_mem *out_mem); cl_mem visionbuf_to_cl(const VisionBuf* buf, cl_device_id device_id, cl_context ctx); void visionbuf_sync(const VisionBuf* buf, int dir); void visionbuf_free(const VisionBuf* buf); #ifdef __cplusplus } #endif #endif