summaryrefslogtreecommitdiffstats
path: root/xmrstak/backend/amd/amd_gpu/gpu.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'xmrstak/backend/amd/amd_gpu/gpu.hpp')
-rw-r--r--xmrstak/backend/amd/amd_gpu/gpu.hpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/xmrstak/backend/amd/amd_gpu/gpu.hpp b/xmrstak/backend/amd/amd_gpu/gpu.hpp
new file mode 100644
index 0000000..8a71cfa
--- /dev/null
+++ b/xmrstak/backend/amd/amd_gpu/gpu.hpp
@@ -0,0 +1,50 @@
+#pragma once
+
+#if defined(__APPLE__)
+#include <OpenCL/cl.h>
+#else
+#include <CL/cl.h>
+#endif
+
+#include <stdint.h>
+#include <vector>
+#include "../../../console.h"
+
+#define ERR_SUCCESS (0)
+#define ERR_OCL_API (2)
+#define ERR_STUPID_PARAMS (1)
+
+
+
+struct GpuContext
+{
+ /*Input vars*/
+ size_t deviceIdx;
+ size_t rawIntensity;
+ size_t workSize;
+
+ /*Output vars*/
+ cl_device_id DeviceID;
+ cl_command_queue CommandQueues;
+ cl_mem InputBuffer;
+ cl_mem OutputBuffer;
+ cl_mem ExtraBuffers[6];
+ cl_program Program;
+ cl_kernel Kernels[7];
+ size_t freeMem;
+ int computeUnits;
+ std::string name;
+
+ size_t Nonce;
+
+};
+
+uint32_t getNumPlatforms();
+int getAMDPlatformIdx();
+std::vector<GpuContext> getAMDDevices(int index);
+
+size_t InitOpenCL(GpuContext* ctx, size_t num_gpus, size_t platform_idx);
+size_t XMRSetJob(GpuContext* ctx, uint8_t* input, size_t input_len, uint32_t target);
+size_t XMRRunJob(GpuContext* ctx, cl_uint* HashOutput);
+
+
OpenPOWER on IntegriCloud