Skip to content

Commit dba5f18

Browse files
vladimirlazbader
authored andcommitted
[SYCL] Enable set_final_data for shared_ptr
Signed-off-by: Vladimir Lazarev <[email protected]>
1 parent 9ff0401 commit dba5f18

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

sycl/include/CL/sycl/detail/buffer_impl.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,15 @@ template <typename AllocatorT> class buffer_impl : public SYCLMemObjT {
227227
};
228228
}
229229

230+
template <template <typename T> class C, typename T>
231+
void set_final_data(
232+
C<T> FinalData,
233+
typename std::enable_if<
234+
std::is_convertible<C<T>, weak_ptr_class<T>>::value>::type * = 0) {
235+
weak_ptr_class<T> WeakFinalData(FinalData);
236+
set_final_data(WeakFinalData);
237+
}
238+
230239
template <typename Destination>
231240
void set_final_data(
232241
Destination FinalData,

sycl/test/basic_tests/buffer/buffer.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,22 @@ int main() {
191191
std::weak_ptr<int> resultWeak = result;
192192
Buffer.set_final_data(resultWeak);
193193
queue myQueue;
194+
myQueue.submit([&](handler &cgh) {
195+
auto B = Buffer.get_access<access::mode::write>(cgh);
196+
cgh.parallel_for<class weakPointer>(
197+
range<1>{10}, [=](id<1> index) { B[index] = 1; });
198+
});
199+
}
200+
checkAllOf(result.get(), 10, 1, __LINE__);
201+
}
202+
203+
{
204+
int data[10] = {0};
205+
std::shared_ptr<int> result(new int[10]());
206+
{
207+
buffer<int, 1> Buffer(data, range<1>(10));
208+
Buffer.set_final_data(result);
209+
queue myQueue;
194210
myQueue.submit([&](handler &cgh) {
195211
auto B = Buffer.get_access<access::mode::write>(cgh);
196212
cgh.parallel_for<class sharedPointer>(

0 commit comments

Comments
 (0)