ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/OpenCL/OpenCL.xs
(Generate patch)

Comparing OpenCL/OpenCL.xs (file contents):
Revision 1.22 by root, Mon Apr 16 09:42:33 2012 UTC vs.
Revision 1.23 by root, Mon Apr 16 09:43:30 2012 UTC

159 cl_uint event_list_count = (count); \ 159 cl_uint event_list_count = (count); \
160 cl_event *event_list_ptr = event_list (&ST (items), event_list_count) 160 cl_event *event_list_ptr = event_list (&ST (items), event_list_count)
161 161
162#define INFO(class) \ 162#define INFO(class) \
163{ \ 163{ \
164 size_t size; \ 164 size_t size; \
165 NEED_SUCCESS (Get ## class ## Info, (self, name, 0, 0, &size)); \ 165 NEED_SUCCESS (Get ## class ## Info, (self, name, 0, 0, &size)); \
166 SV *sv = sv_2mortal (newSV (size)); \ 166 SV *sv = sv_2mortal (newSV (size)); \
167 SvUPGRADE (sv, SVt_PV); \ 167 SvUPGRADE (sv, SVt_PV); \
168 SvPOK_only (sv); \ 168 SvPOK_only (sv); \
169 SvCUR_set (sv, size); \ 169 SvCUR_set (sv, size); \
170 NEED_SUCCESS (Get ## class ## Info, (self, name, size, SvPVX (sv), 0)); \ 170 NEED_SUCCESS (Get ## class ## Info, (self, name, size, SvPVX (sv), 0)); \
171 XPUSHs (sv); \ 171 XPUSHs (sv); \
172} 172}
173 173
174MODULE = OpenCL PACKAGE = OpenCL 174MODULE = OpenCL PACKAGE = OpenCL
175 175
296 int i; 296 int i;
297 297
298 for (i = num_devices; i--; ) 298 for (i = num_devices; i--; )
299 device_list [i] = SvPTROBJ ("clCreateContext", "devices", *av_fetch (av, i, 0), "OpenCL::Device"); 299 device_list [i] = SvPTROBJ ("clCreateContext", "devices", *av_fetch (av, i, 0), "OpenCL::Device");
300 300
301 NEED_SUCCESS_ARG (cl_context ctx, CreateContext, (0, num_devices, device_list, 0, 0, &res)); 301 NEED_SUCCESS_ARG (cl_context ctx, CreateContext, (0, num_devices, device_list, 0, 0, &res));
302 XPUSH_NEW_OBJ ("OpenCL::Context", ctx); 302 XPUSH_NEW_OBJ ("OpenCL::Context", ctx);
303 303
304void 304void
305context_from_type (OpenCL::Platform self, FUTURE properties = 0, cl_device_type type = CL_DEVICE_TYPE_DEFAULT, FUTURE notify = 0) 305context_from_type (OpenCL::Platform self, FUTURE properties = 0, cl_device_type type = CL_DEVICE_TYPE_DEFAULT, FUTURE notify = 0)
306 PPCODE: 306 PPCODE:
552 INFO (Context) 552 INFO (Context)
553 553
554void 554void
555queue (OpenCL::Context self, OpenCL::Device device, cl_command_queue_properties properties = 0) 555queue (OpenCL::Context self, OpenCL::Device device, cl_command_queue_properties properties = 0)
556 PPCODE: 556 PPCODE:
557 NEED_SUCCESS_ARG (cl_command_queue queue, CreateCommandQueue, (self, device, properties, &res)); 557 NEED_SUCCESS_ARG (cl_command_queue queue, CreateCommandQueue, (self, device, properties, &res));
558 XPUSH_NEW_OBJ ("OpenCL::Queue", queue); 558 XPUSH_NEW_OBJ ("OpenCL::Queue", queue);
559 559
560void 560void
561user_event (OpenCL::Context self) 561user_event (OpenCL::Context self)
562 PPCODE: 562 PPCODE:
563 NEED_SUCCESS_ARG (cl_event ev, CreateUserEvent, (self, &res)); 563 NEED_SUCCESS_ARG (cl_event ev, CreateUserEvent, (self, &res));
564 XPUSH_NEW_OBJ ("OpenCL::UserEvent", ev); 564 XPUSH_NEW_OBJ ("OpenCL::UserEvent", ev);
565 565
566void 566void
567buffer (OpenCL::Context self, cl_mem_flags flags, size_t len) 567buffer (OpenCL::Context self, cl_mem_flags flags, size_t len)
568 PPCODE: 568 PPCODE:
586image2d (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, size_t width, size_t height, size_t row_pitch = 0, SV *data = &PL_sv_undef) 586image2d (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, size_t width, size_t height, size_t row_pitch = 0, SV *data = &PL_sv_undef)
587 PPCODE: 587 PPCODE:
588 STRLEN len; 588 STRLEN len;
589 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; 589 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
590 const cl_image_format format = { channel_order, channel_type }; 590 const cl_image_format format = { channel_order, channel_type };
591 NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (self, flags, &format, width, height, row_pitch, ptr, &res)); 591 NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (self, flags, &format, width, height, row_pitch, ptr, &res));
592 XPUSH_NEW_OBJ ("OpenCL::Image2D", mem); 592 XPUSH_NEW_OBJ ("OpenCL::Image2D", mem);
593 593
594void 594void
595image3d (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, size_t width, size_t height, size_t depth, size_t row_pitch = 0, size_t slice_pitch = 0, SV *data = &PL_sv_undef) 595image3d (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, size_t width, size_t height, size_t depth, size_t row_pitch = 0, size_t slice_pitch = 0, SV *data = &PL_sv_undef)
596 PPCODE: 596 PPCODE:
597 STRLEN len; 597 STRLEN len;
598 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; 598 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
599 const cl_image_format format = { channel_order, channel_type }; 599 const cl_image_format format = { channel_order, channel_type };
600 NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); 600 NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res));
601 XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); 601 XPUSH_NEW_OBJ ("OpenCL::Image3D", mem);
602 602
603void 603void
604supported_image_formats (OpenCL::Context self, cl_mem_flags flags, cl_mem_object_type image_type) 604supported_image_formats (OpenCL::Context self, cl_mem_flags flags, cl_mem_object_type image_type)
605 PPCODE: 605 PPCODE:
606{ 606{
607 cl_uint count; 607 cl_uint count;
608 cl_image_format *list; 608 cl_image_format *list;
609 int i; 609 int i;
610 610
611 NEED_SUCCESS (GetSupportedImageFormats, (self, flags, image_type, 0, 0, &count)); 611 NEED_SUCCESS (GetSupportedImageFormats, (self, flags, image_type, 0, 0, &count));
612 Newx (list, count, cl_image_format); 612 Newx (list, count, cl_image_format);
613 NEED_SUCCESS (GetSupportedImageFormats, (self, flags, image_type, count, list, 0)); 613 NEED_SUCCESS (GetSupportedImageFormats, (self, flags, image_type, count, list, 0));
614 614
615 EXTEND (SP, count); 615 EXTEND (SP, count);
616 for (i = 0; i < count; ++i) 616 for (i = 0; i < count; ++i)
617 { 617 {
618 AV *av = newAV (); 618 AV *av = newAV ();
623} 623}
624 624
625void 625void
626sampler (OpenCL::Context self, cl_bool normalized_coords, cl_addressing_mode addressing_mode, cl_filter_mode filter_mode) 626sampler (OpenCL::Context self, cl_bool normalized_coords, cl_addressing_mode addressing_mode, cl_filter_mode filter_mode)
627 PPCODE: 627 PPCODE:
628 NEED_SUCCESS_ARG (cl_sampler sampler, CreateSampler, (self, normalized_coords, addressing_mode, filter_mode, &res)); 628 NEED_SUCCESS_ARG (cl_sampler sampler, CreateSampler, (self, normalized_coords, addressing_mode, filter_mode, &res));
629 XPUSH_NEW_OBJ ("OpenCL::Sampler", sampler); 629 XPUSH_NEW_OBJ ("OpenCL::Sampler", sampler);
630 630
631void 631void
632program_with_source (OpenCL::Context self, SV *program) 632program_with_source (OpenCL::Context self, SV *program)
633 PPCODE: 633 PPCODE:
634 STRLEN len; 634 STRLEN len;
635 size_t len2; 635 size_t len2;
636 const char *ptr = SvPVbyte (program, len); 636 const char *ptr = SvPVbyte (program, len);
637 637
638 len2 = len; 638 len2 = len;
639 NEED_SUCCESS_ARG (cl_program prog, CreateProgramWithSource, (self, 1, &ptr, &len2, &res)); 639 NEED_SUCCESS_ARG (cl_program prog, CreateProgramWithSource, (self, 1, &ptr, &len2, &res));
640 XPUSH_NEW_OBJ ("OpenCL::Program", prog); 640 XPUSH_NEW_OBJ ("OpenCL::Program", prog);
641 641
642#BEGIN:context 642#BEGIN:context
643 643
644void 644void
1246 NEED_SUCCESS (BuildProgram, (self, 1, &device, SvPVbyte_nolen (options), 0, 0)); 1246 NEED_SUCCESS (BuildProgram, (self, 1, &device, SvPVbyte_nolen (options), 0, 0));
1247 1247
1248void 1248void
1249build_info (OpenCL::Program self, OpenCL::Device device, cl_program_build_info name) 1249build_info (OpenCL::Program self, OpenCL::Device device, cl_program_build_info name)
1250 PPCODE: 1250 PPCODE:
1251 size_t size; 1251 size_t size;
1252 NEED_SUCCESS (GetProgramBuildInfo, (self, device, name, 0, 0, &size)); 1252 NEED_SUCCESS (GetProgramBuildInfo, (self, device, name, 0, 0, &size));
1253 SV *sv = sv_2mortal (newSV (size)); 1253 SV *sv = sv_2mortal (newSV (size));
1254 SvUPGRADE (sv, SVt_PV); 1254 SvUPGRADE (sv, SVt_PV);
1255 SvPOK_only (sv); 1255 SvPOK_only (sv);
1256 SvCUR_set (sv, size); 1256 SvCUR_set (sv, size);
1257 NEED_SUCCESS (GetProgramBuildInfo, (self, device, name, size, SvPVX (sv), 0)); 1257 NEED_SUCCESS (GetProgramBuildInfo, (self, device, name, size, SvPVX (sv), 0));
1258 XPUSHs (sv); 1258 XPUSHs (sv);
1259 1259
1260#BEGIN:program_build 1260#BEGIN:program_build
1261 1261
1262void 1262void
1285#END:program_build 1285#END:program_build
1286 1286
1287void 1287void
1288kernel (OpenCL::Program program, SV *function) 1288kernel (OpenCL::Program program, SV *function)
1289 PPCODE: 1289 PPCODE:
1290 NEED_SUCCESS_ARG (cl_kernel kernel, CreateKernel, (program, SvPVbyte_nolen (function), &res)); 1290 NEED_SUCCESS_ARG (cl_kernel kernel, CreateKernel, (program, SvPVbyte_nolen (function), &res));
1291 XPUSH_NEW_OBJ ("OpenCL::Kernel", kernel); 1291 XPUSH_NEW_OBJ ("OpenCL::Kernel", kernel);
1292 1292
1293void 1293void
1294info (OpenCL::Program self, cl_program_info name) 1294info (OpenCL::Program self, cl_program_info name)
1295 PPCODE: 1295 PPCODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines