diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index 35df46ffb1..f0c286e0c8 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -2680,23 +2680,6 @@ cl_int CL_API_CALL clEnqueueCopyBufferRect(cl_command_queue commandQueue, WithCastToInternal(dstBuffer, &pDstBuffer)); if (CL_SUCCESS == retVal) { - - if (!pSrcBuffer->bufferRectPitchSet(srcOrigin, - region, - srcRowPitch, - srcSlicePitch, - dstRowPitch, - dstSlicePitch) || - !pDstBuffer->bufferRectPitchSet(dstOrigin, - region, - srcRowPitch, - srcSlicePitch, - dstRowPitch, - dstSlicePitch)) { - retVal = CL_INVALID_VALUE; - TRACING_EXIT(clEnqueueCopyBufferRect, &retVal); - return retVal; - } if (!pCommandQueue->validateCapabilityForOperation(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL, numEventsInWaitList, eventWaitList, event)) { retVal = CL_INVALID_OPERATION; TRACING_EXIT(clEnqueueCopyBufferRect, &retVal); diff --git a/opencl/source/mem_obj/buffer.cpp b/opencl/source/mem_obj/buffer.cpp index 324b510e22..2d6f44446e 100644 --- a/opencl/source/mem_obj/buffer.cpp +++ b/opencl/source/mem_obj/buffer.cpp @@ -558,10 +558,6 @@ bool Buffer::bufferRectPitchSet(const size_t *bufferOrigin, if (hostSlicePitch == 0) hostSlicePitch = region[1] * hostRowPitch; - if (region[0] == 0 || region[1] == 0 || region[2] == 0) { - return false; - } - if (bufferRowPitch < region[0] || hostRowPitch < region[0]) { return false; diff --git a/opencl/test/unit_test/api/cl_enqueue_copy_buffer_rect_tests.inl b/opencl/test/unit_test/api/cl_enqueue_copy_buffer_rect_tests.inl index 8480210b47..47c895358a 100644 --- a/opencl/test/unit_test/api/cl_enqueue_copy_buffer_rect_tests.inl +++ b/opencl/test/unit_test/api/cl_enqueue_copy_buffer_rect_tests.inl @@ -30,7 +30,7 @@ TEST_F(clEnqueueCopyBufferRectTests, GivenCorrectParametersWhenEnqueingCopyBuffe MockBuffer dstBuffer; size_t srcOrigin[] = {0, 0, 0}; size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; auto retVal = clEnqueueCopyBufferRect( pCommandQueue, @@ -74,7 +74,7 @@ TEST_F(clEnqueueCopyBufferRectTests, GivenQueueIncapableWhenEnqueingCopyBufferRe MockBuffer dstBuffer; size_t srcOrigin[] = {0, 0, 0}; size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; this->disableQueueCapabilities(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL); auto retVal = clEnqueueCopyBufferRect( @@ -95,214 +95,4 @@ TEST_F(clEnqueueCopyBufferRectTests, GivenQueueIncapableWhenEnqueingCopyBufferRe EXPECT_EQ(CL_INVALID_OPERATION, retVal); } -TEST_F(clEnqueueCopyBufferRectTests, givenPitchesEqualZeroAndZerosInRegionWhenCallClEnqueueCopyBufferRectThenClInvalidValueIsReturned) { - MockBuffer srcBuffer; - MockBuffer dstBuffer; - size_t srcOrigin[] = {0, 0, 0}; - size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {0, 0, 0}; - - auto retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region, - 0, //srcRowPitch - 0, //srcSlicePitch - 0, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); -} - -TEST_F(clEnqueueCopyBufferRectTests, givenZeroInRegionWhenCallClEnqueueCopyBufferRectThenClInvalidValueIsReturned) { - MockBuffer srcBuffer; - MockBuffer dstBuffer; - size_t srcOrigin[] = {0, 0, 0}; - size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {0, 0, 0}; - - auto retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region, - 10, //srcRowPitch - 0, //srcSlicePitch - 10, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); - - size_t region1[] = {10, 10, 0}; - - retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region1, - 10, //srcRowPitch - 0, //srcSlicePitch - 10, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); - size_t region2[] = {10, 0, 1}; - - retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region2, - 10, //srcRowPitch - 0, //srcSlicePitch - 10, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); - size_t region3[] = {10, 10, 0}; - - retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region3, - 10, //srcRowPitch - 0, //srcSlicePitch - 10, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); -} - -TEST_F(clEnqueueCopyBufferRectTests, givenNonProperSrcBufferSizeWhenCallClEnqueueCopyBufferRectThenClInvalidValueIsReturned) { - MockBuffer srcBuffer; - srcBuffer.size = 10; - MockBuffer dstBuffer; - size_t srcOrigin[] = {0, 0, 0}; - size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; - - auto retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region, - 10, //srcRowPitch - 0, //srcSlicePitch - 10, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); -} - -TEST_F(clEnqueueCopyBufferRectTests, givenNonProperDstBufferSizeWhenCallClEnqueueCopyBufferRectThenClInvalidValueIsReturned) { - MockBuffer srcBuffer; - MockBuffer dstBuffer; - dstBuffer.size = 10; - size_t srcOrigin[] = {0, 0, 0}; - size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; - - auto retVal = clEnqueueCopyBufferRect( - pCommandQueue, - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region, - 10, //srcRowPitch - 0, //srcSlicePitch - 10, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); -} - -TEST_F(clEnqueueCopyBufferRectTests, givenPitchesEqualZeroAndNotZeroRegionWhenCallClEnqueueCopyBufferRectThenPitchIsSetBasedOnRegionAndClSuccessIsReturned) { - class CommandQueueMock : public MockCommandQueue { - public: - CommandQueueMock(Context *context, ClDevice *device, const cl_queue_properties *props) : MockCommandQueue(context, device, props) {} - cl_int enqueueCopyBufferRect(Buffer *srcBuffer, Buffer *dstBuffer, const size_t *srcOrigin, const size_t *dstOrigin, - const size_t *region, size_t argSrcRowPitch, size_t argSrcSlicePitch, size_t argDstRowPitch, - size_t argDstSlicePitch, cl_uint numEventsInWaitList, - const cl_event *eventWaitList, cl_event *event) override { - srcRowPitch = argSrcRowPitch; - srcSlicePitch = argSrcSlicePitch; - dstRowPitch = argDstRowPitch; - dstSlicePitch = argDstSlicePitch; - return CL_SUCCESS; - } - - size_t srcRowPitch; - size_t srcSlicePitch; - size_t dstRowPitch; - size_t dstSlicePitch; - }; - - auto commandQueue = std::make_unique(pContext, pDevice, nullptr); - MockBuffer srcBuffer; - MockBuffer dstBuffer; - dstBuffer.size = 200; - srcBuffer.size = 200; - size_t srcOrigin[] = {0, 0, 0}; - size_t dstOrigin[] = {0, 0, 0}; - size_t region[] = {10, 20, 1}; - - auto retVal = clEnqueueCopyBufferRect( - commandQueue.get(), - &srcBuffer, //srcBuffer - &dstBuffer, //dstBuffer - srcOrigin, - dstOrigin, - region, - 0, //srcRowPitch - 0, //srcSlicePitch - 0, //dstRowPitch - 0, //dstSlicePitch - 0, //numEventsInWaitList - nullptr, - nullptr); - - EXPECT_EQ(CL_SUCCESS, retVal); - - EXPECT_EQ(region[0], commandQueue->srcRowPitch); - EXPECT_EQ(region[0], commandQueue->dstRowPitch); - - EXPECT_EQ(region[1], commandQueue->srcSlicePitch / commandQueue->srcRowPitch); - EXPECT_EQ(region[1], commandQueue->dstSlicePitch / commandQueue->dstRowPitch); -} } // namespace ULT diff --git a/opencl/test/unit_test/api/cl_enqueue_read_buffer_rect_tests.inl b/opencl/test/unit_test/api/cl_enqueue_read_buffer_rect_tests.inl index f16426af04..8095120580 100644 --- a/opencl/test/unit_test/api/cl_enqueue_read_buffer_rect_tests.inl +++ b/opencl/test/unit_test/api/cl_enqueue_read_buffer_rect_tests.inl @@ -75,7 +75,7 @@ TEST_F(clEnqueueReadBufferRectTest, GivenNullHostPtrWhenReadingRectangularRegion auto buffer = clCreateBuffer( pContext, CL_MEM_READ_WRITE, - 100, + 20, nullptr, &retVal); EXPECT_EQ(CL_SUCCESS, retVal); @@ -110,7 +110,7 @@ TEST_F(clEnqueueReadBufferRectTest, GivenValidParametersWhenReadingRectangularRe auto buffer = clCreateBuffer( pContext, CL_MEM_READ_WRITE, - 100, + 20, nullptr, &retVal); EXPECT_EQ(CL_SUCCESS, retVal); @@ -120,7 +120,7 @@ TEST_F(clEnqueueReadBufferRectTest, GivenValidParametersWhenReadingRectangularRe size_t buffOrigin[] = {0, 0, 0}; size_t hostOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; auto retVal = clEnqueueReadBufferRect( pCommandQueue, @@ -144,12 +144,11 @@ TEST_F(clEnqueueReadBufferRectTest, GivenValidParametersWhenReadingRectangularRe TEST_F(clEnqueueReadBufferRectTest, GivenQueueIncapableWhenReadingRectangularRegionThenInvalidOperationIsReturned) { MockBuffer buffer{}; - buffer.size = 100; char ptr[10]; size_t buffOrigin[] = {0, 0, 0}; size_t hostOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; this->disableQueueCapabilities(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL); auto retVal = clEnqueueReadBufferRect( @@ -175,7 +174,7 @@ TEST_F(clEnqueueReadBufferRectTest, GivenInvalidPitchWhenReadingRectangularRegio auto buffer = clCreateBuffer( pContext, CL_MEM_READ_WRITE, - 100, + 20, nullptr, &retVal); EXPECT_EQ(CL_SUCCESS, retVal); @@ -185,7 +184,7 @@ TEST_F(clEnqueueReadBufferRectTest, GivenInvalidPitchWhenReadingRectangularRegio size_t buffOrigin[] = {0, 0, 0}; size_t hostOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; size_t bufferRowPitch = 9; auto retVal = clEnqueueReadBufferRect( diff --git a/opencl/test/unit_test/api/cl_enqueue_write_buffer_rect_tests.inl b/opencl/test/unit_test/api/cl_enqueue_write_buffer_rect_tests.inl index 1294fc2287..0bce2b987c 100644 --- a/opencl/test/unit_test/api/cl_enqueue_write_buffer_rect_tests.inl +++ b/opencl/test/unit_test/api/cl_enqueue_write_buffer_rect_tests.inl @@ -74,7 +74,7 @@ TEST_F(clEnqueueWriteBufferRectTests, GivenNullHostPtrWhenWritingRectangularRegi auto buffer = clCreateBuffer( pContext, CL_MEM_READ_WRITE, - 100, + 20, nullptr, &retVal); EXPECT_EQ(CL_SUCCESS, retVal); @@ -107,12 +107,11 @@ TEST_F(clEnqueueWriteBufferRectTests, GivenNullHostPtrWhenWritingRectangularRegi TEST_F(clEnqueueWriteBufferRectTests, GivenCorrectParametersWhenWritingRectangularRegionThenSuccessIsReturned) { MockBuffer buffer{}; - buffer.size = 100; char ptr[10]; size_t buffOrigin[] = {0, 0, 0}; size_t hostOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; auto retVal = clEnqueueWriteBufferRect( pCommandQueue, @@ -135,12 +134,11 @@ TEST_F(clEnqueueWriteBufferRectTests, GivenCorrectParametersWhenWritingRectangul TEST_F(clEnqueueWriteBufferRectTests, GivenQueueIncapableWhenWritingRectangularRegionThenInvalidOperationIsReturned) { MockBuffer buffer{}; - buffer.size = 100; char ptr[10]; size_t buffOrigin[] = {0, 0, 0}; size_t hostOrigin[] = {0, 0, 0}; - size_t region[] = {10, 10, 1}; + size_t region[] = {10, 10, 0}; this->disableQueueCapabilities(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL); auto retVal = clEnqueueWriteBufferRect(