ocl.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef BFG_OCL_H
  2. #define BFG_OCL_H
  3. #include <stdbool.h>
  4. #include <stdio.h>
  5. #include "CL/cl.h"
  6. #include "miner.h"
  7. struct mining_algorithm;
  8. struct opencl_kernel_info;
  9. typedef struct _clState _clState;
  10. struct _clState {
  11. cl_device_id devid;
  12. char *platform_ver_str;
  13. bool is_mesa;
  14. cl_context context;
  15. cl_command_queue commandQueue;
  16. cl_mem outputBuffer;
  17. #ifdef USE_SCRYPT
  18. cl_mem CLbuffer0;
  19. cl_mem padbuffer8;
  20. size_t padbufsize;
  21. void * cldata;
  22. #endif
  23. bool hasBitAlign;
  24. bool hasOpenCL11plus;
  25. cl_uint preferred_vwidth;
  26. cl_uint vwidth;
  27. size_t max_work_size;
  28. cl_uint max_compute_units;
  29. };
  30. extern FILE *opencl_open_kernel(const char *filename);
  31. extern char *file_contents(const char *filename, int *length);
  32. extern char *opencl_kernel_source(const char *filename, int *out_sourcelen, enum cl_kernels *out_kinterface, struct mining_algorithm **);
  33. extern int clDevicesNum(void);
  34. extern _clState *opencl_create_clState(unsigned int gpu, char *name, size_t nameSize);
  35. extern bool opencl_load_kernel(struct cgpu_info *, _clState *clState, const char *name, struct opencl_kernel_info *, const char *kernel_file, const struct mining_algorithm *);
  36. #endif /* __OCL_H__ */