From 8bbb719a975c1e60c776760c4583b4ca53ca9eca Mon Sep 17 00:00:00 2001 From: "Jablonski, Mateusz" Date: Thu, 30 Jan 2020 15:04:19 +0100 Subject: [PATCH] Stop using platformDevices to setup hw info on Linux Related-To: NEO-4207 Change-Id: I6ab136c8cddf9652ba05b3ef4e81fb6ad594831b Signed-off-by: Jablonski, Mateusz --- runtime/dll/linux/drm_neo_create.cpp | 4 +++- .../os_interface/linux/device_factory_linux.cpp | 5 ++--- unit_tests/linux/main_linux_dll.cpp | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/runtime/dll/linux/drm_neo_create.cpp b/runtime/dll/linux/drm_neo_create.cpp index 1b3ea3cd0a..8cbffa243f 100644 --- a/runtime/dll/linux/drm_neo_create.cpp +++ b/runtime/dll/linux/drm_neo_create.cpp @@ -6,6 +6,7 @@ */ #include "core/debug_settings/debug_settings_manager.h" +#include "core/execution_environment/root_device_environment.h" #include "core/gmm_helper/gmm_helper.h" #include "core/helpers/hw_cmds.h" #include "core/helpers/hw_helper.h" @@ -13,6 +14,7 @@ #include "core/helpers/options.h" #include "core/os_interface/linux/drm_neo.h" #include "core/os_interface/linux/drm_null_device.h" +#include "runtime/execution_environment/execution_environment.h" #include "drm/i915_drm.h" @@ -166,7 +168,7 @@ Drm *Drm::create(int32_t deviceOrdinal, RootDeviceEnvironment &rootDeviceEnviron } } if (device) { - platformDevices[0] = device->pHwInfo; + rootDeviceEnvironment.executionEnvironment.setHwInfo(device->pHwInfo); ret = drmObject->setupHardwareInfo(const_cast(device), true); if (ret != 0) { return nullptr; diff --git a/runtime/os_interface/linux/device_factory_linux.cpp b/runtime/os_interface/linux/device_factory_linux.cpp index eb77824338..b7eff48808 100644 --- a/runtime/os_interface/linux/device_factory_linux.cpp +++ b/runtime/os_interface/linux/device_factory_linux.cpp @@ -43,9 +43,8 @@ bool DeviceFactory::getDevices(size_t &numDevices, ExecutionEnvironment &executi } auto hardwareInfo = executionEnvironment.getMutableHardwareInfo(); - const HardwareInfo *pCurrDevice = platformDevices[devNum]; - HwInfoConfig *hwConfig = HwInfoConfig::get(pCurrDevice->platform.eProductFamily); - if (hwConfig->configureHwInfo(pCurrDevice, hardwareInfo, executionEnvironment.rootDeviceEnvironments[0]->osInterface.get())) { + HwInfoConfig *hwConfig = HwInfoConfig::get(hardwareInfo->platform.eProductFamily); + if (hwConfig->configureHwInfo(hardwareInfo, hardwareInfo, executionEnvironment.rootDeviceEnvironments[0]->osInterface.get())) { return false; } executionEnvironment.calculateMaxOsContextCount(); diff --git a/unit_tests/linux/main_linux_dll.cpp b/unit_tests/linux/main_linux_dll.cpp index 9cf4e9b1dc..a13b06b9b8 100644 --- a/unit_tests/linux/main_linux_dll.cpp +++ b/unit_tests/linux/main_linux_dll.cpp @@ -404,3 +404,19 @@ int main(int argc, char **argv) { return retVal; } + +TEST_F(DrmTests, whenCreateDrmIsCalledThenProperHwInfoIsSetup) { + auto oldHwInfo = executionEnvironment.getMutableHardwareInfo(); + oldHwInfo->platform.eProductFamily = IGFX_UNKNOWN; + oldHwInfo->platform.eRenderCoreFamily = IGFX_UNKNOWN_CORE; + auto drm = DrmWrap::createDrm(0, *rootDeviceEnvironment); + EXPECT_NE(drm, nullptr); + auto currentHwInfo = executionEnvironment.getHardwareInfo(); + EXPECT_NE(IGFX_UNKNOWN, currentHwInfo->platform.eProductFamily); + EXPECT_NE(IGFX_UNKNOWN_CORE, currentHwInfo->platform.eRenderCoreFamily); + + DrmWrap::closeDevice(0); + + drm = DrmWrap::get(0); + EXPECT_EQ(drm, nullptr); +}