@@ -411,3 +411,42 @@ HWTEST_F(BcsTests, givenBufferWhenBlitCalledThenFlushCommandBuffer) {
411411
412412 EXPECT_EQ (newTaskCount, csr.latestWaitForCompletionWithTimeoutTaskCount .load ());
413413}
414+
415+ HWTEST_F (BcsTests, whenBlitFromHostPtrCalledThenCallWaitWithKmdFallback) {
416+ class MyMockCsr : public UltCommandStreamReceiver <FamilyType> {
417+ public:
418+ using UltCommandStreamReceiver<FamilyType>::UltCommandStreamReceiver;
419+
420+ void waitForTaskCountWithKmdNotifyFallback (uint32_t taskCountToWait, FlushStamp flushStampToWait,
421+ bool useQuickKmdSleep, bool forcePowerSavingMode) override {
422+ waitForTaskCountWithKmdNotifyFallbackCalled++;
423+ taskCountToWaitPassed = taskCountToWait;
424+ flushStampToWaitPassed = flushStampToWait;
425+ useQuickKmdSleepPassed = useQuickKmdSleep;
426+ forcePowerSavingModePassed = forcePowerSavingMode;
427+ }
428+
429+ uint32_t taskCountToWaitPassed = 0 ;
430+ FlushStamp flushStampToWaitPassed = 0 ;
431+ bool useQuickKmdSleepPassed = false ;
432+ bool forcePowerSavingModePassed = false ;
433+ uint32_t waitForTaskCountWithKmdNotifyFallbackCalled = 0 ;
434+ };
435+
436+ auto myMockCsr = std::make_unique<::testing::NiceMock<MyMockCsr>>(*pDevice->getExecutionEnvironment ());
437+ auto &bcsOsContext = pDevice->getUltCommandStreamReceiver <FamilyType>().getOsContext ();
438+ myMockCsr->initializeTagAllocation ();
439+ myMockCsr->setupContext (bcsOsContext);
440+
441+ cl_int retVal = CL_SUCCESS;
442+ auto buffer = clUniquePtr<Buffer>(Buffer::create (context.get (), CL_MEM_READ_WRITE, 1 , nullptr , retVal));
443+ void *hostPtr = reinterpret_cast <void *>(0x12340000 );
444+
445+ myMockCsr->blitFromHostPtr (*buffer, hostPtr, 1 );
446+
447+ EXPECT_EQ (1u , myMockCsr->waitForTaskCountWithKmdNotifyFallbackCalled );
448+ EXPECT_EQ (myMockCsr->taskCount , myMockCsr->taskCountToWaitPassed );
449+ EXPECT_EQ (myMockCsr->flushStamp ->peekStamp (), myMockCsr->flushStampToWaitPassed );
450+ EXPECT_FALSE (myMockCsr->useQuickKmdSleepPassed );
451+ EXPECT_FALSE (myMockCsr->forcePowerSavingModePassed );
452+ }
0 commit comments