@@ -125,11 +125,12 @@ SYCL_ACCESSOR_IMPL(isTargetHostAccess(accessTarget) && dimensions == 0) {
125
125
SYCL_ACCESSOR_IMPL (isTargetHostAccess(accessTarget) && dimensions > 0 ) {
126
126
dataT *Data;
127
127
range<dimensions> Range;
128
+ range<dimensions> BufRange;
128
129
id<dimensions> Offset;
129
130
130
- accessor_impl (dataT *Data, range<dimensions> Range,
131
- id<dimensions> Offset = {})
132
- : Data (Data), Range (Range), Offset (Offset) {}
131
+ accessor_impl (dataT * Data, range<dimensions> Range,
132
+ range<dimensions> BufRange, id<dimensions> Offset = {})
133
+ : Data (Data), Range (Range), BufRange (BufRange), Offset (Offset) {}
133
134
134
135
// Returns the number of accessed elements.
135
136
size_t get_count () const { return Range.size (); }
@@ -146,10 +147,9 @@ SYCL_ACCESSOR_IMPL(!isTargetHostAccess(accessTarget) &&
146
147
// reinterpret casting while setting kernel arguments in order to get cl_mem
147
148
// value from the buffer regardless of the accessor's dimensionality.
148
149
#ifndef __SYCL_DEVICE_ONLY__
149
- detail::buffer_impl<dataT, 1 > *m_Buf = nullptr ;
150
-
150
+ detail::buffer_impl<buffer_allocator<char >> *m_Buf = nullptr ;
151
151
#else
152
- char padding[sizeof (detail::buffer_impl<dataT, dimensions > *)];
152
+ char padding[sizeof (detail::buffer_impl<buffer_allocator< char > > *)];
153
153
#endif // __SYCL_DEVICE_ONLY__
154
154
155
155
dataT *Data;
@@ -182,22 +182,23 @@ SYCL_ACCESSOR_IMPL(!isTargetHostAccess(accessTarget) &&
182
182
// reinterpret casting while setting kernel arguments in order to get cl_mem
183
183
// value from the buffer regardless of the accessor's dimensionality.
184
184
#ifndef __SYCL_DEVICE_ONLY__
185
- detail::buffer_impl<dataT, dimensions > *m_Buf = nullptr ;
185
+ detail::buffer_impl<buffer_allocator< char > > *m_Buf = nullptr ;
186
186
#else
187
- char padding[sizeof (detail::buffer_impl<dataT, dimensions > *)];
187
+ char padding[sizeof (detail::buffer_impl<buffer_allocator< char > > *)];
188
188
#endif // __SYCL_DEVICE_ONLY__
189
189
190
190
dataT *Data;
191
191
range<dimensions> Range;
192
+ range<dimensions> BufRange;
192
193
id<dimensions> Offset;
193
194
194
195
// Device accessors must be associated with a command group handler.
195
196
// The handler though can be nullptr at the creation point if the
196
197
// accessor is a placeholder accessor.
197
- accessor_impl (dataT *Data, range<dimensions> Range,
198
- handler *Handler = nullptr , id<dimensions> Offset = {})
199
- : Data (Data), Range (Range), Offset (Offset )
200
- {}
198
+ accessor_impl (dataT * Data, range<dimensions> Range,
199
+ range<dimensions> BufRange, handler *Handler = nullptr ,
200
+ id<dimensions> Offset = {} )
201
+ : Data (Data), Range (Range), BufRange (BufRange), Offset (Offset) {}
201
202
202
203
// Returns the number of accessed elements.
203
204
size_t get_count () const { return Range.size (); }
@@ -633,8 +634,8 @@ class accessor
633
634
#ifdef __SYCL_DEVICE_ONLY__
634
635
; // This ctor can't be used in device code, so no need to define it.
635
636
#else // !__SYCL_DEVICE_ONLY__
636
- : __impl(detail::getSyclObjImpl(bufferRef)->BufPtr,
637
- detail::getSyclObjImpl ( bufferRef)->Range ,
637
+ : __impl((dataT *) detail::getSyclObjImpl(bufferRef)->BufPtr,
638
+ bufferRef.get_range(), bufferRef.get_range() ,
638
639
&commandGroupHandlerRef) {
639
640
auto BufImpl = detail::getSyclObjImpl (bufferRef);
640
641
if (BufImpl->OpenCLInterop && !BufImpl->isValidAccessToMem (accessMode)) {
@@ -669,8 +670,8 @@ class accessor
669
670
AccessTarget == access::target::constant_buffer))) &&
670
671
Dimensions > 0 ),
671
672
buffer<DataT, Dimensions>>::type &bufferRef)
672
- : __impl(detail::getSyclObjImpl(bufferRef)->BufPtr,
673
- detail::getSyclObjImpl ( bufferRef)->Range ) {
673
+ : __impl((dataT *) detail::getSyclObjImpl(bufferRef)->BufPtr,
674
+ bufferRef.get_range(), bufferRef.get_range() ) {
674
675
auto BufImpl = detail::getSyclObjImpl (bufferRef);
675
676
if (AccessTarget == access ::target::host_buffer) {
676
677
if (BufImpl->OpenCLInterop ) {
@@ -701,17 +702,17 @@ class accessor
701
702
access::target AccessTarget = accessTarget,
702
703
access::placeholder IsPlaceholder = isPlaceholder>
703
704
accessor (typename std::enable_if<
704
- (IsPlaceholder == access::placeholder::false_t &&
705
- (AccessTarget == access::target::global_buffer ||
706
- AccessTarget == access::target::constant_buffer) &&
707
- Dimensions > 0),
708
- buffer<DataT, Dimensions>>::type &bufferRef,
705
+ (IsPlaceholder == access::placeholder::false_t &&
706
+ (AccessTarget == access::target::global_buffer ||
707
+ AccessTarget == access::target::constant_buffer) &&
708
+ Dimensions > 0 ),
709
+ buffer<DataT, Dimensions>>::type &bufferRef,
709
710
handler &commandGroupHandlerRef)
710
711
#ifdef __SYCL_DEVICE_ONLY__
711
712
; // This ctor can't be used in device code, so no need to define it.
712
713
#else
713
- : __impl(detail::getSyclObjImpl(bufferRef)->BufPtr,
714
- detail::getSyclObjImpl ( bufferRef)->Range ,
714
+ : __impl((dataT *) detail::getSyclObjImpl(bufferRef)->BufPtr,
715
+ bufferRef.get_range(), bufferRef.get_range() ,
715
716
&commandGroupHandlerRef) {
716
717
auto BufImpl = detail::getSyclObjImpl (bufferRef);
717
718
if (BufImpl->OpenCLInterop && !BufImpl->isValidAccessToMem (accessMode)) {
@@ -739,20 +740,19 @@ class accessor
739
740
access::target AccessTarget = accessTarget,
740
741
access::placeholder IsPlaceholder = isPlaceholder>
741
742
accessor (typename std::enable_if<
742
- ((IsPlaceholder == access::placeholder::false_t &&
743
- AccessTarget == access::target::host_buffer) ||
744
- (IsPlaceholder == access::placeholder::true_t &&
745
- (AccessTarget == access::target::global_buffer ||
746
- AccessTarget == access::target::constant_buffer) &&
747
- Dimensions > 0)),
748
- buffer<DataT, Dimensions>>::type &bufferRef,
749
- range<Dimensions> Range,
750
- id<Dimensions> Offset = {}
751
- )
743
+ ((IsPlaceholder == access::placeholder::false_t &&
744
+ AccessTarget == access::target::host_buffer) ||
745
+ (IsPlaceholder == access::placeholder::true_t &&
746
+ (AccessTarget == access::target::global_buffer ||
747
+ AccessTarget == access::target::constant_buffer) &&
748
+ Dimensions > 0 )),
749
+ buffer<DataT, Dimensions>>::type &bufferRef,
750
+ range<Dimensions> Range, id<Dimensions> Offset = {})
752
751
#ifdef __SYCL_DEVICE_ONLY__
753
752
; // This ctor can't be used in device code, so no need to define it.
754
- #else // !__SYCL_DEVICE_ONLY__
755
- : __impl(detail::getSyclObjImpl(bufferRef)->BufPtr, Range, Offset) {
753
+ #else // !__SYCL_DEVICE_ONLY__
754
+ : __impl(detail::getSyclObjImpl(bufferRef)->BufPtr, Range,
755
+ bufferRef.get_range(), Offset) {
756
756
auto BufImpl = detail::getSyclObjImpl (bufferRef);
757
757
if (AccessTarget == access ::target::host_buffer) {
758
758
if (BufImpl->OpenCLInterop ) {
@@ -769,7 +769,7 @@ class accessor
769
769
" interoperability buffer" );
770
770
}
771
771
}
772
- #endif // !__SYCL_DEVICE_ONLY__
772
+ #endif // !__SYCL_DEVICE_ONLY__
773
773
774
774
// buffer ctor #6:
775
775
// accessor(buffer &, handler &, range Range, id Offset);
@@ -784,20 +784,18 @@ class accessor
784
784
access::target AccessTarget = accessTarget,
785
785
access::placeholder IsPlaceholder = isPlaceholder>
786
786
accessor (typename std::enable_if<
787
- (IsPlaceholder == access::placeholder::false_t &&
788
- (AccessTarget == access::target::global_buffer ||
789
- AccessTarget == access::target::constant_buffer) &&
790
- Dimensions > 0),
791
- buffer<DataT, Dimensions>>::type &bufferRef,
792
- handler &commandGroupHandlerRef,
793
- range<Dimensions> Range,
794
- id<Dimensions> Offset = {}
795
- )
787
+ (IsPlaceholder == access::placeholder::false_t &&
788
+ (AccessTarget == access::target::global_buffer ||
789
+ AccessTarget == access::target::constant_buffer) &&
790
+ Dimensions > 0 ),
791
+ buffer<DataT, Dimensions>>::type &bufferRef,
792
+ handler &commandGroupHandlerRef, range<Dimensions> Range,
793
+ id<Dimensions> Offset = {})
796
794
#ifdef __SYCL_DEVICE_ONLY__
797
795
; // This ctor can't be used in device code, so no need to define it.
798
- #else // !__SYCL_DEVICE_ONLY__
799
- : __impl(detail::getSyclObjImpl(bufferRef)->BufPtr, Range,
800
- &commandGroupHandlerRef, Offset) {
796
+ #else // !__SYCL_DEVICE_ONLY__
797
+ : __impl((dataT *) detail::getSyclObjImpl(bufferRef)->BufPtr, Range,
798
+ bufferRef.get_range(), &commandGroupHandlerRef, Offset) {
801
799
auto BufImpl = detail::getSyclObjImpl (bufferRef);
802
800
if (BufImpl->OpenCLInterop && !BufImpl->isValidAccessToMem (accessMode)) {
803
801
throw cl::sycl::runtime_error (
@@ -807,7 +805,7 @@ class accessor
807
805
commandGroupHandlerRef.AddBufDep <AccessMode, AccessTarget>(*BufImpl);
808
806
__impl.m_Buf = BufImpl.get ();
809
807
}
810
- #endif // !__SYCL_DEVICE_ONLY__
808
+ #endif // !__SYCL_DEVICE_ONLY__
811
809
812
810
// TODO:
813
811
// local accessor ctor #1
0 commit comments