diff --git a/shared/source/device/root_device.cpp b/shared/source/device/root_device.cpp index 29250bb895..58fbed4af9 100644 --- a/shared/source/device/root_device.cpp +++ b/shared/source/device/root_device.cpp @@ -98,6 +98,8 @@ void RootDevice::initializeRootCommandStreamReceiver() { auto &hwInfo = getHardwareInfo(); auto defaultEngineType = getChosenEngineType(hwInfo); + auto &hwHelper = NEO::HwHelper::get(hwInfo.platform.eRenderCoreFamily); + defaultEngineType = static_cast(hwHelper.getDefaultEngineWithWa(hwInfo, defaultEngineType)); auto preemptionMode = PreemptionHelper::getDefaultPreemptionMode(hwInfo); auto osContext = getMemoryManager()->createAndRegisterOsContext(rootCommandStreamReceiver.get(), defaultEngineType, diff --git a/shared/source/helpers/hw_helper.h b/shared/source/helpers/hw_helper.h index e259876b2e..81a3a49f2d 100644 --- a/shared/source/helpers/hw_helper.h +++ b/shared/source/helpers/hw_helper.h @@ -106,6 +106,7 @@ class HwHelper { uint32_t threadsPerEu) = 0; virtual uint32_t alignSlmSize(uint32_t slmSize) = 0; virtual uint32_t computeSlmValues(uint32_t slmSize) = 0; + virtual uint32_t getDefaultEngineWithWa(const HardwareInfo &hwInfo, uint32_t defaultEngineType) const = 0; virtual bool isForceEmuInt32DivRemSPWARequired(const HardwareInfo &hwInfo) = 0; virtual uint32_t getMinimalSIMDSize() = 0; @@ -268,6 +269,8 @@ class HwHelperHw : public HwHelper { uint32_t computeSlmValues(uint32_t slmSize) override; + uint32_t getDefaultEngineWithWa(const HardwareInfo &hwInfo, uint32_t defaultEngineType) const override; + static AuxTranslationMode getAuxTranslationMode(); static bool isBlitAuxTranslationRequired(const HardwareInfo &hwInfo, const MultiDispatchInfo &multiDispatchInfo); diff --git a/shared/source/helpers/hw_helper_base.inl b/shared/source/helpers/hw_helper_base.inl index eb8e233b04..dee8648910 100644 --- a/shared/source/helpers/hw_helper_base.inl +++ b/shared/source/helpers/hw_helper_base.inl @@ -471,4 +471,9 @@ uint32_t HwHelperHw::getDefaultThreadArbitrationPolicy() const { return 0; } +template +uint32_t HwHelperHw::getDefaultEngineWithWa(const HardwareInfo &hwInfo, uint32_t defaultEngineType) const { + return defaultEngineType; +} + } // namespace NEO