@@ -123,12 +123,13 @@ template <uint32_t commandType>
123123void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
124124 size_t numSurfaceForResidency,
125125 bool blocking,
126+ bool blitEnqueue,
126127 const MultiDispatchInfo &multiDispatchInfo,
127128 cl_uint numEventsInWaitList,
128129 const cl_event *eventWaitList,
129130 cl_event *event) {
130- if (multiDispatchInfo.empty () && !isCommandWithoutKernel (commandType)) {
131- enqueueHandler<CL_COMMAND_MARKER>(surfacesForResidency, numSurfaceForResidency, blocking, multiDispatchInfo,
131+ if (multiDispatchInfo.empty () && !isCommandWithoutKernel (commandType) && !blitEnqueue ) {
132+ enqueueHandler<CL_COMMAND_MARKER>(surfacesForResidency, numSurfaceForResidency, blocking, false , multiDispatchInfo,
132133 numEventsInWaitList, eventWaitList, event);
133134 if (event) {
134135 castToObjectOrAbort<Event>(*event)->setCmdType (commandType);
@@ -231,6 +232,9 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
231232 processDispatchForKernels<commandType>(multiDispatchInfo, printfHandler, eventBuilder.getEvent (),
232233 hwTimeStamps, parentKernel, blockQueue, devQueueHw, csrDeps, blockedCommandsData,
233234 previousTimestampPacketNodes, preemption);
235+ } else if (blitEnqueue) {
236+ auto currentTimestampPacketNode = timestampPacketContainer->peekNodes ().at (0 );
237+ TimestampPacketHelper::programSemaphoreWithImplicitDependency<GfxFamily>(commandStream, *currentTimestampPacketNode);
234238 } else if (isCacheFlushCommand (commandType)) {
235239 processDispatchForCacheFlush (surfacesForResidency, numSurfaceForResidency, &commandStream, csrDeps);
236240 } else if (getCommandStreamReceiver ().peekTimestampPacketWriteEnabled ()) {
@@ -253,9 +257,9 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
253257 processDeviceEnqueue (parentKernel, devQueueHw, multiDispatchInfo, hwTimeStamps, preemption, blocking);
254258 }
255259
256- auto submissionRequired = !isCommandWithoutKernel (commandType);
260+ auto kernelSubmissionRequired = !isCommandWithoutKernel (commandType) && !blitEnqueue ;
257261
258- if (submissionRequired ) {
262+ if (kernelSubmissionRequired ) {
259263 completionStamp = enqueueNonBlocked<commandType>(
260264 surfacesForResidency,
261265 numSurfaceForResidency,
@@ -292,7 +296,7 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
292296 devQueueHw->getDebugQueue ());
293297 }
294298 }
295- } else if (isCacheFlushCommand (commandType)) {
299+ } else if (isCacheFlushCommand (commandType) || blitEnqueue ) {
296300 completionStamp = enqueueCommandWithoutKernel (
297301 surfacesForResidency,
298302 numSurfaceForResidency,
0 commit comments