59 using byte =
unsigned char;
72 template <
int Dimensions = 1,
typename AllocatorT = cl::sycl::image_allocator>
77 impl = std::make_shared<detail::image_impl<Dimensions>>(
79 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
86 impl = std::make_shared<detail::image_impl<Dimensions>>(
88 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
94 template <
bool B = (Dimensions > 1)>
99 impl = std::make_shared<detail::image_impl<Dimensions>>(
100 Order, Type, Range, Pitch,
101 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
106 template <
bool B = (Dimensions > 1)>
111 impl = std::make_shared<detail::image_impl<Dimensions>>(
112 Order, Type, Range, Pitch,
113 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
120 impl = std::make_shared<detail::image_impl<Dimensions>>(
121 HostPointer, Order, Type, Range,
122 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
129 impl = std::make_shared<detail::image_impl<Dimensions>>(
130 HostPointer, Order, Type, Range,
131 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
139 impl = std::make_shared<detail::image_impl<Dimensions>>(
140 HostPointer, Order, Type, Range,
141 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
148 impl = std::make_shared<detail::image_impl<Dimensions>>(
149 HostPointer, Order, Type, Range,
150 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
156 template <
bool B = (Dimensions > 1)>
161 impl = std::make_shared<detail::image_impl<Dimensions>>(
162 HostPointer, Order, Type, Range, Pitch,
163 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
168 template <
bool B = (Dimensions > 1)>
173 impl = std::make_shared<detail::image_impl<Dimensions>>(
174 HostPointer, Order, Type, Range, Pitch,
175 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
183 impl = std::make_shared<detail::image_impl<Dimensions>>(
184 HostPointer, Order, Type, Range,
185 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
192 impl = std::make_shared<detail::image_impl<Dimensions>>(
193 HostPointer, Order, Type, Range,
194 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
200 template <
bool B = (Dimensions > 1)>
205 impl = std::make_shared<detail::image_impl<Dimensions>>(
206 HostPointer, Order, Type, Range, Pitch,
207 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(),
212 template <
bool B = (Dimensions > 1)>
217 impl = std::make_shared<detail::image_impl<Dimensions>>(
218 HostPointer, Order, Type, Range, Pitch,
219 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>(
224 #ifdef __SYCL_INTERNAL_API
225 image(cl_mem ClMemObject,
const context &SyclContext,
226 event AvailableEvent = {}) {
227 impl = std::make_shared<detail::image_impl<Dimensions>>(
228 ClMemObject, SyclContext, AvailableEvent,
229 make_unique_ptr<detail::SYCLMemObjAllocatorHolder<AllocatorT, byte>>());
235 image(
const image &rhs) =
default;
237 image(image &&rhs) =
default;
239 image &operator=(
const image &rhs) =
default;
241 image &operator=(image &&rhs) =
default;
251 return impl->template has_property<propertyT>();
255 return impl->template get_property<propertyT>();
261 template <
bool B = (Dimensions > 1)>
263 return impl->get_pitch();
267 size_t get_size()
const {
return impl->getSize(); }
271 size_t get_count()
const {
return size(); }
272 size_t size() const noexcept {
return impl->get_count(); }
276 return impl->template get_allocator<AllocatorT>();
279 template <
typename DataT, access::mode AccessMode>
281 access::target::image, access::placeholder::false_t,
285 access::placeholder::false_t,
287 commandGroupHandler);
290 template <
typename DataT, access::mode AccessMode>
292 access::target::host_image, access::placeholder::false_t,
296 access::placeholder::false_t,
300 template <
typename Destination = std::
nullptr_t>
302 impl->set_final_data(finalData);
308 std::shared_ptr<detail::image_impl<Dimensions>> impl;
318 template <
int Dimensions,
typename AllocatorT>
319 struct hash<
cl::sycl::image<Dimensions, AllocatorT>> {
321 return hash<std::shared_ptr<cl::sycl::detail::image_impl<Dimensions>>>()(