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

Comparing OpenCL/OpenCL.xs (file contents):
Revision 1.41 by root, Sat Apr 21 19:53:29 2012 UTC vs.
Revision 1.42 by root, Sat Apr 21 20:48:03 2012 UTC

729 if (!(flags & (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR))) 729 if (!(flags & (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR)))
730 croak ("OpenCL::Context::buffer_sv: you have to specify use or copy host ptr when buffer data is given, use $context->buffer instead?"); 730 croak ("OpenCL::Context::buffer_sv: you have to specify use or copy host ptr when buffer data is given, use $context->buffer instead?");
731 NEED_SUCCESS_ARG (cl_mem mem, CreateBuffer, (self, flags, len, ptr, &res)); 731 NEED_SUCCESS_ARG (cl_mem mem, CreateBuffer, (self, flags, len, ptr, &res));
732 XPUSH_NEW_OBJ ("OpenCL::BufferObj", mem); 732 XPUSH_NEW_OBJ ("OpenCL::BufferObj", mem);
733 733
734#if !CL_VERSION_1_2 || defined CL_USE_DEPRECATED_OPENCL_1_1_APIS 734#if CL_VERSION_1_2
735 735
736void 736void
737image2d (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) 737image (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, cl_mem_object_type type, size_t width, size_t height, size_t depth, size_t array_size = 0, size_t row_pitch = 0, size_t slice_pitch = 0, cl_uint num_mip_level = 0, cl_uint num_samples = 0, SV *data = &PL_sv_undef)
738 PPCODE: 738 PPCODE:
739 STRLEN len; 739 STRLEN len;
740 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; 740 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
741 const cl_image_format format = { channel_order, channel_type }; 741 const cl_image_format format = { channel_order, channel_type };
742 const cl_image_desc desc = {
743 type,
744 width, height, depth,
745 array_size, row_pitch, slice_pitch,
746 num_mip_level, num_samples,
747 type == CL_MEM_OBJECT_IMAGE1D_BUFFER ? (cl_mem)SvPTROBJ ("OpenCL::Context::Image", "data", data, "OpenCL::Buffer") : 0
748 };
742 NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (self, flags, &format, width, height, row_pitch, ptr, &res)); 749 NEED_SUCCESS_ARG (cl_mem mem, CreateImage, (self, flags, &format, &desc, ptr, &res));
750 char *klass = "OpenCL::Image";
751 switch (type)
752 {
753 case CL_MEM_OBJECT_IMAGE1D_BUFFER: klass = "OpenCL::Image1DBuffer"; break;
754 case CL_MEM_OBJECT_IMAGE1D: klass = "OpenCL::Image1D"; break;
755 case CL_MEM_OBJECT_IMAGE1D_ARRAY: klass = "OpenCL::Image2DArray"; break;
756 case CL_MEM_OBJECT_IMAGE2D: klass = "OpenCL::Image2D"; break;
757 case CL_MEM_OBJECT_IMAGE2D_ARRAY: klass = "OpenCL::Image2DArray"; break;
758 case CL_MEM_OBJECT_IMAGE3D: klass = "OpenCL::Image3D"; break;
759 }
743 XPUSH_NEW_OBJ ("OpenCL::Image2D", mem); 760 XPUSH_NEW_OBJ (klass, mem);
744 761
762#endif
763
764#if !CL_VERSION_1_2 || defined CL_USE_DEPRECATED_OPENCL_1_1_APIS
765
745void 766void
746image3d (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) 767image2d (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)
747 PPCODE: 768 PPCODE:
748 STRLEN len; 769 STRLEN len;
749 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; 770 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
750 const cl_image_format format = { channel_order, channel_type }; 771 const cl_image_format format = { channel_order, channel_type };
772#if CL_VERSION_1_2
773 const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0, row_pitch, 0, 0, 0, 0 };
774 NEED_SUCCESS_ARG (cl_mem mem, CreateImage, (self, flags, &format, &desc, ptr, &res));
775#else
776 NEED_SUCCESS_ARG (cl_mem mem, CreateImage2D, (self, flags, &format, width, height, row_pitch, ptr, &res));
777#endif
778 XPUSH_NEW_OBJ ("OpenCL::Image2D", mem);
779
780void
781image3d (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)
782 PPCODE:
783 STRLEN len;
784 char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0;
785 const cl_image_format format = { channel_order, channel_type };
786#if CL_VERSION_1_2
787 const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE3D, width, height, depth, 0, row_pitch, slice_pitch, 0, 0, 0 };
788 NEED_SUCCESS_ARG (cl_mem mem, CreateImage, (self, flags, &format, &desc, ptr, &res));
789#else
751 NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); 790 NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res));
791#endif
752 XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); 792 XPUSH_NEW_OBJ ("OpenCL::Image3D", mem);
753 793
754#endif 794#endif
755 795
756#if cl_apple_gl_sharing || cl_khr_gl_sharing 796#if cl_apple_gl_sharing || cl_khr_gl_sharing
771 811
772void 812void
773gl_texture (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) 813gl_texture (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture)
774 PPCODE: 814 PPCODE:
775 char *klass = "OpenCL::Memory"; 815 char *klass = "OpenCL::Memory";
776 cl_gl_object_type t; 816 cl_gl_object_type type;
777 NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture2D, (self, flags, target, miplevel, texture, &res)); 817 NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture2D, (self, flags, target, miplevel, texture, &res));
778 NEED_SUCCESS (GetGLObjectInfo, (mem, &t, 0)); 818 NEED_SUCCESS (GetGLObjectInfo, (mem, &type, 0));
779 switch (t) 819 switch (type)
780 { 820 {
781 case CL_GL_OBJECT_TEXTURE_BUFFER: klass = "OpenCL::Image1DBuffer"; break; 821 case CL_GL_OBJECT_TEXTURE_BUFFER: klass = "OpenCL::Image1DBuffer"; break;
782 case CL_GL_OBJECT_TEXTURE1D: klass = "OpenCL::Image1D"; break; 822 case CL_GL_OBJECT_TEXTURE1D: klass = "OpenCL::Image1D"; break;
783 case CL_GL_OBJECT_TEXTURE1D_ARRAY: klass = "OpenCL::Image2DArray"; break; 823 case CL_GL_OBJECT_TEXTURE1D_ARRAY: klass = "OpenCL::Image2DArray"; break;
784 case CL_GL_OBJECT_TEXTURE2D: klass = "OpenCL::Image2D"; break; 824 case CL_GL_OBJECT_TEXTURE2D: klass = "OpenCL::Image2D"; break;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines