MCPcopy Create free account
hub / github.com/OpenKinect/libfreenect2 / Buffer

Method Buffer

include/internal/CL/cl.hpp:6607–6655  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6605
6606template< typename IteratorType >
6607Buffer::Buffer(
6608 const Context &context,
6609 IteratorType startIterator,
6610 IteratorType endIterator,
6611 bool readOnly,
6612 bool useHostPtr,
6613 cl_int* err)
6614{
6615 typedef typename std::iterator_traits<IteratorType>::value_type DataType;
6616 cl_int error;
6617
6618 cl_mem_flags flags = 0;
6619 if( readOnly ) {
6620 flags |= CL_MEM_READ_ONLY;
6621 }
6622 else {
6623 flags |= CL_MEM_READ_WRITE;
6624 }
6625 if( useHostPtr ) {
6626 flags |= CL_MEM_USE_HOST_PTR;
6627 }
6628
6629 ::size_t size = sizeof(DataType)*(endIterator - startIterator);
6630
6631 if( useHostPtr ) {
6632 object_ = ::clCreateBuffer(context(), flags, size, static_cast<DataType*>(&*startIterator), &error);
6633 } else {
6634 object_ = ::clCreateBuffer(context(), flags, size, 0, &error);
6635 }
6636
6637 detail::errHandler(error, __CREATE_BUFFER_ERR);
6638 if (err != NULL) {
6639 *err = error;
6640 }
6641
6642 if( !useHostPtr ) {
6643 CommandQueue queue(context, 0, &error);
6644 detail::errHandler(error, __CREATE_BUFFER_ERR);
6645 if (err != NULL) {
6646 *err = error;
6647 }
6648
6649 error = cl::copy(queue, startIterator, endIterator, *this);
6650 detail::errHandler(error, __CREATE_BUFFER_ERR);
6651 if (err != NULL) {
6652 *err = error;
6653 }
6654 }
6655}
6656
6657template< typename IteratorType >
6658Buffer::Buffer(

Callers 1

runFunction · 0.45

Calls 2

errHandlerFunction · 0.85
copyFunction · 0.85

Tested by

no test coverage detected