ocl.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. #define SCRYPT_CLBUFFER0_SZ (128)
  8. #define FULLHEADER_CLBUFFER0_SZ ( 80)
  9. #ifdef USE_SCRYPT
  10. # define MAX_CLBUFFER0_SZ SCRYPT_CLBUFFER0_SZ
  11. #elif USE_OPENCL_FULLHEADER
  12. # define MAX_CLBUFFER0_SZ FULLHEADER_CLBUFFER0_SZ
  13. #endif
  14. struct mining_algorithm;
  15. struct opencl_kernel_info;
  16. typedef struct _clState _clState;
  17. struct _clState {
  18. cl_device_id devid;
  19. char *platform_ver_str;
  20. bool is_mesa;
  21. cl_context context;
  22. cl_command_queue commandQueue;
  23. cl_mem outputBuffer;
  24. #ifdef MAX_CLBUFFER0_SZ
  25. cl_mem CLbuffer0;
  26. #endif
  27. #ifdef USE_SCRYPT
  28. cl_mem padbuffer8;
  29. size_t padbufsize;
  30. void * cldata;
  31. #endif
  32. bool hasBitAlign;
  33. bool hasOpenCL11plus;
  34. cl_uint preferred_vwidth;
  35. cl_uint vwidth;
  36. size_t max_work_size;
  37. cl_uint max_compute_units;
  38. };
  39. extern FILE *opencl_open_kernel(const char *filename);
  40. extern char *file_contents(const char *filename, int *length);
  41. extern char *opencl_kernel_source(const char *filename, int *out_sourcelen, enum cl_kernels *out_kinterface, struct mining_algorithm **);
  42. extern int clDevicesNum(void);
  43. extern _clState *opencl_create_clState(unsigned int gpu, char *name, size_t nameSize);
  44. 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 *);
  45. #endif /* __OCL_H__ */