diff --git a/level_zero/core/source/cmdlist/cmdlist_imp.cpp b/level_zero/core/source/cmdlist/cmdlist_imp.cpp index b9143dd1dd..889cf03afb 100644 --- a/level_zero/core/source/cmdlist/cmdlist_imp.cpp +++ b/level_zero/core/source/cmdlist/cmdlist_imp.cpp @@ -273,7 +273,7 @@ void CommandListImp::enableCopyOperationOffload() { return; } - this->copyOffloadMode = device->getL0GfxCoreHelper().getDefaultCopyOffloadMode(); + this->copyOffloadMode = device->getL0GfxCoreHelper().getDefaultCopyOffloadMode(device->getProductHelper().useAdditionalBlitProperties()); if (this->copyOffloadMode != CopyOffloadModes::dualStream || !isImmediateType()) { // No need to create internal bcs queue diff --git a/level_zero/core/source/device/device_imp.cpp b/level_zero/core/source/device/device_imp.cpp index cd2c78acf7..a0288e39d2 100644 --- a/level_zero/core/source/device/device_imp.cpp +++ b/level_zero/core/source/device/device_imp.cpp @@ -268,7 +268,10 @@ ze_result_t DeviceImp::createCommandList(const ze_command_list_desc_t *desc, } } - const bool copyOffloadAllowed = cmdList->isInOrderExecutionEnabled() && !getProductHelper().isDcFlushAllowed() && (getL0GfxCoreHelper().getDefaultCopyOffloadMode() != CopyOffloadModes::dualStream); + auto &productHelper = getProductHelper(); + + const bool copyOffloadAllowed = cmdList->isInOrderExecutionEnabled() && !productHelper.isDcFlushAllowed() && + (getL0GfxCoreHelper().getDefaultCopyOffloadMode(productHelper.useAdditionalBlitProperties()) != CopyOffloadModes::dualStream); if (copyOffloadHint && copyOffloadAllowed) { cmdList->enableCopyOperationOffload(); diff --git a/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h b/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h index 53e3569a88..b88a5311f4 100644 --- a/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h +++ b/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h @@ -114,7 +114,7 @@ class L0GfxCoreHelper : public NEO::ApiGfxCoreHelper { virtual std::unique_ptr getInOrderTimestampAllocator(const RootDeviceIndicesContainer &rootDeviceIndices, NEO::MemoryManager *memoryManager, size_t initialTagCount, size_t packetsCountPerElement, size_t tagAlignment, NEO::DeviceBitfield deviceBitfield) const = 0; virtual uint64_t getOaTimestampValidBits() const = 0; - virtual CopyOffloadMode getDefaultCopyOffloadMode() const = 0; + virtual CopyOffloadMode getDefaultCopyOffloadMode(bool additionalBlitPropertiesSupported) const = 0; virtual bool isDefaultCmdListWithCopyOffloadSupported() const = 0; protected: @@ -172,7 +172,7 @@ class L0GfxCoreHelperHw : public L0GfxCoreHelper { std::unique_ptr getInOrderTimestampAllocator(const RootDeviceIndicesContainer &rootDeviceIndices, NEO::MemoryManager *memoryManager, size_t initialTagCount, size_t packetsCountPerElement, size_t tagAlignment, NEO::DeviceBitfield deviceBitfield) const override; uint64_t getOaTimestampValidBits() const override; - CopyOffloadMode getDefaultCopyOffloadMode() const override; + CopyOffloadMode getDefaultCopyOffloadMode(bool additionalBlitPropertiesSupported) const override; bool isDefaultCmdListWithCopyOffloadSupported() const override; protected: diff --git a/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper_base.inl b/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper_base.inl index c5b7147152..c2b3bf8ccc 100644 --- a/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper_base.inl +++ b/level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper_base.inl @@ -96,7 +96,7 @@ bool L0GfxCoreHelperHw::threadResumeRequiresUnlock() const { } template -CopyOffloadMode L0GfxCoreHelperHw::getDefaultCopyOffloadMode() const { +CopyOffloadMode L0GfxCoreHelperHw::getDefaultCopyOffloadMode(bool additionalBlitPropertiesSupported) const { if (NEO::debugManager.flags.OverrideCopyOffloadMode.get() != -1) { return static_cast(NEO::debugManager.flags.OverrideCopyOffloadMode.get()); }