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

Comparing OpenCL/OpenCL.xs (file contents):
Revision 1.20 by root, Sat Dec 10 23:07:38 2011 UTC vs.
Revision 1.21 by root, Mon Apr 16 06:39:54 2012 UTC

574 574
575void 575void
576buffer_sv (OpenCL::Context this, cl_mem_flags flags, SV *data) 576buffer_sv (OpenCL::Context this, cl_mem_flags flags, SV *data)
577 PPCODE: 577 PPCODE:
578 STRLEN len; 578 STRLEN len;
579 char *ptr = SvPVbyte (data, len); 579 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
580
581 if (!(flags & (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR))) 580 if (!(flags & (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR)))
582 croak ("clCreateBuffer: have to specify use or copy host ptr when buffer data is given, use $context->buffer instead?"); 581 croak ("clCreateBuffer: have to specify use or copy host ptr when buffer data is given, use $context->buffer instead?");
583
584 NEED_SUCCESS_ARG (cl_mem mem, CreateBuffer, (this, flags, len, ptr, &res)); 582 NEED_SUCCESS_ARG (cl_mem mem, CreateBuffer, (this, flags, len, ptr, &res));
585 XPUSH_NEW_OBJ ("OpenCL::BufferObj", mem); 583 XPUSH_NEW_OBJ ("OpenCL::BufferObj", mem);
586 584
587void 585void
588image2d (OpenCL::Context this, 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 this, 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)
589 PPCODE: 587 PPCODE:
590 STRLEN len; 588 STRLEN len;
591 char *ptr = SvPVbyte (data, len); 589 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
592 const cl_image_format format = { channel_order, channel_type }; 590 const cl_image_format format = { channel_order, channel_type };
593 NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (this, flags, &format, width, height, row_pitch, ptr, &res)); 591 NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (this, flags, &format, width, height, row_pitch, ptr, &res));
594 XPUSH_NEW_OBJ ("OpenCL::Image2D", mem); 592 XPUSH_NEW_OBJ ("OpenCL::Image2D", mem);
595 593
596void 594void
597image3d (OpenCL::Context this, 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 this, 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)
598 PPCODE: 596 PPCODE:
599 STRLEN len; 597 STRLEN len;
600 char *ptr = SvPVbyte (data, len); 598 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
601 const cl_image_format format = { channel_order, channel_type }; 599 const cl_image_format format = { channel_order, channel_type };
602 NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (this, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); 600 NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (this, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res));
603 XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); 601 XPUSH_NEW_OBJ ("OpenCL::Image3D", mem);
604 602
605void 603void

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines