diff --git a/shared/source/command_stream/command_stream_receiver_hw_base.inl b/shared/source/command_stream/command_stream_receiver_hw_base.inl index b6c1192f62..10e7a30b4a 100644 --- a/shared/source/command_stream/command_stream_receiver_hw_base.inl +++ b/shared/source/command_stream/command_stream_receiver_hw_base.inl @@ -1510,24 +1510,26 @@ inline bool CommandStreamReceiverHw::initDirectSubmission() { auto startDirect = this->osContext->isDirectSubmissionAvailable(peekHwInfo(), submitOnInit); if (startDirect) { - auto lock = this->obtainUniqueOwnership(); if (!this->isAnyDirectSubmissionEnabled()) { - if (EngineHelpers::isBcs(this->osContext->getEngineType())) { - blitterDirectSubmission = DirectSubmissionHw>::create(*this); - ret = blitterDirectSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync()); - completionFenceValuePointer = blitterDirectSubmission->getCompletionValuePointer(); + auto lock = this->obtainUniqueOwnership(); + if (!this->isAnyDirectSubmissionEnabled()) { + if (EngineHelpers::isBcs(this->osContext->getEngineType())) { + blitterDirectSubmission = DirectSubmissionHw>::create(*this); + ret = blitterDirectSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync()); + completionFenceValuePointer = blitterDirectSubmission->getCompletionValuePointer(); - } else { - directSubmission = DirectSubmissionHw>::create(*this); - ret = directSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync()); - completionFenceValuePointer = directSubmission->getCompletionValuePointer(); - } - auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController(); - if (directSubmissionController) { - directSubmissionController->registerDirectSubmission(this); - } - if (this->isUpdateTagFromWaitEnabled()) { - this->overrideDispatchPolicy(DispatchMode::ImmediateDispatch); + } else { + directSubmission = DirectSubmissionHw>::create(*this); + ret = directSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync()); + completionFenceValuePointer = directSubmission->getCompletionValuePointer(); + } + auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController(); + if (directSubmissionController) { + directSubmissionController->registerDirectSubmission(this); + } + if (this->isUpdateTagFromWaitEnabled()) { + this->overrideDispatchPolicy(DispatchMode::ImmediateDispatch); + } } } this->osContext->setDirectSubmissionActive();