1 /*
2 * Copyright (C) 2021 Intel Corporation
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 */
7
8 #include "shared/source/os_interface/hw_info_config.h"
9 #include "shared/test/common/fixtures/device_fixture.h"
10 #include "shared/test/common/test_macros/test.h"
11
12 using namespace NEO;
13
14 using TestDg2HwInfoConfig = Test<DeviceFixture>;
15
16 HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTestWindows, givenHardwareInfoWhenCallingIsAdditionalStateBaseAddressWARequiredThenFalseIsReturned, IGFX_DG2);
17 HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTestWindows, givenHardwareInfoWhenCallingIsMaxThreadsForWorkgroupWARequiredThenFalseIsReturned, IGFX_DG2);
18
DG2TEST_F(TestDg2HwInfoConfig,givenDG2WithCSteppingThenAdditionalStateBaseAddressWAIsNotRequired)19 DG2TEST_F(TestDg2HwInfoConfig, givenDG2WithCSteppingThenAdditionalStateBaseAddressWAIsNotRequired) {
20 const auto &hwInfoConfig = *HwInfoConfig::get(productFamily);
21 auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
22 hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_C, *hwInfo);
23 auto isWARequired = hwInfoConfig.isAdditionalStateBaseAddressWARequired(pDevice->getHardwareInfo());
24 EXPECT_FALSE(isWARequired);
25 }
26
DG2TEST_F(TestDg2HwInfoConfig,givenDG2WithBSteppingThenAdditionalStateBaseAddressWAIsRequired)27 DG2TEST_F(TestDg2HwInfoConfig, givenDG2WithBSteppingThenAdditionalStateBaseAddressWAIsRequired) {
28 const auto &hwInfoConfig = *HwInfoConfig::get(productFamily);
29 auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
30 hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, *hwInfo);
31 auto isWARequired = hwInfoConfig.isAdditionalStateBaseAddressWARequired(pDevice->getHardwareInfo());
32 EXPECT_TRUE(isWARequired);
33 }
34
DG2TEST_F(TestDg2HwInfoConfig,givenDG2WithA0SteppingThenMaxThreadsForWorkgroupWAIsRequired)35 DG2TEST_F(TestDg2HwInfoConfig, givenDG2WithA0SteppingThenMaxThreadsForWorkgroupWAIsRequired) {
36 const auto &hwInfoConfig = *HwInfoConfig::get(productFamily);
37 auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
38 hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_A0, *hwInfo);
39 auto isWARequired = hwInfoConfig.isMaxThreadsForWorkgroupWARequired(pDevice->getHardwareInfo());
40 EXPECT_TRUE(isWARequired);
41 }
42
DG2TEST_F(TestDg2HwInfoConfig,givenDG2WithBSteppingThenMaxThreadsForWorkgroupWAIsNotRequired)43 DG2TEST_F(TestDg2HwInfoConfig, givenDG2WithBSteppingThenMaxThreadsForWorkgroupWAIsNotRequired) {
44 const auto &hwInfoConfig = *HwInfoConfig::get(productFamily);
45 auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
46 hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_A1, *hwInfo);
47 auto isWARequired = hwInfoConfig.isMaxThreadsForWorkgroupWARequired(pDevice->getHardwareInfo());
48 EXPECT_FALSE(isWARequired);
49 }
50
DG2TEST_F(TestDg2HwInfoConfig,givenSteppingWhenAskingForLocalMemoryAccessModeThenDisallowOnA0)51 DG2TEST_F(TestDg2HwInfoConfig, givenSteppingWhenAskingForLocalMemoryAccessModeThenDisallowOnA0) {
52 HardwareInfo hwInfo = *defaultHwInfo;
53 const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily);
54
55 hwInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_A0, hwInfo);
56 EXPECT_EQ(LocalMemoryAccessMode::CpuAccessDisallowed, hwInfoConfig.getLocalMemoryAccessMode(hwInfo));
57
58 hwInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, hwInfo);
59 EXPECT_EQ(LocalMemoryAccessMode::Default, hwInfoConfig.getLocalMemoryAccessMode(hwInfo));
60 }
61