aboutsummaryrefslogtreecommitdiff
path: root/src/render_opencl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/render_opencl.h')
-rw-r--r--src/render_opencl.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/render_opencl.h b/src/render_opencl.h
index aaa9df6..b995c4d 100644
--- a/src/render_opencl.h
+++ b/src/render_opencl.h
@@ -11,10 +11,24 @@
#include "defs.h"
#include <stdlib.h>
#include <GL/glut.h>
+#include <CL/cl.h>
+#include "sets.h"
+#include <math.h>
+
+#define OPENCL_FPU_32 0
+#define OPENCL_FPU_64 1
+#define OPENCL_FPU_128 2
+
+#define MAX_SOURCE_SIZE 0xFFFF // 64 KiB
+#define MAX_DEVICES 4
typedef struct config_opencl {
+ u8 fpu;
+ u8 fma;
+ GLuint tex;
+ d64 (*zoom_func)(d64, d64);
+ u8 set_func; // id, not pointer!
u32 *arr;
- u32 (*set_func)(d64, d64, u32);
u32 iterations;
u32 colorFrom;
u32 colorTo;
@@ -28,6 +42,32 @@ typedef struct config_opencl {
OpenCLConfig *config_opencl;
+d64 x_min, x_max, y_min, y_max;
+d64 x_min_s, x_max_s, y_min_s, y_max_s;
+
+float cl_ft;
+cl_uint *output;
+cl_device_id device_id;
+cl_context context;
+cl_int ret;
+cl_kernel kernel_vector[MAX_DEVICES];
+cl_uint num_devices;
+cl_device_id *devices;
+cl_command_queue commandQueue[MAX_DEVICES];
+cl_mem outputBuffer[MAX_DEVICES];
+
+double xpos;
+double ypos;
+double xsize;
+double ysize;
+double xstep;
+double ystep;
+double leftx;
+double topy;
+double topy0;
+
+d64 zoom_func(d64 ft, d64 s);
+
void init_opencl(OpenCLConfig *config);
void render_opencl(void);
void idle_opencl(void);