… | |
… | |
759 | } |
759 | } |
760 | XPUSH_NEW_OBJ (klass, mem); |
760 | XPUSH_NEW_OBJ (klass, mem); |
761 | |
761 | |
762 | #endif |
762 | #endif |
763 | |
763 | |
764 | #if !CL_VERSION_1_2 || defined CL_USE_DEPRECATED_OPENCL_1_1_APIS |
|
|
765 | |
|
|
766 | void |
764 | void |
767 | image2d (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) |
765 | image2d (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) |
768 | PPCODE: |
766 | PPCODE: |
769 | STRLEN len; |
767 | STRLEN len; |
770 | char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; |
768 | char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; |
… | |
… | |
789 | #else |
787 | #else |
790 | NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); |
788 | NEED_SUCCESS_ARG (cl_mem mem, CreateImage3D, (self, flags, &format, width, height, depth, row_pitch, slice_pitch, ptr, &res)); |
791 | #endif |
789 | #endif |
792 | XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); |
790 | XPUSH_NEW_OBJ ("OpenCL::Image3D", mem); |
793 | |
791 | |
794 | #endif |
|
|
795 | |
|
|
796 | #if cl_apple_gl_sharing || cl_khr_gl_sharing |
792 | #if cl_apple_gl_sharing || cl_khr_gl_sharing |
797 | |
793 | |
798 | void |
794 | void |
799 | gl_buffer (OpenCL::Context self, cl_mem_flags flags, cl_GLuint bufobj) |
795 | gl_buffer (OpenCL::Context self, cl_mem_flags flags, cl_GLuint bufobj) |
800 | PPCODE: |
796 | PPCODE: |
… | |
… | |
809 | |
805 | |
810 | #if CL_VERSION_1_2 |
806 | #if CL_VERSION_1_2 |
811 | |
807 | |
812 | void |
808 | void |
813 | gl_texture (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) |
809 | gl_texture (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) |
|
|
810 | ALIAS: |
|
|
811 | gl_texture2d = 0 |
|
|
812 | gl_texture3d = 0 |
814 | PPCODE: |
813 | PPCODE: |
|
|
814 | NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture, (self, flags, target, miplevel, texture, &res)); |
|
|
815 | cl_gl_object_type type; |
|
|
816 | NEED_SUCCESS (GetGLObjectInfo, (mem, &type, 0)); // TODO: use target instead? |
815 | char *klass = "OpenCL::Memory"; |
817 | char *klass = "OpenCL::Memory"; |
816 | cl_gl_object_type type; |
|
|
817 | NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture2D, (self, flags, target, miplevel, texture, &res)); |
|
|
818 | NEED_SUCCESS (GetGLObjectInfo, (mem, &type, 0)); |
|
|
819 | switch (type) |
818 | switch (type) |
820 | { |
819 | { |
821 | case CL_GL_OBJECT_TEXTURE_BUFFER: klass = "OpenCL::Image1DBuffer"; break; |
820 | case CL_GL_OBJECT_TEXTURE_BUFFER: klass = "OpenCL::Image1DBuffer"; break; |
822 | case CL_GL_OBJECT_TEXTURE1D: klass = "OpenCL::Image1D"; break; |
821 | case CL_GL_OBJECT_TEXTURE1D: klass = "OpenCL::Image1D"; break; |
823 | case CL_GL_OBJECT_TEXTURE1D_ARRAY: klass = "OpenCL::Image2DArray"; break; |
822 | case CL_GL_OBJECT_TEXTURE1D_ARRAY: klass = "OpenCL::Image2DArray"; break; |
… | |
… | |
825 | case CL_GL_OBJECT_TEXTURE2D_ARRAY: klass = "OpenCL::Image2DArray"; break; |
824 | case CL_GL_OBJECT_TEXTURE2D_ARRAY: klass = "OpenCL::Image2DArray"; break; |
826 | case CL_GL_OBJECT_TEXTURE3D: klass = "OpenCL::Image3D"; break; |
825 | case CL_GL_OBJECT_TEXTURE3D: klass = "OpenCL::Image3D"; break; |
827 | } |
826 | } |
828 | XPUSH_NEW_OBJ (klass, mem); |
827 | XPUSH_NEW_OBJ (klass, mem); |
829 | |
828 | |
830 | #endif |
829 | #else |
831 | |
|
|
832 | #if !CL_VERSION_1_2 || defined CL_USE_DEPRECATED_OPENCL_1_1_APIS |
|
|
833 | |
830 | |
834 | void |
831 | void |
835 | gl_texture2d (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) |
832 | gl_texture2d (OpenCL::Context self, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture) |
836 | PPCODE: |
833 | PPCODE: |
837 | NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture2D, (self, flags, target, miplevel, texture, &res)); |
834 | NEED_SUCCESS_ARG (cl_mem mem, CreateFromGLTexture2D, (self, flags, target, miplevel, texture, &res)); |