mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 23:56:39 +08:00
Move hw_info_config tests to shared
Signed-off-by: Daniel Chabrowski daniel.chabrowski@intel.com
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
16fd791a7c
commit
14134be74e
9
shared/test/unit_test/gen11/ehl/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen11/ehl/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_EHL)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen11/ehl/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen11/ehl/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_ehl.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxEhl : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm->storedDeviceID = IEHL_1x4x8_SUPERSKU_DEVICE_A0_ID;
|
||||
|
||||
drm->storedSSVal = 8;
|
||||
}
|
||||
};
|
||||
|
||||
EHLTEST_F(HwInfoConfigTestLinuxEhl, GivenEhlThenHwInfoIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfigHw<IGFX_ELKHARTLAKE>::get();
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
}
|
||||
|
||||
EHLTEST_F(HwInfoConfigTestLinuxEhl, GivenInvalidDeviceIdWhenConfiguringHwInfoThenNegativeOneReturned) {
|
||||
auto hwInfoConfig = HwInfoConfigHw<IGFX_ELKHARTLAKE>::get();
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class EhlHwInfoTests : public ::testing::Test {};
|
||||
TEST(EhlHwInfoTests, WhenGtIsSetupThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &EHL_HW_CONFIG::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen11/icllp/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen11/icllp/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_ICLLP)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen11/icllp/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen11/icllp/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_icllp.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxIcllp : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm->storedDeviceID = IICL_LP_GT1_MOB_DEVICE_F0_ID;
|
||||
}
|
||||
};
|
||||
|
||||
ICLLPTEST_F(HwInfoConfigTestLinuxIcllp, GivenIcllpThenHwInfoIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrTileY);
|
||||
}
|
||||
|
||||
ICLLPTEST_F(HwInfoConfigTestLinuxIcllp, GivenInvalidDeviceIdWhenConfiguringHwInfoThenNegativeOneReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class IcllpHwInfoTests : public ::testing::Test {};
|
||||
typedef ::testing::Types<ICLLP_1x8x8, ICLLP_1x4x8, ICLLP_1x6x8> icllpTestTypes;
|
||||
TYPED_TEST_CASE(IcllpHwInfoTests, icllpTestTypes);
|
||||
TYPED_TEST(IcllpHwInfoTests, WhenGettingSystemInfoThenParamsAreValid) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 5u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen11/lkf/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen11/lkf/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_LKF)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen11/lkf/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen11/lkf/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_lkf.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxLkf : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm->storedDeviceID = ILKF_1x8x8_DESK_DEVICE_F0_ID;
|
||||
|
||||
drm->storedSSVal = 8;
|
||||
}
|
||||
};
|
||||
|
||||
LKFTEST_F(HwInfoConfigTestLinuxLkf, configureHwInfoLkf) {
|
||||
auto hwInfoConfig = HwInfoConfigHw<IGFX_LAKEFIELD>::get();
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrTileY);
|
||||
}
|
||||
|
||||
LKFTEST_F(HwInfoConfigTestLinuxLkf, negative) {
|
||||
auto hwInfoConfig = HwInfoConfigHw<IGFX_LAKEFIELD>::get();
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class LkfHwInfoTests : public ::testing::Test {};
|
||||
typedef ::testing::Types<LKF_1x8x8> lkfTestTypes;
|
||||
TYPED_TEST_CASE(LkfHwInfoTests, lkfTestTypes);
|
||||
TYPED_TEST(LkfHwInfoTests, gtSetupIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen12lp/adlp/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen12lp/adlp/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_ADLP)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen12lp/adlp/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen12lp/adlp/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_adlp.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/libult/linux/drm_mock.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxAdlp : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm = new DrmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
|
||||
drm->storedDeviceID = IGFX_ALDERLAKE_P;
|
||||
}
|
||||
};
|
||||
|
||||
ADLPTEST_F(HwInfoConfigTestLinuxAdlp, WhenConfiguringHwInfoThenInfoIsSetCorrectly) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(static_cast<unsigned short>(drm->storedDeviceID), outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ(static_cast<unsigned short>(drm->storedDeviceRevID), outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ(static_cast<uint32_t>(drm->storedEUVal), outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ(static_cast<uint32_t>(drm->storedSSVal), outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrTileY);
|
||||
}
|
||||
|
||||
ADLPTEST_F(HwInfoConfigTestLinuxAdlp, GivenInvalidDeviceIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
ADLPTEST_F(HwInfoConfigTestLinuxAdlp, givenAdlpConfigWhenSetupHardwareInfoBaseThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
ADLP::setupHardwareInfoBase(&hwInfo, false);
|
||||
|
||||
EXPECT_EQ(64u, gtSystemInfo.TotalPsThreadsWindowerRange);
|
||||
EXPECT_EQ(8u, gtSystemInfo.CsrSizeInMb);
|
||||
EXPECT_FALSE(gtSystemInfo.IsL3HashModeEnabled);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
using AdlpConfigHwInfoTests = ::testing::Test;
|
||||
using adlpConfigTestTypes = ::testing::Types<ADLP_CONFIG>;
|
||||
TYPED_TEST_CASE(AdlpConfigHwInfoTests, adlpConfigTestTypes);
|
||||
TYPED_TEST(AdlpConfigHwInfoTests, givenAdlpConfigWhenSetupHardwareInfoThenGtSystemInfoAndWaAndFtrTablesAreSetCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
auto &featureTable = hwInfo.featureTable;
|
||||
auto &workaroundTable = hwInfo.workaroundTable;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_EQ(8u, gtSystemInfo.CsrSizeInMb);
|
||||
EXPECT_FALSE(gtSystemInfo.IsL3HashModeEnabled);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
|
||||
EXPECT_FALSE(featureTable.flags.ftrL3IACoherency);
|
||||
EXPECT_FALSE(featureTable.flags.ftrPPGTT);
|
||||
EXPECT_FALSE(featureTable.flags.ftrSVM);
|
||||
EXPECT_FALSE(featureTable.flags.ftrIA32eGfxPTEs);
|
||||
EXPECT_FALSE(featureTable.flags.ftrStandardMipTailFormat);
|
||||
EXPECT_FALSE(featureTable.flags.ftrTranslationTable);
|
||||
EXPECT_FALSE(featureTable.flags.ftrUserModeTranslationTable);
|
||||
EXPECT_FALSE(featureTable.flags.ftrTileMappedResource);
|
||||
EXPECT_FALSE(featureTable.flags.ftrEnableGuC);
|
||||
EXPECT_FALSE(featureTable.flags.ftrFbc);
|
||||
EXPECT_FALSE(featureTable.flags.ftrFbc2AddressTranslation);
|
||||
EXPECT_FALSE(featureTable.flags.ftrFbcBlitterTracking);
|
||||
EXPECT_FALSE(featureTable.flags.ftrFbcCpuTracking);
|
||||
EXPECT_FALSE(featureTable.flags.ftrTileY);
|
||||
EXPECT_FALSE(featureTable.flags.ftrAstcHdr2D);
|
||||
EXPECT_FALSE(featureTable.flags.ftrAstcLdr2D);
|
||||
EXPECT_FALSE(featureTable.flags.ftr3dMidBatchPreempt);
|
||||
EXPECT_FALSE(featureTable.flags.ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_FALSE(featureTable.flags.ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_FALSE(featureTable.flags.ftrPerCtxtPreemptionGranularityControl);
|
||||
|
||||
EXPECT_FALSE(workaroundTable.flags.wa4kAlignUVOffsetNV12LinearSurface);
|
||||
EXPECT_FALSE(workaroundTable.flags.waEnablePreemptionGranularityControlByUMD);
|
||||
EXPECT_FALSE(workaroundTable.flags.waUntypedBufferCompression);
|
||||
|
||||
ret = drm.setupHardwareInfo(&device, true);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_EQ(8u, gtSystemInfo.CsrSizeInMb);
|
||||
EXPECT_FALSE(gtSystemInfo.IsL3HashModeEnabled);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
|
||||
EXPECT_TRUE(featureTable.flags.ftrL3IACoherency);
|
||||
EXPECT_TRUE(featureTable.flags.ftrPPGTT);
|
||||
EXPECT_TRUE(featureTable.flags.ftrSVM);
|
||||
EXPECT_TRUE(featureTable.flags.ftrIA32eGfxPTEs);
|
||||
EXPECT_TRUE(featureTable.flags.ftrStandardMipTailFormat);
|
||||
EXPECT_TRUE(featureTable.flags.ftrTranslationTable);
|
||||
EXPECT_TRUE(featureTable.flags.ftrUserModeTranslationTable);
|
||||
EXPECT_TRUE(featureTable.flags.ftrTileMappedResource);
|
||||
EXPECT_TRUE(featureTable.flags.ftrEnableGuC);
|
||||
EXPECT_TRUE(featureTable.flags.ftrFbc);
|
||||
EXPECT_TRUE(featureTable.flags.ftrFbc2AddressTranslation);
|
||||
EXPECT_TRUE(featureTable.flags.ftrFbcBlitterTracking);
|
||||
EXPECT_TRUE(featureTable.flags.ftrFbcCpuTracking);
|
||||
EXPECT_FALSE(featureTable.flags.ftrTileY);
|
||||
EXPECT_TRUE(featureTable.flags.ftrAstcHdr2D);
|
||||
EXPECT_TRUE(featureTable.flags.ftrAstcLdr2D);
|
||||
EXPECT_TRUE(featureTable.flags.ftr3dMidBatchPreempt);
|
||||
EXPECT_TRUE(featureTable.flags.ftrGpGpuMidBatchPreempt);
|
||||
EXPECT_TRUE(featureTable.flags.ftrGpGpuThreadGroupLevelPreempt);
|
||||
EXPECT_TRUE(featureTable.flags.ftrPerCtxtPreemptionGranularityControl);
|
||||
|
||||
EXPECT_TRUE(workaroundTable.flags.wa4kAlignUVOffsetNV12LinearSurface);
|
||||
EXPECT_TRUE(workaroundTable.flags.waEnablePreemptionGranularityControlByUMD);
|
||||
EXPECT_TRUE(workaroundTable.flags.waUntypedBufferCompression);
|
||||
}
|
||||
|
||||
TYPED_TEST(AdlpConfigHwInfoTests, givenSliceCountZeroWhenSetupHardwareInfoThenNotZeroValuesSetInGtSystemInfo) {
|
||||
HardwareInfo hwInfo = {};
|
||||
hwInfo.gtSystemInfo = {0};
|
||||
|
||||
TypeParam::setupHardwareInfo(&hwInfo, false);
|
||||
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.MaxEuPerSubSlice);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.MaxSlicesSupported);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.MaxSubSlicesSupported);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.L3BankCount);
|
||||
EXPECT_TRUE(hwInfo.gtSystemInfo.CCSInfo.IsValid);
|
||||
EXPECT_NE(0u, hwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled);
|
||||
}
|
||||
9
shared/test/unit_test/gen12lp/adls/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen12lp/adls/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_ADLS)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen12lp/adls/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen12lp/adls/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_adls.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/libult/linux/drm_mock.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxAdls : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm = new DrmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
|
||||
drm->storedDeviceID = IGFX_ALDERLAKE_S;
|
||||
}
|
||||
};
|
||||
|
||||
ADLSTEST_F(HwInfoConfigTestLinuxAdls, WhenConfiguringHwInfoThenConfigIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(static_cast<unsigned short>(drm->storedDeviceID), outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ(static_cast<unsigned short>(drm->storedDeviceRevID), outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ(static_cast<uint32_t>(drm->storedEUVal), outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ(static_cast<uint32_t>(drm->storedSSVal), outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrTileY);
|
||||
}
|
||||
|
||||
ADLSTEST_F(HwInfoConfigTestLinuxAdls, GivenIncorrectDataWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
TEST(AdlsHwInfoTests, WhenSettingUpHwInfoThenConfigIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &ADLS_HW_CONFIG::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.MaxDualSubSlicesSupported, 0u);
|
||||
}
|
||||
11
shared/test/unit_test/gen12lp/dg1/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen12lp/dg1/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_dg1.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/command_stream/preemption.h"
|
||||
#include "shared/source/os_interface/hw_info_config.h"
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/helpers/hw_helper_tests.h"
|
||||
|
||||
using HwHelperTestGen12Lp = HwHelperTest;
|
||||
|
||||
DG1TEST_F(HwHelperTestGen12Lp, GivenDG1WhenConfigureHardwareCustomThenMTPIsNotSet) {
|
||||
HwInfoConfig *hwInfoConfig = HwInfoConfig::get(hardwareInfo.platform.eProductFamily);
|
||||
|
||||
OSInterface osIface;
|
||||
hardwareInfo.capabilityTable.defaultPreemptionMode = PreemptionMode::ThreadGroup;
|
||||
PreemptionHelper::adjustDefaultPreemptionMode(hardwareInfo.capabilityTable, true, true, true);
|
||||
|
||||
hwInfoConfig->configureHardwareCustom(&hardwareInfo, &osIface);
|
||||
EXPECT_FALSE(hardwareInfo.featureTable.flags.ftrGpGpuMidThreadLevelPreempt);
|
||||
}
|
||||
|
||||
DG1TEST_F(HwHelperTestGen12Lp, GivenDG1WhenConfigureHardwareCustomThenKmdNotifyIsEnabled) {
|
||||
HwInfoConfig *hwInfoConfig = HwInfoConfig::get(hardwareInfo.platform.eProductFamily);
|
||||
|
||||
OSInterface osIface;
|
||||
hwInfoConfig->configureHardwareCustom(&hardwareInfo, &osIface);
|
||||
EXPECT_TRUE(hardwareInfo.capabilityTable.kmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(300ll, hardwareInfo.capabilityTable.kmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
}
|
||||
9
shared/test/unit_test/gen12lp/rkl/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen12lp/rkl/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_RKL)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen12lp/rkl/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen12lp/rkl/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_rkl.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/libult/linux/drm_mock.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxRkl : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm = new DrmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
|
||||
drm->storedDeviceID = 0x4C8A;
|
||||
}
|
||||
};
|
||||
|
||||
RKLTEST_F(HwInfoConfigTestLinuxRkl, WhenConfiguringHwInfoThenConfigIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrTileY);
|
||||
}
|
||||
|
||||
RKLTEST_F(HwInfoConfigTestLinuxRkl, GivenIncorrectDataWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
TEST(RklHwInfoTests, WhenSettingUpHwInfoThenConfigIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &RKL_HW_CONFIG::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.MaxDualSubSlicesSupported, 0u);
|
||||
}
|
||||
9
shared/test/unit_test/gen12lp/tgllp/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen12lp/tgllp/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_TGLLP)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen12lp/tgllp/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen12lp/tgllp/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_tgllp.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/command_stream/preemption.h"
|
||||
#include "shared/source/os_interface/hw_info_config.h"
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/helpers/hw_helper_tests.h"
|
||||
#include "shared/test/common/libult/linux/drm_mock.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxTgllp : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm = new DrmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
|
||||
drm->storedDeviceID = 0xFF20;
|
||||
}
|
||||
};
|
||||
|
||||
TGLLPTEST_F(HwInfoConfigTestLinuxTgllp, GivenTGLLPWhenConfigureHardwareCustomThenMTPIsNotSet) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
pInHwInfo.capabilityTable.defaultPreemptionMode = PreemptionMode::ThreadGroup;
|
||||
PreemptionHelper::adjustDefaultPreemptionMode(pInHwInfo.capabilityTable, true, true, true);
|
||||
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrGpGpuMidThreadLevelPreempt);
|
||||
}
|
||||
|
||||
TGLLPTEST_F(HwInfoConfigTestLinuxTgllp, configureHwInfo) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
|
||||
EXPECT_FALSE(outHwInfo.featureTable.flags.ftrTileY);
|
||||
}
|
||||
|
||||
TGLLPTEST_F(HwInfoConfigTestLinuxTgllp, negative) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class TgllpHwInfoTests : public ::testing::Test {};
|
||||
typedef ::testing::Types<TGLLP_1x6x16> tgllpTestTypes;
|
||||
TYPED_TEST_CASE(TgllpHwInfoTests, tgllpTestTypes);
|
||||
TYPED_TEST(TgllpHwInfoTests, gtSetupIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.MaxDualSubSlicesSupported, 0u);
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2021 Intel Corporation
|
||||
# Copyright (C) 2021-2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
@@ -10,5 +10,6 @@ if(TESTS_BDW)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/test_device_caps_bdw.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/test_hw_info_config_bdw.cpp
|
||||
)
|
||||
|
||||
add_subdirectories()
|
||||
endif()
|
||||
|
||||
11
shared/test/unit_test/gen8/bdw/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen8/bdw/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_bdw.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,147 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxBdw : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
drm->storedDeviceID = 0x1616;
|
||||
}
|
||||
};
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, WhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
drm->storedSSVal = 3;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x1602;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x1626;
|
||||
|
||||
drm->storedSSVal = 6;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(2u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, GivenUnknownDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedDeviceID = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, GivenFailedIoctlDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceID = -2;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-2, ret);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, GivenFailedIoctlDevRevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceRevID = -3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-3, ret);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, GivenFailedIoctlEuCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -4;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-4, ret);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, GivenFailedIoctlSsCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForSSVal = -5;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-5, ret);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, GivenWaFlagsWhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedDeviceRevID = 0;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
}
|
||||
|
||||
BDWTEST_F(HwInfoConfigTestLinuxBdw, WhenConfiguringHwInfoThenEdramInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL(0u, outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x1622;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((128u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x162A;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((128u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class BdwHwInfoTests : public ::testing::Test {
|
||||
};
|
||||
typedef ::testing::Types<BDW_1x2x6, BDW_1x3x6, BDW_1x3x8, BDW_2x3x8> bdwTestTypes;
|
||||
TYPED_TEST_CASE(BdwHwInfoTests, bdwTestTypes);
|
||||
TYPED_TEST(BdwHwInfoTests, WhenGtIsSetupThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "shared/source/helpers/compiler_hw_info_config.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
TEST(BdwHwInfoConfig, givenInvalidSystemInfoWhenSettingHardwareInfoThenExpectThrow) {
|
||||
|
||||
9
shared/test/unit_test/gen9/bxt/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen9/bxt/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_BXT)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen9/bxt/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen9/bxt/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests.cpp
|
||||
)
|
||||
endif()
|
||||
204
shared/test/unit_test/gen9/bxt/linux/hw_info_config_tests.cpp
Normal file
204
shared/test/unit_test/gen9/bxt/linux/hw_info_config_tests.cpp
Normal file
@@ -0,0 +1,204 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxBxt : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
drm->storedDeviceID = 0x5A84;
|
||||
|
||||
drm->storedEUVal = 18;
|
||||
drm->storedHasPooledEU = 1;
|
||||
drm->storedMinEUinPool = 3;
|
||||
}
|
||||
};
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, WhenConfiguringHwInfoThenConfigIsCorrect) {
|
||||
drm->storedDeviceRevID = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ((unsigned int)drm->storedHasPooledEU, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ((uint32_t)drm->storedMinEUinPool, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrGttCacheInvalidation);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_TRUE(outHwInfo.gtSystemInfo.VEBoxInfo.IsValid);
|
||||
|
||||
drm->storedDeviceID = 0x5A85;
|
||||
drm->storedMinEUinPool = 6;
|
||||
drm->storedDeviceRevID = 4;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ((unsigned int)drm->storedHasPooledEU, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ((uint32_t)drm->storedMinEUinPool, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x5A85;
|
||||
drm->storedMinEUinPool = 9;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ((unsigned int)drm->storedHasPooledEU, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ((uint32_t)drm->storedMinEUinPool, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
auto &outKmdNotifyProperties = outHwInfo.capabilityTable.kmdNotifyProperties;
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(50000, outKmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleep);
|
||||
EXPECT_EQ(5000, outKmdNotifyProperties.delayQuickKmdSleepMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleepForSporadicWaits);
|
||||
EXPECT_EQ(200000, outKmdNotifyProperties.delayQuickKmdSleepForSporadicWaitsMicroseconds);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenUnknownDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedDeviceID = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenFailedIoctlDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceID = -2;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-2, ret);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenFailedIoctlDevRevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceRevID = -3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-3, ret);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenFailedIoctlEuCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -4;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-4, ret);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenFailingEnabledPoolWhenConfiguringHwInfoThenZeroIsReturned) {
|
||||
drm->storedRetValForPooledEU = -1;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenDisabledEnabledPoolWhenConfiguringHwInfoThenZeroIsReturned) {
|
||||
drm->storedHasPooledEU = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenFailingMinEuInPoolWhenConfiguringHwInfoThenZeroIsReturned) {
|
||||
drm->storedRetValForMinEUinPool = -1;
|
||||
|
||||
drm->storedSSVal = 3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(9u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
|
||||
drm->storedSSVal = 2;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(3u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, GivenInvalidMinEuInPoolWhenConfiguringHwInfoThenZeroIsReturned) {
|
||||
drm->storedMinEUinPool = 4;
|
||||
|
||||
drm->storedSSVal = 3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(9u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
|
||||
drm->storedSSVal = 2;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(3u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
BXTTEST_F(HwInfoConfigTestLinuxBxt, WhenConfiguringHwInfoWaFlagsThenZeroIsReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedDeviceRevID = 0;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class BxtHwInfoTests : public ::testing::Test {
|
||||
};
|
||||
typedef ::testing::Types<BXT_1x2x6, BXT_1x3x6> bxtTestTypes;
|
||||
TYPED_TEST_CASE(BxtHwInfoTests, bxtTestTypes);
|
||||
TYPED_TEST(BxtHwInfoTests, WhenConfiguringHwInfoThenConfigIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen9/cfl/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen9/cfl/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_CFL)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen9/cfl/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen9/cfl/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_cfl.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/execution_environment/execution_environment.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxCfl : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
drm->storedDeviceID = 0x3E92;
|
||||
}
|
||||
};
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, WhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.gtSystemInfo.VEBoxInfo.IsValid);
|
||||
|
||||
drm->storedDeviceID = 0x3E90;
|
||||
drm->storedSSVal = 3;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x3EA5;
|
||||
drm->storedSSVal = 6;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(2u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
auto &outKmdNotifyProperties = outHwInfo.capabilityTable.kmdNotifyProperties;
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(50000, outKmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleep);
|
||||
EXPECT_EQ(5000, outKmdNotifyProperties.delayQuickKmdSleepMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleepForSporadicWaits);
|
||||
EXPECT_EQ(200000, outKmdNotifyProperties.delayQuickKmdSleepForSporadicWaitsMicroseconds);
|
||||
EXPECT_FALSE(outKmdNotifyProperties.enableQuickKmdSleepForDirectSubmission);
|
||||
EXPECT_EQ(0, outKmdNotifyProperties.delayQuickKmdSleepForDirectSubmissionMicroseconds);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, GivenUnknownDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedDeviceID = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, GivenFailedIoctlDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceID = -2;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-2, ret);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, GivenFailedIoctlDevRevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceRevID = -3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-3, ret);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, GivenFailedIoctlEuCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForEUVal = -4;
|
||||
drm->failRetTopology = true;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-4, ret);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, GivenFailedIoctlSsCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForSSVal = -5;
|
||||
drm->failRetTopology = true;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-5, ret);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, GivenWaFlagsWhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedDeviceRevID = 0;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
}
|
||||
|
||||
CFLTEST_F(HwInfoConfigTestLinuxCfl, WhenConfiguringHwInfoThenEdramInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL(0u, outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x3EA8;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x3EA6;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class CflHwInfoTests : public ::testing::Test {
|
||||
};
|
||||
typedef ::testing::Types<CFL_1x2x6, CFL_1x3x6, CFL_1x3x8, CFL_2x3x8, CFL_3x3x8> cflTestTypes;
|
||||
TYPED_TEST_CASE(CflHwInfoTests, cflTestTypes);
|
||||
TYPED_TEST(CflHwInfoTests, WhenGtIsSetupThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen9/glk/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen9/glk/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_GLK)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen9/glk/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen9/glk/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_glk.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,200 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxGlk : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm->storedDeviceID = 0x3185;
|
||||
|
||||
drm->storedEUVal = 18;
|
||||
drm->storedHasPooledEU = 1;
|
||||
drm->storedMinEUinPool = 3;
|
||||
}
|
||||
};
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, WhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.gtSystemInfo.VEBoxInfo.IsValid);
|
||||
|
||||
drm->storedDeviceID = 0x3184;
|
||||
|
||||
drm->storedMinEUinPool = 6;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ((unsigned int)drm->storedHasPooledEU, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ((uint32_t)drm->storedMinEUinPool, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x3185;
|
||||
|
||||
drm->storedMinEUinPool = 9;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ((unsigned int)drm->storedHasPooledEU, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ((uint32_t)drm->storedMinEUinPool, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
auto &outKmdNotifyProperties = outHwInfo.capabilityTable.kmdNotifyProperties;
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(50000, outKmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleep);
|
||||
EXPECT_EQ(5000, outKmdNotifyProperties.delayQuickKmdSleepMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleepForSporadicWaits);
|
||||
EXPECT_EQ(200000, outKmdNotifyProperties.delayQuickKmdSleepForSporadicWaitsMicroseconds);
|
||||
EXPECT_FALSE(outKmdNotifyProperties.enableQuickKmdSleepForDirectSubmission);
|
||||
EXPECT_EQ(0, outKmdNotifyProperties.delayQuickKmdSleepForDirectSubmissionMicroseconds);
|
||||
}
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, GivenInvalidInputWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedRetValForDeviceID = -1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceID = 0;
|
||||
drm->storedRetValForDeviceRevID = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForDeviceRevID = 0;
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
|
||||
drm->storedRetValForEUVal = 0;
|
||||
drm->storedRetValForSSVal = -1;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, GivenFailingEnabledPoolWhenConfiguringHwInfoThenZeroIsSet) {
|
||||
drm->storedRetValForPooledEU = -1;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, GivenDisabledEnabledPoolWhenConfiguringHwInfoThenZeroIsSet) {
|
||||
drm->storedHasPooledEU = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ(0u, outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, GivenFailingMinEuInPoolWhenConfiguringHwInfoThenCorrectValueSet) {
|
||||
drm->storedRetValForMinEUinPool = -1;
|
||||
|
||||
drm->storedSSVal = 3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(9u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
|
||||
drm->storedSSVal = 2;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(3u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, GivenInvalidMinEuInPoolWhenConfiguringHwInfoThenCorrectValueSet) {
|
||||
drm->storedMinEUinPool = 4;
|
||||
|
||||
drm->storedSSVal = 3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(9u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
|
||||
drm->storedSSVal = 2;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrPooledEuEnabled);
|
||||
EXPECT_EQ(3u, outHwInfo.gtSystemInfo.EuCountPerPoolMin);
|
||||
EXPECT_EQ((outHwInfo.gtSystemInfo.EUCount - outHwInfo.gtSystemInfo.EuCountPerPoolMin), outHwInfo.gtSystemInfo.EuCountPerPoolMax);
|
||||
}
|
||||
|
||||
GLKTEST_F(HwInfoConfigTestLinuxGlk, GivenWaFlagsWhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedDeviceRevID = 0;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class GlkHwInfoTests : public ::testing::Test {
|
||||
};
|
||||
typedef ::testing::Types<GLK_1x3x6, GLK_1x2x6> glkTestTypes;
|
||||
TYPED_TEST_CASE(GlkHwInfoTests, glkTestTypes);
|
||||
TYPED_TEST(GlkHwInfoTests, WhenGtIsSetupThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen9/kbl/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen9/kbl/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_KBL)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen9/kbl/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen9/kbl/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_kbl.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,197 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/execution_environment/execution_environment.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxKbl : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
drm->storedDeviceID = 0x5912;
|
||||
}
|
||||
};
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, WhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.gtSystemInfo.VEBoxInfo.IsValid);
|
||||
|
||||
drm->storedDeviceID = 0x5906;
|
||||
drm->storedSSVal = 3;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x5915;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x5923;
|
||||
drm->storedSSVal = 6;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(2u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x593B;
|
||||
drm->storedSSVal = 6;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(2u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
auto &outKmdNotifyProperties = outHwInfo.capabilityTable.kmdNotifyProperties;
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(50000, outKmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleep);
|
||||
EXPECT_EQ(5000, outKmdNotifyProperties.delayQuickKmdSleepMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleepForSporadicWaits);
|
||||
EXPECT_EQ(200000, outKmdNotifyProperties.delayQuickKmdSleepForSporadicWaitsMicroseconds);
|
||||
EXPECT_FALSE(outKmdNotifyProperties.enableQuickKmdSleepForDirectSubmission);
|
||||
EXPECT_EQ(0, outKmdNotifyProperties.delayQuickKmdSleepForDirectSubmissionMicroseconds);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, GivenUnknownDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedDeviceID = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, GivenFailedIoctlDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceID = -2;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-2, ret);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, GivenFailedIoctlDevRevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceRevID = -3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-3, ret);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, GivenFailedIoctlEuCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForEUVal = -4;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-4, ret);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, GivenFailedIoctlSsCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->failRetTopology = true;
|
||||
drm->storedRetValForSSVal = -5;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-5, ret);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, GivenWaFlagsWhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedDeviceRevID = 0;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
drm->storedDeviceRevID = 7;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waDisableLSQCROPERFforOCL);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waEncryptedEdramOnlyPartials);
|
||||
|
||||
drm->storedDeviceRevID = 9;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waDisableLSQCROPERFforOCL);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waEncryptedEdramOnlyPartials);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waForcePcBbFullCfgRestore);
|
||||
}
|
||||
|
||||
KBLTEST_F(HwInfoConfigTestLinuxKbl, WhenConfiguringHwInfoThenEdramInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL(0u, outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x5927;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x5926;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class KblHwInfoTests : public ::testing::Test {
|
||||
};
|
||||
typedef ::testing::Types<KBL_1x2x6, KBL_1x3x6, KBL_1x3x8, KBL_2x3x8, KBL_3x3x8> kblTestTypes;
|
||||
TYPED_TEST_CASE(KblHwInfoTests, kblTestTypes);
|
||||
TYPED_TEST(KblHwInfoTests, WhenGtIsSetupThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
9
shared/test/unit_test/gen9/skl/CMakeLists.txt
Normal file
9
shared/test/unit_test/gen9/skl/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_SKL)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
11
shared/test/unit_test/gen9/skl/linux/CMakeLists.txt
Normal file
11
shared/test/unit_test/gen9/skl/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_skl.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,236 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxSkl : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
drm->storedDeviceID = 0x0902;
|
||||
}
|
||||
};
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, WhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
//constant sysInfo/ftr flags
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.VEBoxInfo.Instances.Bits.VEBox0Enabled);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.VDBoxInfo.Instances.Bits.VDBox0Enabled);
|
||||
EXPECT_TRUE(outHwInfo.gtSystemInfo.VEBoxInfo.IsValid);
|
||||
EXPECT_TRUE(outHwInfo.gtSystemInfo.VDBoxInfo.IsValid);
|
||||
|
||||
drm->storedDeviceID = 0x1902;
|
||||
|
||||
drm->storedSSVal = 3;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x1917;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x0903;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
drm->storedDeviceID = 0x0904;
|
||||
|
||||
drm->storedSSVal = 6;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceID, outHwInfo.platform.usDeviceID);
|
||||
EXPECT_EQ((unsigned short)drm->storedDeviceRevID, outHwInfo.platform.usRevId);
|
||||
EXPECT_EQ((uint32_t)drm->storedEUVal, outHwInfo.gtSystemInfo.EUCount);
|
||||
EXPECT_EQ((uint32_t)drm->storedSSVal, outHwInfo.gtSystemInfo.SubSliceCount);
|
||||
EXPECT_EQ(1u, outHwInfo.gtSystemInfo.SliceCount);
|
||||
EXPECT_EQ(aub_stream::ENGINE_RCS, outHwInfo.capabilityTable.defaultEngineType);
|
||||
|
||||
auto &outKmdNotifyProperties = outHwInfo.capabilityTable.kmdNotifyProperties;
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(50000, outKmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleep);
|
||||
EXPECT_EQ(5000, outKmdNotifyProperties.delayQuickKmdSleepMicroseconds);
|
||||
EXPECT_TRUE(outKmdNotifyProperties.enableQuickKmdSleepForSporadicWaits);
|
||||
EXPECT_EQ(200000, outKmdNotifyProperties.delayQuickKmdSleepForSporadicWaitsMicroseconds);
|
||||
EXPECT_FALSE(outKmdNotifyProperties.enableQuickKmdSleepForDirectSubmission);
|
||||
EXPECT_EQ(0, outKmdNotifyProperties.delayQuickKmdSleepForDirectSubmissionMicroseconds);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, GivenUnknownDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedDeviceID = 0;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-1, ret);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, GivenFailedIoctlDevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceID = -2;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-2, ret);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, GivenFailedIoctlDevRevIdWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForDeviceRevID = -3;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-3, ret);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, GivenFailedIoctlEuCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForEUVal = -4;
|
||||
drm->failRetTopology = true;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-4, ret);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, GivenFailedIoctlSsCountWhenConfiguringHwInfoThenErrorIsReturned) {
|
||||
drm->storedRetValForSSVal = -5;
|
||||
drm->failRetTopology = true;
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(-5, ret);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, GivenWaFlagsWhenConfiguringHwInfoThenInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
drm->storedDeviceRevID = 1;
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
|
||||
drm->storedDeviceRevID = 0;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waCompressedResourceRequiresConstVA21);
|
||||
|
||||
drm->storedDeviceRevID = 5;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waCompressedResourceRequiresConstVA21);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waModifyVFEStateAfterGPGPUPreemption);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waDisablePerCtxtPreemptionGranularityControl);
|
||||
|
||||
drm->storedDeviceRevID = 6;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waCompressedResourceRequiresConstVA21);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waModifyVFEStateAfterGPGPUPreemption);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waDisablePerCtxtPreemptionGranularityControl);
|
||||
EXPECT_EQ(0u, outHwInfo.workaroundTable.flags.waCSRUncachable);
|
||||
}
|
||||
|
||||
SKLTEST_F(HwInfoConfigTestLinuxSkl, WhenConfiguringHwInfoThenEdramInformationIsCorrect) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL(0u, outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(0u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x1926;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x1927;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x192D;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((64u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x193B;
|
||||
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((128u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
|
||||
drm->storedDeviceID = 0x193D;
|
||||
ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
EXPECT_EQ_VAL((128u * 1024u), outHwInfo.gtSystemInfo.EdramSizeInKb);
|
||||
EXPECT_EQ(1u, outHwInfo.featureTable.flags.ftrEDram);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class SklHwInfoTests : public ::testing::Test {
|
||||
};
|
||||
typedef ::testing::Types<SKL_1x2x6, SKL_1x3x6, SKL_1x3x8, SKL_2x3x8, SKL_3x3x8> sklTestTypes;
|
||||
TYPED_TEST_CASE(SklHwInfoTests, sklTestTypes);
|
||||
TYPED_TEST(SklHwInfoTests, WhenGtIsSetupThenGtSystemInfoIsCorrect) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
DrmMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
DeviceDescriptor device = {0, &hwInfo, &TypeParam::setupHardwareInfo};
|
||||
|
||||
int ret = drm.setupHardwareInfo(&device, false);
|
||||
|
||||
EXPECT_EQ(ret, 0);
|
||||
EXPECT_GT(gtSystemInfo.EUCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.ThreadCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.SubSliceCount, 0u);
|
||||
EXPECT_GT(gtSystemInfo.DualSubSliceCount, 0u);
|
||||
EXPECT_GT_VAL(gtSystemInfo.L3CacheSizeInKb, 0u);
|
||||
EXPECT_EQ(gtSystemInfo.CsrSizeInMb, 8u);
|
||||
EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated);
|
||||
}
|
||||
|
||||
TYPED_TEST(SklHwInfoTests, givenGTSystemInfoTypeWhenConfigureHardwareCustomThenSliceCountDontChange) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
auto osInterface = std::unique_ptr<OSInterface>(new OSInterface());
|
||||
GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo;
|
||||
|
||||
TypeParam::setupHardwareInfo(&hwInfo, false);
|
||||
auto sliceCount = gtSystemInfo.SliceCount;
|
||||
|
||||
HwInfoConfig *hwConfig = HwInfoConfig::get(PRODUCT_FAMILY::IGFX_SKYLAKE);
|
||||
|
||||
hwConfig->configureHardwareCustom(&hwInfo, osInterface.get());
|
||||
EXPECT_EQ(gtSystemInfo.SliceCount, sliceCount);
|
||||
}
|
||||
36
shared/test/unit_test/os_interface/hw_info_config_tests.h
Normal file
36
shared/test/unit_test/os_interface/hw_info_config_tests.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTest : public ::testing::Test {
|
||||
void SetUp() override {
|
||||
pInHwInfo = *defaultHwInfo;
|
||||
|
||||
testPlatform = &pInHwInfo.platform;
|
||||
testSkuTable = &pInHwInfo.featureTable;
|
||||
testWaTable = &pInHwInfo.workaroundTable;
|
||||
testSysInfo = &pInHwInfo.gtSystemInfo;
|
||||
|
||||
outHwInfo = {};
|
||||
}
|
||||
|
||||
HardwareInfo pInHwInfo;
|
||||
HardwareInfo outHwInfo;
|
||||
|
||||
PLATFORM *testPlatform = nullptr;
|
||||
FeatureTable *testSkuTable = nullptr;
|
||||
WorkaroundTable *testWaTable = nullptr;
|
||||
GT_SYSTEM_INFO *testSysInfo = nullptr;
|
||||
};
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shared/source/execution_environment/execution_environment.h"
|
||||
#include "shared/source/os_interface/hw_info_config.h"
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/source/utilities/cpu_info.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/libult/linux/drm_mock.h"
|
||||
#include "shared/test/unit_test/os_interface/hw_info_config_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinux : public HwInfoConfigTest {
|
||||
static void mockCpuidex(int *cpuInfo, int functionId, int subfunctionId) {
|
||||
if (subfunctionId == 0) {
|
||||
cpuInfo[0] = 0x7F;
|
||||
}
|
||||
if (subfunctionId == 1) {
|
||||
cpuInfo[0] = 0x1F;
|
||||
}
|
||||
if (subfunctionId == 2) {
|
||||
cpuInfo[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void SetUp() override {
|
||||
HwInfoConfigTest::SetUp();
|
||||
executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||
|
||||
osInterface = new OSInterface();
|
||||
drm = new DrmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
|
||||
drm->storedDeviceID = pInHwInfo.platform.usDeviceID;
|
||||
drm->storedDeviceRevID = 0;
|
||||
drm->storedEUVal = pInHwInfo.gtSystemInfo.EUCount;
|
||||
drm->storedSSVal = pInHwInfo.gtSystemInfo.SubSliceCount;
|
||||
|
||||
rt_cpuidex_func = CpuInfo::cpuidexFunc;
|
||||
CpuInfo::cpuidexFunc = mockCpuidex;
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
CpuInfo::cpuidexFunc = rt_cpuidex_func;
|
||||
|
||||
delete osInterface;
|
||||
|
||||
HwInfoConfigTest::TearDown();
|
||||
}
|
||||
|
||||
OSInterface *osInterface;
|
||||
std::unique_ptr<ExecutionEnvironment> executionEnvironment;
|
||||
DrmMock *drm;
|
||||
|
||||
void (*rt_cpuidex_func)(int *, int, int);
|
||||
};
|
||||
9
shared/test/unit_test/xe_hp_core/xehp/CMakeLists.txt
Normal file
9
shared/test/unit_test/xe_hp_core/xehp/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_XE_HP_SDV)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
13
shared/test/unit_test/xe_hp_core/xehp/linux/CMakeLists.txt
Normal file
13
shared/test/unit_test/xe_hp_core/xehp/linux/CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_xehp.cpp
|
||||
)
|
||||
|
||||
add_subdirectories()
|
||||
endif()
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/libult/linux/drm_mock.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
#include "shared/test/unit_test/os_interface/linux/hw_info_config_linux_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct HwInfoConfigTestLinuxXeHp : HwInfoConfigTestLinux {
|
||||
void SetUp() override {
|
||||
HwInfoConfigTestLinux::SetUp();
|
||||
|
||||
drm = new DrmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
|
||||
drm->storedDeviceID = 0x0201;
|
||||
}
|
||||
};
|
||||
|
||||
XEHPTEST_F(HwInfoConfigTestLinuxXeHp, WhenConfiguringHwInfoThenZeroIsReturned) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
int ret = hwInfoConfig->configureHwInfoDrm(&pInHwInfo, &outHwInfo, osInterface);
|
||||
EXPECT_EQ(0, ret);
|
||||
}
|
||||
|
||||
XEHPTEST_F(HwInfoConfigTestLinuxXeHp, GivenXeHpSdvWhenConfigureHardwareCustomThenKmdNotifyIsEnabled) {
|
||||
HwInfoConfig *hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
|
||||
hwInfoConfig->configureHardwareCustom(&pInHwInfo, osInterface);
|
||||
EXPECT_TRUE(pInHwInfo.capabilityTable.kmdNotifyProperties.enableKmdNotify);
|
||||
EXPECT_EQ(150ll, pInHwInfo.capabilityTable.kmdNotifyProperties.delayKmdNotifyMicroseconds);
|
||||
EXPECT_TRUE(pInHwInfo.capabilityTable.kmdNotifyProperties.enableQuickKmdSleepForDirectSubmission);
|
||||
EXPECT_EQ(20ll, pInHwInfo.capabilityTable.kmdNotifyProperties.delayQuickKmdSleepForDirectSubmissionMicroseconds);
|
||||
}
|
||||
Reference in New Issue
Block a user