#ifndef BFG_OCL_H #define BFG_OCL_H #include "config.h" #include #include #ifdef HAVE_OPENCL #include "CL/cl.h" #include "miner.h" typedef struct { cl_device_id devid; char *platform_ver_str; bool is_mesa; cl_context context; bool kernel_loaded; cl_kernel kernel; cl_command_queue commandQueue; cl_program program; cl_mem outputBuffer; #ifdef USE_SCRYPT cl_mem CLbuffer0; cl_mem padbuffer8; size_t padbufsize; void * cldata; #endif bool hasBitAlign; bool hasOpenCL11plus; bool goffset; cl_uint preferred_vwidth; cl_uint vwidth; size_t max_work_size; size_t wsize; cl_uint max_compute_units; enum cl_kernels chosen_kernel; } _clState; extern FILE *opencl_open_kernel(const char *filename); extern char *file_contents(const char *filename, int *length); extern int clDevicesNum(void); extern _clState *opencl_create_clState(unsigned int gpu, char *name, size_t nameSize); extern bool opencl_load_kernel(struct cgpu_info *, _clState *clState, const char *name); #endif /* HAVE_OPENCL */ #endif /* __OCL_H__ */