mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 15:53:45 +08:00
fix: improve CB event completion writes
Related-To: NEO-11925 Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
dd2e843599
commit
f02b518674
@@ -3867,7 +3867,7 @@ void CommandListCoreFamily<gfxCoreFamily>::dispatchEventPostSyncOperation(Event
|
||||
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void CommandListCoreFamily<gfxCoreFamily>::dispatchEventRemainingPacketsPostSyncOperation(Event *event, bool copyOperation) {
|
||||
if (this->signalAllEventPackets && event->getPacketsInUse() < event->getMaxPacketsCount()) {
|
||||
if (this->signalAllEventPackets && !event->isCounterBased() && event->getPacketsInUse() < event->getMaxPacketsCount()) {
|
||||
uint32_t packets = event->getMaxPacketsCount() - event->getPacketsInUse();
|
||||
CmdListEventOperation remainingPacketsOperation = estimateEventPostSync(event, packets);
|
||||
|
||||
|
||||
@@ -295,6 +295,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
|
||||
|
||||
if (this->isInOrderExecutionEnabled() && !launchParams.isKernelSplitOperation) {
|
||||
NEO::PipeControlArgs args;
|
||||
args.dcFlushEnable = getDcFlushRequired(true);
|
||||
|
||||
NEO::MemorySynchronizationCommands<GfxFamily>::addSingleBarrier(*commandContainer.getCommandStream(), args);
|
||||
appendSignalInOrderDependencyCounter(event, false);
|
||||
|
||||
@@ -199,6 +199,7 @@ struct WhiteBox<L0::CommandListCoreFamilyImmediate<gfxCoreFamily>>
|
||||
using BaseClass::dcFlushSupport;
|
||||
using BaseClass::device;
|
||||
using BaseClass::disablePatching;
|
||||
using BaseClass::dispatchEventRemainingPacketsPostSyncOperation;
|
||||
using BaseClass::doubleSbaWa;
|
||||
using BaseClass::enablePatching;
|
||||
using BaseClass::engineGroupType;
|
||||
|
||||
@@ -2621,6 +2621,23 @@ HWTEST2_F(InOrderCmdListTests, givenMultipleAllocationsForWriteWhenAskingForNonW
|
||||
EXPECT_FALSE(immCmdList2->isInOrderNonWalkerSignalingRequired(nullptr));
|
||||
}
|
||||
|
||||
HWTEST2_F(InOrderCmdListTests, givenSignalAllPacketsSetWhenProgrammingRemainingPacketsThenSkip, MatchAny) {
|
||||
auto immCmdList = createImmCmdList<gfxCoreFamily>();
|
||||
immCmdList->signalAllEventPackets = true;
|
||||
|
||||
auto eventPool = createEvents<FamilyType>(1, false);
|
||||
events[0]->maxPacketCount = 2;
|
||||
events[0]->setPacketsInUse(1);
|
||||
|
||||
auto cmdStream = immCmdList->getCmdContainer().getCommandStream();
|
||||
auto offset = cmdStream->getUsed();
|
||||
|
||||
immCmdList->dispatchEventRemainingPacketsPostSyncOperation(events[0].get(), false);
|
||||
immCmdList->dispatchEventRemainingPacketsPostSyncOperation(events[0].get(), true);
|
||||
|
||||
EXPECT_EQ(offset, cmdStream->getUsed());
|
||||
}
|
||||
|
||||
HWTEST2_F(InOrderCmdListTests, givenInOrderModeWhenProgrammingWalkerThenProgramPipeControlWithSignalAllocation, IsGen12LP) {
|
||||
using WALKER = typename FamilyType::DefaultWalkerType;
|
||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||
@@ -2646,6 +2663,8 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWhenProgrammingWalkerThenProgramP
|
||||
auto pcCmd = genCmdCast<PIPE_CONTROL *>(*pcItor);
|
||||
ASSERT_NE(nullptr, pcCmd);
|
||||
|
||||
EXPECT_EQ(immCmdList->getDcFlushRequired(true), pcCmd->getDcFlushEnable());
|
||||
|
||||
EXPECT_EQ(PIPE_CONTROL::POST_SYNC_OPERATION::POST_SYNC_OPERATION_NO_WRITE, pcCmd->getPostSyncOperation());
|
||||
|
||||
auto sdiItor = find<MI_STORE_DATA_IMM *>(pcItor, cmdList.end());
|
||||
|
||||
Reference in New Issue
Block a user