@@ -1405,16 +1405,25 @@ ur_queue_handle_t_::executeCommandList(ur_command_list_ptr_t CommandList,
1405
1405
// If we don't have host visible proxy then signal event if needed.
1406
1406
this ->signalEventFromCmdListIfLastEventDiscarded (CommandList);
1407
1407
}
1408
- // Append Signalling of the inner events at the end of the batch
1409
- for (auto &Event : CommandList->second .EventList ) {
1410
- if (Event->IsInnerBatchedEvent ) {
1411
- if (AppendBarrierNeeded) {
1412
- ZE2UR_CALL (zeCommandListAppendBarrier,
1413
- (CommandList->first , nullptr , 0 , nullptr ));
1414
- AppendBarrierNeeded = false ;
1408
+ // Append Signalling of the inner events at the end of the batch if this is
1409
+ // an integrated gpu and out of order signal events are not allowed.
1410
+ if (!UrL0OutOfOrderIntegratedSignalEvent && this ->Device ->isIntegrated ()) {
1411
+ for (auto &Event : CommandList->second .EventList ) {
1412
+ // If the events scope does not apply a barrier already above, then we
1413
+ // need to apply a barrier to wait on all the previous commands without
1414
+ // signal events to complete before we can signal the batched events as
1415
+ // completed. This functionality is only used if this command list is
1416
+ // out of order and there are events created that were not used as
1417
+ // signal events.
1418
+ if (Event->IsInnerBatchedEvent ) {
1419
+ if (AppendBarrierNeeded) {
1420
+ ZE2UR_CALL (zeCommandListAppendBarrier,
1421
+ (CommandList->first , nullptr , 0 , nullptr ));
1422
+ AppendBarrierNeeded = false ;
1423
+ }
1424
+ ZE2UR_CALL (zeCommandListAppendSignalEvent,
1425
+ (CommandList->first , Event->ZeEvent ));
1415
1426
}
1416
- ZE2UR_CALL (zeCommandListAppendSignalEvent,
1417
- (CommandList->first , Event->ZeEvent ));
1418
1427
}
1419
1428
}
1420
1429
@@ -1771,11 +1780,10 @@ ur_result_t setSignalEvent(ur_queue_handle_t Queue, bool UseCopyEngine,
1771
1780
uint32_t NumEventsInWaitList,
1772
1781
const ur_event_handle_t *EventWaitList,
1773
1782
ze_command_queue_handle_t ZeQueue) {
1774
- if (Queue->Device ->isIntegrated () &&
1783
+ if (!UrL0OutOfOrderIntegratedSignalEvent && Queue->Device ->isIntegrated () &&
1775
1784
eventCanBeBatched (Queue, UseCopyEngine, NumEventsInWaitList,
1776
1785
EventWaitList) &&
1777
- !Queue->isInOrderQueue () && !Queue->UsingImmCmdLists &&
1778
- !UrL0OutOfOrderIntegratedSignalEvent) {
1786
+ !Queue->isInOrderQueue () && !Queue->UsingImmCmdLists ) {
1779
1787
ZeEvent = nullptr ;
1780
1788
(*Event)->IsInnerBatchedEvent = true ;
1781
1789
(*Event)->ZeBatchedQueue = ZeQueue;
0 commit comments