diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 8fb56470bb..e93c243600 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -1058,7 +1058,7 @@ ze_result_t CommandListCoreFamily::appendImageCopyToMemoryExt(voi return ZE_RESULT_ERROR_UNKNOWN; } - if (this->device->getNEODevice()->isAnyDirectSubmissionEnabled(false)) { + if (this->device->getNEODevice()->isAnyDirectSubmissionEnabled()) { NEO::PipeControlArgs pipeControlArgs; pipeControlArgs.textureCacheInvalidationEnable = true; NEO::MemorySynchronizationCommands::addSingleBarrier(*commandContainer.getCommandStream(), pipeControlArgs); @@ -4097,7 +4097,7 @@ void CommandListCoreFamily::dispatchPostSyncCommands(const CmdLis if (isImmediateType()) { pipeControlArgs.constantCacheInvalidationEnable = getCsr(false)->isDirectSubmissionEnabled(); } else { - pipeControlArgs.constantCacheInvalidationEnable = this->device->getNEODevice()->isAnyDirectSubmissionEnabled(false); + pipeControlArgs.constantCacheInvalidationEnable = this->device->getNEODevice()->isAnyDirectSubmissionEnabled(); } } diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp index 29b822c6eb..7a2b92f1fd 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp @@ -733,7 +733,7 @@ HWTEST2_F(CommandListAppendUsedPacketSignalEvent, EXPECT_TRUE(cmd->getCommandStreamerStallEnable()); EXPECT_EQ(gpuAddress, NEO::UnitTestHelper::getPipeControlPostSyncAddress(*cmd)); EXPECT_EQ(MemorySynchronizationCommands::getDcFlushEnable(true, device->getNEODevice()->getRootDeviceEnvironment()), cmd->getDcFlushEnable()); - EXPECT_EQ(device->getNEODevice()->isAnyDirectSubmissionEnabled(false), cmd->getConstantCacheInvalidationEnable()); + EXPECT_EQ(device->getNEODevice()->isAnyDirectSubmissionEnabled(), cmd->getConstantCacheInvalidationEnable()); EXPECT_TRUE(cmd->getWorkloadPartitionIdOffsetEnable()); postSyncFound++; gpuAddress += event->getSinglePacketSize(); diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index bb68186105..22b0c98e15 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -107,7 +107,7 @@ CommandQueue::CommandQueue(Context *context, ClDevice *device, const cl_queue_pr auto &compilerProductHelper = device->getCompilerProductHelper(); auto &rootDeviceEnvironment = device->getRootDeviceEnvironment(); - bcsAllowed = !device->getDevice().isAnyDirectSubmissionEnabled(true) && + bcsAllowed = !device->getDevice().isAnyDirectSubmissionLightEnabled() && productHelper.isBlitterFullySupported(hwInfo) && gfxCoreHelper.isSubDeviceEngineSupported(rootDeviceEnvironment, device->getDeviceBitfield(), aub_stream::EngineType::ENGINE_BCS); diff --git a/shared/source/device/device.cpp b/shared/source/device/device.cpp index 9c84c11a9f..1169ee882f 100644 --- a/shared/source/device/device.cpp +++ b/shared/source/device/device.cpp @@ -1095,7 +1095,15 @@ void Device::stopDirectSubmissionAndWaitForCompletion() { } } -bool Device::isAnyDirectSubmissionEnabled(bool light) const { +bool Device::isAnyDirectSubmissionEnabled() const { + return this->isAnyDirectSubmissionEnabledImpl(false); +} + +bool Device::isAnyDirectSubmissionLightEnabled() const { + return this->isAnyDirectSubmissionEnabledImpl(true); +} + +bool Device::isAnyDirectSubmissionEnabledImpl(bool light) const { for (const auto &engine : allEngines) { auto enabled = light ? engine.osContext->isDirectSubmissionLightActive() : engine.commandStreamReceiver->isAnyDirectSubmissionEnabled(); if (enabled) { diff --git a/shared/source/device/device.h b/shared/source/device/device.h index 23b50174b7..b1889fbcdd 100644 --- a/shared/source/device/device.h +++ b/shared/source/device/device.h @@ -205,7 +205,8 @@ class Device : public ReferenceTrackedObject, NEO::NonCopyableAndNonMova return deviceUsmMemAllocPoolsManager.get(); } MOCKABLE_VIRTUAL void stopDirectSubmissionAndWaitForCompletion(); - MOCKABLE_VIRTUAL bool isAnyDirectSubmissionEnabled(bool light) const; + bool isAnyDirectSubmissionEnabled() const; + bool isAnyDirectSubmissionLightEnabled() const; bool isStateSipRequired() const { return (getPreemptionMode() == PreemptionMode::MidThread || getDebugger() != nullptr) && getCompilerInterface(); } @@ -278,6 +279,7 @@ class Device : public ReferenceTrackedObject, NEO::NonCopyableAndNonMova MOCKABLE_VIRTUAL std::unique_ptr createCommandStreamReceiver() const; MOCKABLE_VIRTUAL SubDevice *createSubDevice(uint32_t subDeviceIndex); MOCKABLE_VIRTUAL size_t getMaxParameterSizeFromIGC() const; + MOCKABLE_VIRTUAL bool isAnyDirectSubmissionEnabledImpl(bool light) const; double getPercentOfGlobalMemoryAvailable() const; virtual void createBindlessHeapsHelper() {} bool createSubDevices(); diff --git a/shared/source/memory_manager/unified_memory_manager.cpp b/shared/source/memory_manager/unified_memory_manager.cpp index 73daf20aa2..7443133b70 100644 --- a/shared/source/memory_manager/unified_memory_manager.cpp +++ b/shared/source/memory_manager/unified_memory_manager.cpp @@ -936,7 +936,7 @@ void SVMAllocsManager::initUsmAllocationsCaches(Device &device) { usmDeviceAllocationsCacheEnabled = !!debugManager.flags.ExperimentalEnableDeviceAllocationCache.get(); } if (usmDeviceAllocationsCacheEnabled) { - device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionEnabled(true)); + device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionLightEnabled()); this->initUsmDeviceAllocationsCache(device); } @@ -945,7 +945,7 @@ void SVMAllocsManager::initUsmAllocationsCaches(Device &device) { usmHostAllocationsCacheEnabled = !!debugManager.flags.ExperimentalEnableHostAllocationCache.get(); } if (usmHostAllocationsCacheEnabled) { - device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionEnabled(true)); + device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionLightEnabled()); this->initUsmHostAllocationsCache(); } } diff --git a/shared/test/common/mocks/mock_device.h b/shared/test/common/mocks/mock_device.h index 19c511c731..4197c0de5e 100644 --- a/shared/test/common/mocks/mock_device.h +++ b/shared/test/common/mocks/mock_device.h @@ -168,7 +168,7 @@ class MockDevice : public RootDevice { rtDispatchGlobalsForceAllocation = true; } - bool isAnyDirectSubmissionEnabled(bool light) const override { + bool isAnyDirectSubmissionEnabledImpl(bool light) const override { return anyDirectSubmissionEnabledReturnValue; }