@@ -163,20 +163,26 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
163163 threadGroupDimensions->groupCountY ,
164164 threadGroupDimensions->groupCountZ );
165165 }
166- NEO::GraphicsAllocation *eventAlloc = nullptr ;
166+
167167 uint64_t eventAddress = 0 ;
168168 bool isTimestampEvent = false ;
169169 bool l3FlushEnable = false ;
170170 bool isHostSignalScopeEvent = launchParams.isHostSignalScopeEvent ;
171+ Event *compactEvent = nullptr ;
171172 if (event) {
172- eventAlloc = &event->getAllocation (this ->device );
173- commandContainer.addToResidencyContainer (eventAlloc);
174- bool flushRequired = !!event->signalScope &&
175- !launchParams.isKernelSplitOperation ;
176- l3FlushEnable = getDcFlushRequired (flushRequired);
177- isTimestampEvent = event->isUsingContextEndOffset ();
178- eventAddress = event->getPacketAddress (this ->device );
179173 isHostSignalScopeEvent = !!(event->signalScope & ZE_EVENT_SCOPE_FLAG_HOST);
174+ if (compactL3FlushEvent (getDcFlushRequired (!!event->signalScope ))) {
175+ compactEvent = event;
176+ event = nullptr ;
177+ } else {
178+ NEO::GraphicsAllocation *eventAlloc = &event->getAllocation (this ->device );
179+ commandContainer.addToResidencyContainer (eventAlloc);
180+ bool flushRequired = !!event->signalScope &&
181+ !launchParams.isKernelSplitOperation ;
182+ l3FlushEnable = getDcFlushRequired (flushRequired);
183+ isTimestampEvent = event->isUsingContextEndOffset ();
184+ eventAddress = event->getPacketAddress (this ->device );
185+ }
180186 }
181187
182188 bool isKernelUsingSystemAllocation = false ;
@@ -249,6 +255,10 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
249255
250256 std::list<void *> additionalCommands;
251257
258+ if (compactEvent) {
259+ appendEventForProfilingAllWalkers (compactEvent, true , true );
260+ }
261+
252262 NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
253263 eventAddress, // eventAddress
254264 neoDevice, // device
@@ -273,7 +283,9 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
273283 NEO::EncodeDispatchKernel<GfxFamily>::encode (commandContainer, dispatchKernelArgs, getLogicalStateHelper ());
274284 this ->containsStatelessUncachedResource = dispatchKernelArgs.requiresUncachedMocs ;
275285
276- if (event) {
286+ if (compactEvent) {
287+ appendEventForProfilingAllWalkers (compactEvent, false , true );
288+ } else if (event) {
277289 if (partitionCount > 1 ) {
278290 event->setPacketsInUse (partitionCount);
279291 }
@@ -404,7 +416,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelSplit(Kernel
404416 Event *event,
405417 const CmdListKernelLaunchParams &launchParams) {
406418 if (event) {
407- if (this -> pipeControlMultiKernelEventSync && launchParams.isKernelSplitOperation ) {
419+ if (eventSignalPipeControl ( launchParams.isKernelSplitOperation , getDcFlushRequired (!!event-> signalScope )) ) {
408420 event = nullptr ;
409421 } else {
410422 event->increaseKernelCount ();
0 commit comments