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