Skip to content

Commit 46288b4

Browse files
committed
CUDA tests exposed secondary bug. Fixed.
Signed-off-by: Chris Perkins <[email protected]>
1 parent 940d609 commit 46288b4

File tree

4 files changed

+244
-218
lines changed

4 files changed

+244
-218
lines changed

sycl/include/CL/sycl/detail/image_impl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class __SYCL_EXPORT image_impl final : public SYCLMemObjT {
248248
RT::PiMemImageDesc Desc;
249249
Desc.image_type = getImageType();
250250

251-
// MRange<> is [width], [width,height,width], or [width,height,depth] (which
251+
// MRange<> is [width], [width,height], or [width,height,depth] (which
252252
// is different than MAccessRange, etc in bufffers)
253253
int x_term_pos = 0, y_term_pos = 1, z_term_pos = 2;
254254
Desc.image_width = MRange[x_term_pos];

sycl/source/detail/memory_manager.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -460,13 +460,23 @@ void copyD2D(SYCLMemObjI *SYCLMemObj, RT::PiMem SrcMem, QueueImplPtr SrcQueue,
460460
Queue, SrcMem, DstMem, SrcXOffBytes, DstXOffBytes, SrcARWidthBytes,
461461
DepEvents.size(), DepEvents.data(), &OutEvent);
462462
} else {
463-
size_t SrcRowPitch = (1 == DimSrc) ? 0 : SrcSzWidthBytes;
464-
size_t SrcSlicePitch =
465-
(3 == DimSrc) ? SrcSzWidthBytes * SrcSize[SrcPos.y_term] : 0;
466-
467-
size_t DstRowPitch = (1 == DimDst) ? 0 : DstSzWidthBytes;
468-
size_t DstSlicePitch =
469-
(3 == DimDst) ? DstSzWidthBytes * DstSize[DstPos.y_term] : 0;
463+
// size_t SrcRowPitch = (1 == DimSrc) ? 0 : SrcSzWidthBytes;
464+
// size_t SrcSlicePitch = (3 == DimSrc) ? SrcSzWidthBytes *
465+
// SrcSize[SrcPos.y_term] : 0; size_t DstRowPitch = (1 == DimDst) ? 0 :
466+
// DstSzWidthBytes; size_t DstSlicePitch = (3 == DimDst) ? DstSzWidthBytes
467+
// * DstSize[DstPos.y_term] : 0;
468+
469+
// passing 0 for pitches not allowed. Because clEnqueueCopyBufferRect will
470+
// calculate both src and dest pitch using region[0], which is not correct
471+
// if src and dest are not the same size.
472+
size_t SrcRowPitch = SrcSzWidthBytes;
473+
size_t SrcSlicePitch = (DimSrc <= 1)
474+
? SrcSzWidthBytes
475+
: SrcSzWidthBytes * SrcSize[SrcPos.y_term];
476+
size_t DstRowPitch = DstSzWidthBytes;
477+
size_t DstSlicePitch = (DimDst <= 1)
478+
? DstSzWidthBytes
479+
: DstSzWidthBytes * DstSize[DstPos.y_term];
470480

471481
pi_buff_rect_offset_struct SrcOrigin{
472482
SrcXOffBytes, SrcOffset[SrcPos.y_term], SrcOffset[SrcPos.z_term]};

0 commit comments

Comments
 (0)