ocl.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef BFG_OCL_H
  2. #define BFG_OCL_H
  3. #include "config.h"
  4. #include <stdbool.h>
  5. #include <stdio.h>
  6. #include "CL/cl.h"
  7. #include "miner.h"
  8. struct opencl_kernel_info;
  9. typedef struct _clState _clState;
  10. typedef cl_int (*queue_kernel_parameters_func_t)(const struct opencl_kernel_info *, _clState *, struct work *, cl_uint);
  11. struct opencl_kernel_info {
  12. bool loaded;
  13. cl_program program;
  14. cl_kernel kernel;
  15. bool goffset;
  16. enum cl_kernels interface;
  17. size_t wsize;
  18. queue_kernel_parameters_func_t queue_kernel_parameters;
  19. };
  20. struct _clState {
  21. cl_device_id devid;
  22. char *platform_ver_str;
  23. bool is_mesa;
  24. cl_context context;
  25. cl_command_queue commandQueue;
  26. struct opencl_kernel_info kernel_sha256d;
  27. struct opencl_kernel_info kernel_scrypt;
  28. cl_mem outputBuffer;
  29. #ifdef USE_SCRYPT
  30. cl_mem CLbuffer0;
  31. cl_mem padbuffer8;
  32. size_t padbufsize;
  33. void * cldata;
  34. #endif
  35. bool hasBitAlign;
  36. bool hasOpenCL11plus;
  37. cl_uint preferred_vwidth;
  38. cl_uint vwidth;
  39. size_t max_work_size;
  40. cl_uint max_compute_units;
  41. };
  42. extern FILE *opencl_open_kernel(const char *filename);
  43. extern char *file_contents(const char *filename, int *length);
  44. extern char *opencl_kernel_source(const char *filename, int *out_sourcelen, enum cl_kernels *out_kinterface);
  45. extern int clDevicesNum(void);
  46. extern _clState *opencl_create_clState(unsigned int gpu, char *name, size_t nameSize);
  47. 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 *);
  48. #endif /* __OCL_H__ */