29 template <int Dimensions, typename AllocatorT> class
image;
30 template <typename DataT, int Dimensions, access::mode AccessMode,
31 access::target AccessTarget, access::placeholder IsPlaceholder,
32 typename property_listT>
65 template <
typename DataT>
69 template <
int Dimensions>
78 "Dimensions of cl::sycl::image can be 1, 2 or 3");
81 size_t WHD[3] = {1, 1, 1};
85 MRowPitch = MElementSize * WHD[0];
86 MSlicePitch = MRowPitch * WHD[1];
87 BaseT::MSizeInBytes = MSlicePitch * WHD[2];
90 template <
bool B = (Dimensions > 1)>
91 void setPitches(
const EnableIfPitchT<B> Pitch) {
99 BaseT::MSizeInBytes = MSlicePitch * NumSlices;
105 std::unique_ptr<SYCLMemObjAllocator> Allocator,
107 :
image_impl((
void *)
nullptr, Order, Type, ImageRange,
108 std::move(Allocator), PropList) {}
110 template <
bool B = (Dimensions > 1)>
113 const EnableIfPitchT<B> &Pitch,
114 std::unique_ptr<SYCLMemObjAllocator> Allocator,
116 :
image_impl((
void *)
nullptr, Order, Type, ImageRange, Pitch,
117 std::move(Allocator), PropList) {}
121 std::unique_ptr<SYCLMemObjAllocator> Allocator,
123 : BaseT(PropList, std::move(Allocator)), MRange(ImageRange),
124 MOrder(Order), MType(Type),
133 std::unique_ptr<SYCLMemObjAllocator> Allocator,
135 : BaseT(PropList, std::move(Allocator)), MRange(ImageRange),
136 MOrder(Order), MType(Type),
143 template <
bool B = (Dimensions > 1)>
146 const EnableIfPitchT<B> &Pitch,
147 std::unique_ptr<SYCLMemObjAllocator> Allocator,
149 : BaseT(PropList, std::move(Allocator)), MRange(ImageRange),
150 MOrder(Order), MType(Type),
159 std::unique_ptr<SYCLMemObjAllocator> Allocator,
161 : BaseT(PropList, std::move(Allocator)), MRange(ImageRange),
162 MOrder(Order), MType(Type),
170 template <
bool B = (Dimensions > 1)>
173 const EnableIfPitchT<B> &Pitch,
174 std::unique_ptr<SYCLMemObjAllocator> Allocator,
176 : BaseT(PropList, std::move(Allocator)), MRange(ImageRange),
177 MOrder(Order), MType(Type),
185 std::unique_ptr<SYCLMemObjAllocator> Allocator);
193 template <
bool B = (Dimensions == 2)>
201 template <
bool B = (Dimensions == 3)>
209 size_t size() const noexcept {
return MRange.size(); }
212 void *HostPtr,
RT::PiEvent &OutEventToWait)
override;
231 BaseT::updateHostMemory();
253 static constexpr
int XTermPos = 0, YTermPos = 1, ZTermPos = 2;
282 bool MIsArrayImage =
false;
283 range<Dimensions> MRange;
286 uint8_t MNumChannels = 0;
287 size_t MElementSize = 0;
288 size_t MRowPitch = 0;
289 size_t MSlicePitch = 0;