diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 55c441089b..e57faba43f 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -195,7 +195,7 @@ void CommandListCoreFamily::handleInOrderDependencyCounter(Event this->commandContainer.addToResidencyContainer(inOrderExecInfo->getHostCounterAllocation()); if (signalEvent) { - if (signalEvent->isCounterBased() || nonWalkerInOrderCmdsChaining || isImmediateType()) { + if (signalEvent->isCounterBased() || nonWalkerInOrderCmdsChaining || (isImmediateType() && this->duplicatedInOrderCounterStorageEnabled)) { signalEvent->updateInOrderExecState(inOrderExecInfo, inOrderExecInfo->getCounterValue(), inOrderExecInfo->getAllocationOffset()); } else { signalEvent->unsetInOrderExecInfo(); diff --git a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h index 536d492b13..5cb7cd54fa 100644 --- a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h +++ b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h @@ -201,6 +201,7 @@ struct WhiteBox> using BaseClass::disablePatching; using BaseClass::dispatchEventRemainingPacketsPostSyncOperation; using BaseClass::doubleSbaWa; + using BaseClass::duplicatedInOrderCounterStorageEnabled; using BaseClass::enablePatching; using BaseClass::engineGroupType; using BaseClass::eventSignalPipeControl; diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp index be9a90eecf..105e6096e1 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp @@ -885,8 +885,19 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWheUsingRegularEventAndImmediateC events[0]->makeCounterBasedImplicitlyDisabled(eventPool->getAllocation()); cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); EXPECT_FALSE(events[0]->isCounterBased()); - EXPECT_EQ(events[0]->inOrderExecSignalValue, 1u); - EXPECT_NE(events[0]->inOrderExecInfo.get(), nullptr); + + if (cmdList->isInOrderNonWalkerSignalingRequired(events[0].get()) || cmdList->duplicatedInOrderCounterStorageEnabled) { + EXPECT_EQ(events[0]->inOrderExecSignalValue, 1u); + EXPECT_NE(events[0]->inOrderExecInfo.get(), nullptr); + } else { + EXPECT_EQ(events[0]->inOrderExecInfo.get(), nullptr); + } + + auto tsEventPool = createEvents(1, true); + events[1]->makeCounterBasedImplicitlyDisabled(eventPool->getAllocation()); + + cmdList->appendBarrier(events[1]->toHandle(), 0, nullptr, false); + EXPECT_EQ(events[1]->inOrderExecInfo.get() != nullptr, cmdList->duplicatedInOrderCounterStorageEnabled); } HWTEST2_F(InOrderCmdListTests, givenRegularEventWithInOrderExecInfoWhenReusedOnRegularCmdListThenUnsetInOrderData, MatchAny) {