diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index 475087a00f..0345f16f79 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -4947,7 +4947,8 @@ cl_int CL_API_CALL clEnqueueSVMMemcpy(cl_command_queue commandQueue, size, numEventsInWaitList, eventWaitList, - event); + event, + nullptr); } } else { retVal = pCommandQueue->enqueueMarkerWithWaitList(numEventsInWaitList, eventWaitList, event); diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index dc3b887392..ff1cb58212 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -1579,7 +1579,7 @@ cl_int CommandQueue::enqueueStagingBufferMemcpy(cl_bool blockingCopy, void *dstP } memcpy(stagingBuffer, chunkSrc, chunkSize); if (isSingleTransfer) { - return this->enqueueSVMMemcpy(false, chunkDst, stagingBuffer, chunkSize, 0, nullptr, event); + return this->enqueueSVMMemcpy(false, chunkDst, stagingBuffer, chunkSize, 0, nullptr, event, csr); } if (isFirstTransfer && isProfilingEnabled()) { @@ -1590,7 +1590,7 @@ cl_int CommandQueue::enqueueStagingBufferMemcpy(cl_bool blockingCopy, void *dstP if (isLastTransfer && !this->isOOQEnabled()) { outEvent = event; } - auto ret = this->enqueueSVMMemcpy(false, chunkDst, stagingBuffer, chunkSize, 0, nullptr, outEvent); + auto ret = this->enqueueSVMMemcpy(false, chunkDst, stagingBuffer, chunkSize, 0, nullptr, outEvent, csr); return ret; }; diff --git a/opencl/source/command_queue/command_queue.h b/opencl/source/command_queue/command_queue.h index e05af5de14..131479586a 100644 --- a/opencl/source/command_queue/command_queue.h +++ b/opencl/source/command_queue/command_queue.h @@ -122,7 +122,7 @@ class CommandQueue : public BaseObject<_cl_command_queue> { void *userData, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) = 0; virtual cl_int enqueueSVMMemcpy(cl_bool blockingCopy, void *dstPtr, const void *srcPtr, size_t size, cl_uint numEventsInWaitList, - const cl_event *eventWaitList, cl_event *event) = 0; + const cl_event *eventWaitList, cl_event *event, CommandStreamReceiver *csrParam) = 0; virtual cl_int enqueueSVMMemFill(void *svmPtr, const void *pattern, size_t patternSize, size_t size, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) = 0; diff --git a/opencl/source/command_queue/command_queue_hw.h b/opencl/source/command_queue/command_queue_hw.h index 9c9861ffaa..700eb09b91 100644 --- a/opencl/source/command_queue/command_queue_hw.h +++ b/opencl/source/command_queue/command_queue_hw.h @@ -204,7 +204,7 @@ class CommandQueueHw : public CommandQueue { size_t size, cl_uint numEventsInWaitList, const cl_event *eventWaitList, - cl_event *event) override; + cl_event *event, CommandStreamReceiver *csrParam) override; cl_int enqueueSVMMemFill(void *svmPtr, const void *pattern, diff --git a/opencl/source/command_queue/enqueue_svm.h b/opencl/source/command_queue/enqueue_svm.h index 278f37674f..2085d7cbb9 100644 --- a/opencl/source/command_queue/enqueue_svm.h +++ b/opencl/source/command_queue/enqueue_svm.h @@ -316,7 +316,7 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, size_t size, cl_uint numEventsInWaitList, const cl_event *eventWaitList, - cl_event *event) { + cl_event *event, CommandStreamReceiver *csrParam) { if ((dstPtr == nullptr) || (srcPtr == nullptr)) { return CL_INVALID_VALUE; @@ -357,6 +357,9 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, const bool useHeapless = this->getHeaplessModeEnabled(); auto builtInType = EBuiltInOps::adjustBuiltinType(isStatelessRequired, useHeapless); + auto selectCsr = [csrParam, this](CsrSelectionArgs &csrSelectionArgs) -> CommandStreamReceiver & { + return csrParam ? *csrParam : selectCsrForBuiltinOperation(csrSelectionArgs); + }; MultiDispatchInfo dispatchInfo; BuiltinOpParams operationParams; Surface *surfaces[2]; @@ -364,7 +367,7 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, if (copyType == SvmToHost) { CsrSelectionArgs csrSelectionArgs{CL_COMMAND_SVM_MEMCPY, srcAllocation, {}, device->getRootDeviceIndex(), &size}; - CommandStreamReceiver &csr = selectCsrForBuiltinOperation(csrSelectionArgs); + CommandStreamReceiver &csr = selectCsr(csrSelectionArgs); GeneralSurface srcSvmSurf(srcAllocation); HostPtrSurface dstHostPtrSurf(dstGpuPtr, size); @@ -391,7 +394,7 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, dispatchResult = dispatchBcsOrGpgpuEnqueue(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy, csr); } else if (copyType == HostToSvm) { CsrSelectionArgs csrSelectionArgs{CL_COMMAND_SVM_MEMCPY, {}, dstAllocation, device->getRootDeviceIndex(), &size}; - CommandStreamReceiver &csr = selectCsrForBuiltinOperation(csrSelectionArgs); + CommandStreamReceiver &csr = selectCsr(csrSelectionArgs); HostPtrSurface srcHostPtrSurf(const_cast(srcGpuPtr), size, true); GeneralSurface dstSvmSurf(dstAllocation); @@ -416,7 +419,7 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, dispatchResult = dispatchBcsOrGpgpuEnqueue(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy, csr); } else if (copyType == SvmToSvm) { CsrSelectionArgs csrSelectionArgs{CL_COMMAND_SVM_MEMCPY, srcAllocation, dstAllocation, device->getRootDeviceIndex(), &size}; - CommandStreamReceiver &csr = selectCsrForBuiltinOperation(csrSelectionArgs); + CommandStreamReceiver &csr = selectCsr(csrSelectionArgs); GeneralSurface srcSvmSurf(srcAllocation); GeneralSurface dstSvmSurf(dstAllocation); @@ -430,7 +433,7 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, dispatchResult = dispatchBcsOrGpgpuEnqueue(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy, csr); } else { CsrSelectionArgs csrSelectionArgs{CL_COMMAND_SVM_MEMCPY, &size}; - CommandStreamReceiver &csr = selectCsrForBuiltinOperation(csrSelectionArgs); + CommandStreamReceiver &csr = selectCsr(csrSelectionArgs); HostPtrSurface srcHostPtrSurf(const_cast(srcGpuPtr), size); HostPtrSurface dstHostPtrSurf(dstGpuPtr, size); diff --git a/opencl/test/unit_test/api/cl_unified_shared_memory_tests.inl b/opencl/test/unit_test/api/cl_unified_shared_memory_tests.inl index 7b478396ec..e5e457c153 100644 --- a/opencl/test/unit_test/api/cl_unified_shared_memory_tests.inl +++ b/opencl/test/unit_test/api/cl_unified_shared_memory_tests.inl @@ -1017,7 +1017,7 @@ TEST(clUnifiedSharedMemoryTests, givenTwoUnifiedMemoryAllocationsWhenTheyAreCopi size_t size, cl_uint numEventsInWaitList, const cl_event *eventWaitList, - cl_event *event) override { + cl_event *event, CommandStreamReceiver *csrParam) override { EXPECT_EQ(0u, blockingCopy); EXPECT_EQ(expectedDstPtr, dstPtr); EXPECT_EQ(expectedSrcPtr, srcPtr); diff --git a/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp index 8937387a53..62b6e2b953 100644 --- a/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp @@ -111,7 +111,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -188,7 +189,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -270,7 +272,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -339,7 +342,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenCommandQueueWhenEnqueueSVMMemcpyIsCalledThe 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -363,7 +367,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenCommandQueueWhenEnqueueSVMMemcpyIsCalledThe 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_TRUE(mockCmdQ->notifyEnqueueSVMMemcpyCalled); @@ -391,7 +396,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenCsrSelectionArgsCalledWithRootDeviceIndexGr 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_TRUE(mockCmdQ->notifyEnqueueSVMMemcpyCalled); @@ -419,7 +425,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenConstHostMemoryAsSourceWhenEnqueueSVMMemcpy sizeof(double), // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -472,7 +479,8 @@ HWTEST_F(EnqueueSvmMemCopyHwTest, givenEnqueueSVMMemCopyWhenUsingCopyBufferToBuf static_cast(bigSize), // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); } @@ -490,7 +498,8 @@ HWTEST_F(EnqueueSvmMemCopyHwTest, givenEnqueueSVMMemCopyWhenUsingCopyBufferToBuf static_cast(smallSize), // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); } @@ -528,7 +537,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSvmMemcpyWhenSvmZeroCopyThenBuiltinK 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -605,7 +615,8 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSvmMemcpyWhenSvmGpuThenBuiltinKernel 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_event *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); diff --git a/opencl/test/unit_test/command_queue/enqueue_svm_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_svm_tests.cpp index 28e783b4c6..fce39a8fc3 100644 --- a/opencl/test/unit_test/command_queue/enqueue_svm_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_svm_tests.cpp @@ -388,7 +388,8 @@ TEST_F(EnqueueSvmTest, GivenNullDstPtrWhenCopyingMemoryThenInvalidVaueErrorIsRet 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_INVALID_VALUE, retVal); context->getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -404,7 +405,8 @@ TEST_F(EnqueueSvmTest, GivenNullSrcPtrWhenCopyingMemoryThenInvalidVaueErrorIsRet 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_INVALID_VALUE, retVal); } @@ -421,7 +423,8 @@ TEST_F(EnqueueSvmTest, givenSrcHostPtrAndEventWhenEnqueueSVMMemcpyThenEventComma 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - &event // cL_event *event + &event, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); constexpr cl_command_type expectedCmd = CL_COMMAND_SVM_MEMCPY; @@ -441,7 +444,8 @@ TEST_F(EnqueueSvmTest, givenSrcHostPtrAndSizeZeroWhenEnqueueSVMMemcpyThenReturnS 0, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); } @@ -458,7 +462,8 @@ HWTEST_F(EnqueueSvmTest, givenSrcHostPtrWhenEnqueueSVMMemcpyThenEnqueuWriteBuffe 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(myCmdQ.lastCommandType, static_cast(CL_COMMAND_WRITE_BUFFER)); @@ -489,7 +494,8 @@ HWTEST_F(EnqueueSvmTest, givenDstHostPtrWhenEnqueueSVMMemcpyThenEnqueuReadBuffer 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(myCmdQ.lastCommandType, static_cast(CL_COMMAND_READ_BUFFER)); @@ -520,7 +526,8 @@ TEST_F(EnqueueSvmTest, givenDstHostPtrAndEventWhenEnqueueSVMMemcpyThenEventComma 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - &event // cL_event *event + &event, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); constexpr cl_command_type expectedCmd = CL_COMMAND_SVM_MEMCPY; @@ -540,7 +547,8 @@ TEST_F(EnqueueSvmTest, givenDstHostPtrAndSizeZeroWhenEnqueueSVMMemcpyThenReturnS 0, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); } @@ -558,7 +566,8 @@ HWTEST_F(EnqueueSvmTest, givenDstHostPtrAndSrcHostPtrWhenEnqueueNonBlockingSVMMe 3, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(myCmdQ.lastCommandType, static_cast(CL_COMMAND_WRITE_BUFFER)); @@ -591,7 +600,8 @@ HWTEST_F(EnqueueSvmTest, givenDstHostPtrAndSrcHostPtrWhenEnqueueBlockingSVMMemcp 3, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(myCmdQ.lastCommandType, static_cast(CL_COMMAND_WRITE_BUFFER)); @@ -618,7 +628,8 @@ TEST_F(EnqueueSvmTest, givenDstHostPtrAndSrcHostPtrAndSizeZeroWhenEnqueueSVMMemc 0, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); } @@ -634,7 +645,8 @@ HWTEST_F(EnqueueSvmTest, givenSvmToSvmCopyTypeWhenEnqueueNonBlockingSVMMemcpyThe 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(myCmdQ.lastCommandType, static_cast(CL_COMMAND_SVM_MEMCPY)); @@ -663,7 +675,8 @@ TEST_F(EnqueueSvmTest, givenSvmToSvmCopyTypeWhenEnqueueBlockingSVMMemcpyThenSucc 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); context->getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -681,7 +694,8 @@ TEST_F(EnqueueSvmTest, GivenValidParamsWhenCopyingMemoryWithBlockingThenSuccessi 256, // size_t size 1, // cl_uint num_events_in_wait_list eventWaitList, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); context->getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -700,7 +714,8 @@ TEST_F(EnqueueSvmTest, GivenCoherencyWhenCopyingMemoryThenSuccessIsReturned) { 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); context->getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -720,7 +735,8 @@ TEST_F(EnqueueSvmTest, GivenCoherencyWhenCopyingMemoryWithBlockingThenSuccessIsR 256, // size_t size 1, // cl_uint num_events_in_wait_list eventWaitList, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); context->getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -738,7 +754,8 @@ HWTEST_F(EnqueueSvmTest, givenUnalignedAddressWhenEnqueueMemcpyThenDispatchInfoH 0, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); @@ -2152,7 +2169,8 @@ HWTEST_F(EnqueueSvmTest, GivenDstHostPtrWhenHostPtrAllocationCreationFailsThenRe 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_OUT_OF_RESOURCES, retVal); cmdQ.gpgpuEngine->commandStreamReceiver = oldCommandStreamReceiver; @@ -2173,7 +2191,8 @@ HWTEST_F(EnqueueSvmTest, GivenSrcHostPtrAndSizeZeroWhenHostPtrAllocationCreation 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_OUT_OF_RESOURCES, retVal); cmdQ.gpgpuEngine->commandStreamReceiver = oldCommandStreamReceiver; @@ -2195,7 +2214,8 @@ HWTEST_F(EnqueueSvmTest, givenDstHostPtrAndSrcHostPtrWhenHostPtrAllocationCreati 256, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_OUT_OF_RESOURCES, retVal); cmdQ.gpgpuEngine->commandStreamReceiver = oldCommandStreamReceiver; @@ -2211,7 +2231,7 @@ TEST_F(EnqueueSvmTest, givenPageFaultManagerWhenEnqueueMemcpyThenAllocIsDecommit mockMemoryManager->getPageFaultManager()->insertAllocation(ptrSVM, 256, context->getSVMAllocsManager(), context->getSpecialQueue(pDevice->getRootDeviceIndex()), {}); EXPECT_EQ(static_cast(mockMemoryManager->getPageFaultManager())->transferToCpuCalled, 0); - this->pCmdQ->enqueueSVMMemcpy(false, ptrSVM, srcSvm, 256, 0, nullptr, nullptr); + this->pCmdQ->enqueueSVMMemcpy(false, ptrSVM, srcSvm, 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(static_cast(mockMemoryManager->getPageFaultManager())->allowMemoryAccessCalled, 0); EXPECT_EQ(static_cast(mockMemoryManager->getPageFaultManager())->protectMemoryCalled, 2); @@ -2257,7 +2277,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromMappedPtrToSvmAllocWhenCallingSvmMemcpyThe size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(0u, csr.createAllocationForHostSurfaceCalled); @@ -2272,7 +2293,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromMappedPtrToSvmAllocWhenCallingSvmMemcpyThe size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(1u, csr.createAllocationForHostSurfaceCalled); @@ -2294,7 +2316,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromSvmAllocToMappedPtrWhenCallingSvmMemcpyThe size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(0u, csr.createAllocationForHostSurfaceCalled); @@ -2309,7 +2332,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromSvmAllocToMappedPtrWhenCallingSvmMemcpyThe size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(1u, csr.createAllocationForHostSurfaceCalled); @@ -2333,7 +2357,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromMappedPtrToMappedPtrWhenCallingSvmMemcpyTh size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(0u, csr.createAllocationForHostSurfaceCalled); @@ -2350,7 +2375,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromMappedPtrToMappedPtrWhenCallingSvmMemcpyTh size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(1u, csr.createAllocationForHostSurfaceCalled); @@ -2367,7 +2393,8 @@ HWTEST_F(EnqueueSvmTest, givenCopyFromMappedPtrToMappedPtrWhenCallingSvmMemcpyTh size, // size_t size 0, // cl_uint num_events_in_wait_list nullptr, // cl_evebt *event_wait_list - nullptr // cL_event *event + nullptr, // cL_event *event + nullptr // CommandStreamReceiver* csrParam ); EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(2u, csr.createAllocationForHostSurfaceCalled); diff --git a/opencl/test/unit_test/command_queue/zero_size_enqueue_tests.cpp b/opencl/test/unit_test/command_queue/zero_size_enqueue_tests.cpp index 62a75e137b..a127ceebe2 100644 --- a/opencl/test/unit_test/command_queue/zero_size_enqueue_tests.cpp +++ b/opencl/test/unit_test/command_queue/zero_size_enqueue_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -766,7 +766,7 @@ HWTEST_F(ZeroSizeEnqueueHandlerTest, GivenZeroSizeEnqueueIsDetectedWhenCopyingSv void *pSrcSVM = context.getSVMAllocsManager()->createSVMAlloc(256, {}, context.getRootDeviceIndices(), context.getDeviceBitfields()); void *pDstSVM = context.getSVMAllocsManager()->createSVMAlloc(256, {}, context.getRootDeviceIndices(), context.getDeviceBitfields()); size_t zeroSize = 0; - mockCmdQ->enqueueSVMMemcpy(false, pSrcSVM, pDstSVM, zeroSize, 0, nullptr, nullptr); + mockCmdQ->enqueueSVMMemcpy(false, pSrcSVM, pDstSVM, zeroSize, 0, nullptr, nullptr, nullptr); EXPECT_EQ(static_cast(CL_COMMAND_MARKER), mockCmdQ->lastCommandType); context.getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -781,7 +781,7 @@ HWTEST_F(ZeroSizeEnqueueHandlerTest, GivenZeroSizeEnqueueIsDetectedWhenCopyingSv void *pSrcSVM = context.getSVMAllocsManager()->createSVMAlloc(256, {}, context.getRootDeviceIndices(), context.getDeviceBitfields()); void *pDstSVM = context.getSVMAllocsManager()->createSVMAlloc(256, {}, context.getRootDeviceIndices(), context.getDeviceBitfields()); size_t zeroSize = 0; - mockCmdQ->enqueueSVMMemcpy(false, pSrcSVM, pDstSVM, zeroSize, 0, nullptr, &event); + mockCmdQ->enqueueSVMMemcpy(false, pSrcSVM, pDstSVM, zeroSize, 0, nullptr, &event, nullptr); EXPECT_EQ(static_cast(CL_COMMAND_MARKER), mockCmdQ->lastCommandType); auto pEvent = (Event *)event; diff --git a/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp b/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp index 6c90c64617..ce543163ba 100644 --- a/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp @@ -244,7 +244,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenEnqueueBufferOperationIs commandQueue->enqueueCopyBufferRect(bufferForBlt0.get(), bufferForBlt1.get(), bufferOrigin, hostOrigin, region, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, 0, nullptr, nullptr); - commandQueue->enqueueSVMMemcpy(CL_TRUE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr); + commandQueue->enqueueSVMMemcpy(CL_TRUE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr, nullptr); debugManager.flags.EnableBlitterForEnqueueOperations.set(-1); mockCmdQueue->bcsEngines[bcsIndex] = bcsEngine; @@ -263,7 +263,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenEnqueueBufferOperationIs commandQueue->enqueueCopyBufferRect(bufferForBlt0.get(), bufferForBlt1.get(), bufferOrigin, hostOrigin, region, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, 0, nullptr, nullptr); - commandQueue->enqueueSVMMemcpy(CL_TRUE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr); + commandQueue->enqueueSVMMemcpy(CL_TRUE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr, nullptr); EXPECT_EQ(7u, bcsCsr->blitBufferCalled); @@ -290,7 +290,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenEnqueueBufferOperationIs MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, 0, nullptr, nullptr); EXPECT_EQ(13u, bcsCsr->blitBufferCalled); - commandQueue->enqueueSVMMemcpy(CL_TRUE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr); + commandQueue->enqueueSVMMemcpy(CL_TRUE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr, nullptr); EXPECT_EQ(14u, bcsCsr->blitBufferCalled); } @@ -352,7 +352,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenQueueIsBlockedThenDispat commandQueue->enqueueCopyBufferRect(bufferForBlt0.get(), bufferForBlt1.get(), bufferOrigin, hostOrigin, region, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, 0, nullptr, nullptr); - commandQueue->enqueueSVMMemcpy(CL_FALSE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr); + commandQueue->enqueueSVMMemcpy(CL_FALSE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr, nullptr); EXPECT_EQ(0u, bcsCsr->blitBufferCalled); @@ -378,7 +378,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenQueueIsBlockedThenDispat MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, MemoryConstants::cacheLineSize, 0, nullptr, nullptr); EXPECT_EQ(13u, bcsCsr->blitBufferCalled); - commandQueue->enqueueSVMMemcpy(CL_FALSE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr); + commandQueue->enqueueSVMMemcpy(CL_FALSE, bufferForBlt0.get(), bufferForBlt1.get(), 1, 0, nullptr, nullptr, nullptr); } HWTEST_TEMPLATED_F(BcsBufferTests, givenBuffersWhenCopyBufferCalledThenUseBcs) { @@ -440,7 +440,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenDstHostPtrWhenEnqueueSVMMemcpyThenEnqueu auto pDstSVM = std::make_unique(1); auto pSrcSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(1, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); - cmdQ->enqueueSVMMemcpy(true, pDstSVM.get(), pSrcSVM, 1, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(true, pDstSVM.get(), pSrcSVM, 1, 0, nullptr, nullptr, nullptr); HardwareParse hwParser; hwParser.parseCommands(bcsCsr->getCS(0)); @@ -463,7 +463,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenSrcHostPtrWhenEnqueueSVMMemcpyThenEnqueu auto pSrcSVM = std::make_unique(1); auto pDstSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(1, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); - cmdQ->enqueueSVMMemcpy(true, pDstSVM, pSrcSVM.get(), 1, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(true, pDstSVM, pSrcSVM.get(), 1, 0, nullptr, nullptr, nullptr); HardwareParse hwParser; hwParser.parseCommands(bcsCsr->getCS(0)); @@ -1239,7 +1239,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBlockingSVMMemcpyAndEnqueuReadBufferIsCa auto pDstSVM = std::make_unique(256); auto pSrcSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(256, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); - cmdQ->enqueueSVMMemcpy(false, pDstSVM.get(), pSrcSVM, 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(false, pDstSVM.get(), pSrcSVM, 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(0u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); EXPECT_TRUE(gpgpuCsr.getTemporaryAllocations().peekIsEmpty()); EXPECT_FALSE(myMockCsr->getTemporaryAllocations().peekIsEmpty()); @@ -1249,7 +1249,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBlockingSVMMemcpyAndEnqueuReadBufferIsCa EXPECT_EQ(0u, tempAlloc->countSuccessors()); EXPECT_EQ(pDstSVM.get(), reinterpret_cast(tempAlloc->getGpuAddress())); - cmdQ->enqueueSVMMemcpy(true, pDstSVM.get(), pSrcSVM, 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(true, pDstSVM.get(), pSrcSVM, 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(1u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); bcsMockContext->getSVMAllocsManager()->freeSVMAlloc(pSrcSVM); @@ -1274,7 +1274,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenSrcHostPtrBlockingEnqueueSVMMemcpyAndEnq auto pSrcSVM = std::make_unique(256); auto pDstSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(256, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); - cmdQ->enqueueSVMMemcpy(false, pDstSVM, pSrcSVM.get(), 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(false, pDstSVM, pSrcSVM.get(), 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(0u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); EXPECT_TRUE(gpgpuCsr.getTemporaryAllocations().peekIsEmpty()); EXPECT_FALSE(myMockCsr->getTemporaryAllocations().peekIsEmpty()); @@ -1284,7 +1284,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenSrcHostPtrBlockingEnqueueSVMMemcpyAndEnq EXPECT_EQ(0u, tempAlloc->countSuccessors()); EXPECT_EQ(pSrcSVM.get(), reinterpret_cast(tempAlloc->getGpuAddress())); - cmdQ->enqueueSVMMemcpy(true, pDstSVM, pSrcSVM.get(), 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(true, pDstSVM, pSrcSVM.get(), 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(1u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); bcsMockContext->getSVMAllocsManager()->freeSVMAlloc(pDstSVM); @@ -1309,7 +1309,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenDstHostPtrAndSrcHostPtrBlockingEnqueueSV auto pSrcSVM = std::make_unique(256); auto pDstSVM = std::make_unique(256); - cmdQ->enqueueSVMMemcpy(false, pDstSVM.get(), pSrcSVM.get(), 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(false, pDstSVM.get(), pSrcSVM.get(), 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(0u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); EXPECT_TRUE(gpgpuCsr.getTemporaryAllocations().peekIsEmpty()); EXPECT_FALSE(myMockCsr->getTemporaryAllocations().peekIsEmpty()); @@ -1320,7 +1320,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenDstHostPtrAndSrcHostPtrBlockingEnqueueSV EXPECT_EQ(pSrcSVM.get(), reinterpret_cast(tempAlloc->getGpuAddress())); EXPECT_EQ(pDstSVM.get(), reinterpret_cast(tempAlloc->next->getGpuAddress())); - cmdQ->enqueueSVMMemcpy(true, pDstSVM.get(), pSrcSVM.get(), 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(true, pDstSVM.get(), pSrcSVM.get(), 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(1u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); } @@ -1333,7 +1333,7 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenSvmToSvmCopyWhenEnqueueSVMMemcpyThenSvmM auto pDstSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(256, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); auto pSrcSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(256, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); - cmdQ->enqueueSVMMemcpy(false, pDstSVM, pSrcSVM, 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(false, pDstSVM, pSrcSVM, 256, 0, nullptr, nullptr, nullptr); HardwareParse hwParser; hwParser.parseCommands(bcsCsr->getCS(0)); @@ -1367,12 +1367,12 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenSvmToSvmCopyTypeWhenEnqueueNonBlockingSV auto pDstSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(256, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); auto pSrcSVM = bcsMockContext->getSVMAllocsManager()->createSVMAlloc(256, {}, bcsMockContext->getRootDeviceIndices(), bcsMockContext->getDeviceBitfields()); - cmdQ->enqueueSVMMemcpy(false, pDstSVM, pSrcSVM, 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(false, pDstSVM, pSrcSVM, 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(0u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); EXPECT_TRUE(gpgpuCsr.getTemporaryAllocations().peekIsEmpty()); EXPECT_TRUE(myMockCsr->getTemporaryAllocations().peekIsEmpty()); - cmdQ->enqueueSVMMemcpy(true, pDstSVM, pSrcSVM, 256, 0, nullptr, nullptr); + cmdQ->enqueueSVMMemcpy(true, pDstSVM, pSrcSVM, 256, 0, nullptr, nullptr, nullptr); EXPECT_EQ(1u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled); bcsMockContext->getSVMAllocsManager()->freeSVMAlloc(pDstSVM); diff --git a/opencl/test/unit_test/mocks/mock_command_queue.h b/opencl/test/unit_test/mocks/mock_command_queue.h index 5d392751b7..d0fe522eae 100644 --- a/opencl/test/unit_test/mocks/mock_command_queue.h +++ b/opencl/test/unit_test/mocks/mock_command_queue.h @@ -159,7 +159,7 @@ class MockCommandQueue : public CommandQueue { cl_event *event) override { return CL_SUCCESS; } cl_int enqueueSVMMemcpy(cl_bool blockingCopy, void *dstPtr, const void *srcPtr, size_t size, - cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) override { return CL_SUCCESS; } + cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, CommandStreamReceiver *csrParam) override { return CL_SUCCESS; } cl_int enqueueSVMMemFill(void *svmPtr, const void *pattern, size_t patternSize, size_t size, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) override { return CL_SUCCESS; } @@ -471,9 +471,9 @@ class MockCommandQueueHw : public CommandQueueHw { } cl_int enqueueSVMMemcpy(cl_bool blockingCopy, void *dstPtr, const void *srcPtr, size_t size, - cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) override { + cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, CommandStreamReceiver *csrParam) override { enqueueSVMMemcpyCalledCount++; - return BaseClass::enqueueSVMMemcpy(blockingCopy, dstPtr, srcPtr, size, numEventsInWaitList, eventWaitList, event); + return BaseClass::enqueueSVMMemcpy(blockingCopy, dstPtr, srcPtr, size, numEventsInWaitList, eventWaitList, event, csrParam); } cl_int finish() override {