/* * render_opencl.h * * Created on: 25.01.2018 * Author: Superleo1810 */ #ifndef RENDER_OPENCL_H_ #define RENDER_OPENCL_H_ #include "defs.h" #include #include #include #include "sets.h" #include #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 iterations; u32 colorFrom; u32 colorTo; d64 to_x; d64 to_y; d64 speed; u16 width; u16 height; u8 renderFPS; } OpenCLConfig; OpenCLConfig *config_opencl; cl_double x_min_cl, x_max_cl, y_min_cl, y_max_cl; cl_double x_min_s_cl, x_max_s_cl, y_min_s_cl, y_max_s_cl; 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]; cl_int width_cl; int t_old_opencl; d64 zoom_func(d64 ft, d64 s); void init_opencl(OpenCLConfig *config); void render_opencl(void); void idle_opencl(void); void idle_opencl_dummy(void); void keyboard_opencl(unsigned char key, int mouseX, int mouseY); void mouse_opencl(int button, int state, int x, int y); #endif /* RENDER_OPENCL_H_ */