@@ -590,7 +590,8 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendLaunchKernel(
590590
591591 if (isInOrderExecutionEnabled ()) {
592592 // Skip only in base appendLaunchKernel(). Handle remaining operations here.
593- handleInOrderNonWalkerSignaling (event, stallingCmdsForRelaxedOrdering, relaxedOrderingDispatch, ret);
593+ bool hasRelaxedOrdering = handleRelaxedOrderingSignaling (event, stallingCmdsForRelaxedOrdering, relaxedOrderingDispatch, ret);
594+ handleInOrderNonWalkerSignaling (event, hasRelaxedOrdering);
594595 }
595596 CommandListCoreFamily<gfxCoreFamily>::handleInOrderDependencyCounter (event, true , false );
596597 }
@@ -599,26 +600,8 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendLaunchKernel(
599600}
600601
601602template <GFXCORE_FAMILY gfxCoreFamily>
602- void CommandListCoreFamilyImmediate<gfxCoreFamily>::handleInOrderNonWalkerSignaling(Event *event, bool &hasStallingCmds, bool &relaxedOrderingDispatch, ze_result_t &result) {
603- bool nonWalkerSignalingHasRelaxedOrdering = false ;
604-
605- if (NEO::debugManager.flags .EnableInOrderRelaxedOrderingForEventsChaining .get () != 0 ) {
606- auto counterValueBeforeSecondCheck = this ->relaxedOrderingCounter ;
607- nonWalkerSignalingHasRelaxedOrdering = isRelaxedOrderingDispatchAllowed (1 , false );
608- this ->relaxedOrderingCounter = counterValueBeforeSecondCheck; // dont increment twice
609- }
610-
611- if (nonWalkerSignalingHasRelaxedOrdering) {
612- if (event && event->isCounterBased ()) {
613- event->hostEventSetValue (Event::STATE_INITIAL);
614- }
615- result = flushImmediate (result, true , hasStallingCmds, relaxedOrderingDispatch, NEO::AppendOperations::kernel, false , nullptr , false , nullptr , nullptr );
616- NEO::RelaxedOrderingHelper::encodeRegistersBeforeDependencyCheckers<GfxFamily>(*this ->commandContainer .getCommandStream (), isCopyOnly (false ));
617- relaxedOrderingDispatch = true ;
618- hasStallingCmds = hasStallingCmdsForRelaxedOrdering (1 , relaxedOrderingDispatch);
619- }
620-
621- CommandListCoreFamily<gfxCoreFamily>::appendWaitOnSingleEvent (event, nullptr , nonWalkerSignalingHasRelaxedOrdering, false , CommandToPatch::Invalid);
603+ void CommandListCoreFamilyImmediate<gfxCoreFamily>::handleInOrderNonWalkerSignaling(Event *event, bool hasRelaxedOrdering) {
604+ CommandListCoreFamily<gfxCoreFamily>::appendWaitOnSingleEvent (event, nullptr , hasRelaxedOrdering, false , CommandToPatch::Invalid);
622605 CommandListCoreFamily<gfxCoreFamily>::appendSignalInOrderDependencyCounter (event, false , false , false , false );
623606}
624607
@@ -1429,9 +1412,9 @@ bool CommandListCoreFamilyImmediate<gfxCoreFamily>::preferCopyThroughLockedPtr(C
14291412}
14301413
14311414template <GFXCORE_FAMILY gfxCoreFamily>
1432- ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::flushInOrderCounterSignal(bool waitOnInOrderCounterRequired ) {
1415+ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::flushInOrderCounterSignal() {
14331416 ze_result_t ret = ZE_RESULT_SUCCESS;
1434- if (waitOnInOrderCounterRequired && !this ->isHeaplessModeEnabled () && this ->latestOperationHasOptimizedCbEvent ) {
1417+ if (!this ->isHeaplessModeEnabled () && this ->latestOperationHasOptimizedCbEvent ) {
14351418 this ->appendSignalInOrderDependencyCounter (nullptr , false , true , false , false );
14361419 this ->inOrderExecInfo ->addCounterValue (this ->getInOrderIncrementValue ());
14371420 this ->handleInOrderCounterOverflow (false );
@@ -1714,48 +1697,6 @@ void CommandListCoreFamilyImmediate<gfxCoreFamily>::checkAssert() {
17141697 }
17151698}
17161699
1717- template <GFXCORE_FAMILY gfxCoreFamily>
1718- bool CommandListCoreFamilyImmediate<gfxCoreFamily>::isRelaxedOrderingDispatchAllowed(uint32_t numWaitEvents, bool copyOffload) {
1719- const auto copyOffloadModeForOperation = getCopyOffloadModeForOperation (copyOffload);
1720-
1721- auto csr = getCsr (copyOffload);
1722- if (!csr->directSubmissionRelaxedOrderingEnabled ()) {
1723- return false ;
1724- }
1725-
1726- auto numEvents = numWaitEvents + (this ->hasInOrderDependencies () ? 1 : 0 );
1727-
1728- if (NEO::debugManager.flags .DirectSubmissionRelaxedOrderingCounterHeuristic .get () != 0 ) {
1729- uint32_t relaxedOrderingCounterThreshold = csr->getDirectSubmissionRelaxedOrderingQueueDepth ();
1730-
1731- auto queueTaskCount = getCmdQImmediate (copyOffloadModeForOperation)->getTaskCount ();
1732- auto csrTaskCount = csr->peekTaskCount ();
1733-
1734- bool skipTaskCountCheck = (csrTaskCount - queueTaskCount == 1 ) && csr->isLatestFlushIsTaskCountUpdateOnly ();
1735-
1736- if (NEO::debugManager.flags .DirectSubmissionRelaxedOrderingCounterHeuristicTreshold .get () != -1 ) {
1737- relaxedOrderingCounterThreshold = static_cast <uint32_t >(NEO::debugManager.flags .DirectSubmissionRelaxedOrderingCounterHeuristicTreshold .get ());
1738- }
1739-
1740- if (queueTaskCount == csrTaskCount || skipTaskCountCheck) {
1741- relaxedOrderingCounter++;
1742- } else {
1743- // Submission from another queue. Reset counter and keep relaxed ordering allowed
1744- relaxedOrderingCounter = 0 ;
1745- this ->keepRelaxedOrderingEnabled = true ;
1746- }
1747-
1748- if (relaxedOrderingCounter > static_cast <uint64_t >(relaxedOrderingCounterThreshold)) {
1749- this ->keepRelaxedOrderingEnabled = false ;
1750- return false ;
1751- }
1752-
1753- return (keepRelaxedOrderingEnabled && (numEvents > 0 ));
1754- }
1755-
1756- return NEO::RelaxedOrderingHelper::isRelaxedOrderingDispatchAllowed (*csr, numEvents);
1757- }
1758-
17591700template <GFXCORE_FAMILY gfxCoreFamily>
17601701ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::synchronizeInOrderExecution(uint64_t timeout, bool copyOffloadSync) const {
17611702 std::chrono::high_resolution_clock::time_point waitStartTime, lastHangCheckTime, now;
@@ -2046,4 +1987,14 @@ size_t CommandListCoreFamilyImmediate<gfxCoreFamily>::estimateAdditionalSizeAppe
20461987 return additionalSize;
20471988}
20481989
1990+ template <GFXCORE_FAMILY gfxCoreFamily>
1991+ bool CommandListCoreFamilyImmediate<gfxCoreFamily>::isRelaxedOrderingDispatchAllowed(uint32_t numWaitEvents, bool copyOffload) {
1992+ return false ;
1993+ }
1994+
1995+ template <GFXCORE_FAMILY gfxCoreFamily>
1996+ bool CommandListCoreFamilyImmediate<gfxCoreFamily>::handleRelaxedOrderingSignaling(Event *event, bool &hasStallingCmds, bool &relaxedOrderingDispatch, ze_result_t &result) {
1997+ return false ;
1998+ }
1999+
20492000} // namespace L0
0 commit comments