ocl.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. cl_uint preferred_vwidth;
  34. cl_uint vwidth;
  35. size_t max_work_size;
  36. cl_uint max_compute_units;
  37. };
  38. extern FILE *opencl_open_kernel(const char *filename);
  39. extern char *file_contents(const char *filename, int *length);
  40. extern char *opencl_kernel_source(const char *filename, int *out_sourcelen, enum cl_kernels *out_kinterface, struct mining_algorithm **);
  41. extern int clDevicesNum(void);
  42. extern _clState *opencl_create_clState(unsigned int gpu, char *name, size_t nameSize);
  43. 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 *);
  44. #endif /* __OCL_H__ */