diff --git a/shared/source/execution_environment/root_device_environment.cpp b/shared/source/execution_environment/root_device_environment.cpp index e6cc3d2508..28f3a80744 100644 --- a/shared/source/execution_environment/root_device_environment.cpp +++ b/shared/source/execution_environment/root_device_environment.cpp @@ -157,16 +157,22 @@ CompilerInterface *RootDeviceEnvironment::getCompilerInterface() { void RootDeviceEnvironment::initHelpers() { initProductHelper(); initGfxCoreHelper(); + initializeGfxCoreHelperFromHwInfo(); initApiGfxCoreHelper(); initCompilerProductHelper(); initReleaseHelper(); initAilConfigurationHelper(); } +void RootDeviceEnvironment::initializeGfxCoreHelperFromHwInfo() { + if (gfxCoreHelper != nullptr) { + gfxCoreHelper->initializeDefaultHpCopyEngine(*this->getHardwareInfo()); + } +} + void RootDeviceEnvironment::initGfxCoreHelper() { if (gfxCoreHelper == nullptr) { gfxCoreHelper = GfxCoreHelper::create(this->getHardwareInfo()->platform.eRenderCoreFamily); - gfxCoreHelper->initializeDefaultHpCopyEngine(*this->getHardwareInfo()); } } diff --git a/shared/source/execution_environment/root_device_environment.h b/shared/source/execution_environment/root_device_environment.h index e9ce5a51a0..9c9f9d7006 100644 --- a/shared/source/execution_environment/root_device_environment.h +++ b/shared/source/execution_environment/root_device_environment.h @@ -83,6 +83,7 @@ struct RootDeviceEnvironment : NonCopyableClass { void initProductHelper(); void initHelpers(); void initGfxCoreHelper(); + void initializeGfxCoreHelperFromHwInfo(); void initApiGfxCoreHelper(); void initCompilerProductHelper(); void initReleaseHelper(); diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 9cc9b4cdc6..4fbac9faa0 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -617,6 +617,8 @@ int Drm::setupHardwareInfo(const DeviceDescriptor *device, bool setupFeatureTabl setupCacheInfo(*hwInfo); hwInfo->capabilityTable.deviceName = device->devName; + rootDeviceEnvironment.initializeGfxCoreHelperFromHwInfo(); + return 0; } diff --git a/shared/source/os_interface/windows/wddm/wddm.cpp b/shared/source/os_interface/windows/wddm/wddm.cpp index dd7ca6df37..4b0da9fac7 100644 --- a/shared/source/os_interface/windows/wddm/wddm.cpp +++ b/shared/source/os_interface/windows/wddm/wddm.cpp @@ -119,6 +119,7 @@ bool Wddm::init() { productHelper.adjustPlatformForProductFamily(hardwareInfo); rootDeviceEnvironment.initApiGfxCoreHelper(); rootDeviceEnvironment.initGfxCoreHelper(); + rootDeviceEnvironment.initializeGfxCoreHelperFromHwInfo(); rootDeviceEnvironment.initAilConfigurationHelper(); if (false == rootDeviceEnvironment.initAilConfiguration()) { return false;