--- OpenCL/OpenCL.xs 2012/04/21 22:16:09 1.43 +++ OpenCL/OpenCL.xs 2012/04/23 13:50:12 1.44 @@ -13,18 +13,25 @@ // in addition, you cannot test for this in any future-proof way. // each time a new opencl version comes out, you need to make a new // release. -#define CL_USE_DEPRECATED_OPENCL_1_1_APIS #define CL_USE_DEPRECATED_OPENCL_1_2_APIS /* just guessing, you stupid idiots */ +#ifndef PREFER_1_! + #define PREFER_1_1 1 +#endif + +#if PREFER_1_1 + #define CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif + #ifdef __APPLE__ #include #else #include #endif -#if 0 // testing -#undef CL_USE_DEPRECATED_OPENCL_1_1_APIS -#undef CL_VERSION_1_2 +#ifndef CL_VERSION_1_2 + #undef PREFER_1_1 + #define PREFER_1_1 1 #endif typedef cl_platform_id OpenCL__Platform; @@ -767,11 +774,11 @@ STRLEN len; char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; const cl_image_format format = { channel_order, channel_type }; -#if CL_VERSION_1_2 +#if PREFER_1_1 + NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (self, flags, &format, width, height, row_pitch, ptr, &res)); +#else const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0, row_pitch, 0, 0, 0, 0 }; NEED_SUCCESS_ARG (cl_mem mem, CreateImage, (self, flags, &format, &desc, ptr, &res)); -#else - NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (self, flags, &format, width, height, row_pitch, ptr, &res)); #endif XPUSH_NEW_OBJ ("OpenCL::Image2D", mem); @@ -781,11 +788,11 @@ STRLEN len; char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; const cl_image_format format = { channel_order, channel_type }; -#if CL_VERSION_1_2 +#if PREFER_1_1 + NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); +#else const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE3D, width, height, depth, 0, row_pitch, slice_pitch, 0, 0, 0 }; NEED_SUCCESS_ARG (cl_mem mem, CreateImage, (self, flags, &format, &desc, ptr, &res)); -#else - NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); #endif XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); @@ -808,8 +815,6 @@ void gl_texture (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) ALIAS: - gl_texture2d = 0 - gl_texture3d = 0 PPCODE: NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture, (self, flags, target, miplevel, texture, &res)); cl_gl_object_type type; @@ -826,21 +831,27 @@ } XPUSH_NEW_OBJ (klass, mem); -#else +#endif void gl_texture2d (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) PPCODE: +#if PREFER_1_1 NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture2D, (self, flags, target, miplevel, texture, &res)); +#else + NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture , (self, flags, target, miplevel, texture, &res)); +#endif XPUSH_NEW_OBJ ("OpenCL::Image2D", mem); void gl_texture3d (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) PPCODE: +#if PREFER_1_1 NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture3D, (self, flags, target, miplevel, texture, &res)); - XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); - +#else + NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture , (self, flags, target, miplevel, texture, &res)); #endif + XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); #endif