1 /*
2  * Copyright (C) 2019-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/helpers/default_hw_info.h"
10 #include "shared/test/common/test_macros/test.h"
11 
12 using namespace NEO;
13 
14 using IcllpHwInfoConfig = ::testing::Test;
15 
ICLLPTEST_F(IcllpHwInfoConfig,givenInvalidSystemInfoWhenSettingHardwareInfoThenExpectThrow)16 ICLLPTEST_F(IcllpHwInfoConfig, givenInvalidSystemInfoWhenSettingHardwareInfoThenExpectThrow) {
17     HardwareInfo hwInfo = *defaultHwInfo;
18     GT_SYSTEM_INFO &gtSystemInfo = hwInfo.gtSystemInfo;
19 
20     uint64_t config = 0xdeadbeef;
21     gtSystemInfo = {0};
22     EXPECT_ANY_THROW(hardwareInfoSetup[productFamily](&hwInfo, false, config));
23     EXPECT_EQ(0u, gtSystemInfo.SliceCount);
24     EXPECT_EQ(0u, gtSystemInfo.SubSliceCount);
25     EXPECT_EQ(0u, gtSystemInfo.DualSubSliceCount);
26     EXPECT_EQ(0u, gtSystemInfo.EUCount);
27 }
28 
ICLLPTEST_F(IcllpHwInfoConfig,givenHwInfoConfigWhenAskedIfAdditionalMediaSamplerProgrammingIsRequiredThenTrueIsReturned)29 ICLLPTEST_F(IcllpHwInfoConfig, givenHwInfoConfigWhenAskedIfAdditionalMediaSamplerProgrammingIsRequiredThenTrueIsReturned) {
30     const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily);
31     EXPECT_TRUE(hwInfoConfig.isAdditionalMediaSamplerProgrammingRequired());
32 }
33 
ICLLPTEST_F(IcllpHwInfoConfig,givenHwInfoConfigWhenAskedIfInitialFlagsProgrammingIsRequiredThenTrueIsReturned)34 ICLLPTEST_F(IcllpHwInfoConfig, givenHwInfoConfigWhenAskedIfInitialFlagsProgrammingIsRequiredThenTrueIsReturned) {
35     const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily);
36     EXPECT_TRUE(hwInfoConfig.isInitialFlagsProgrammingRequired());
37 }
38 
ICLLPTEST_F(IcllpHwInfoConfig,givenHwInfoConfigWhenAskedIfReturnedCmdSizeForMediaSamplerAdjustmentIsRequiredThenTrueIsReturned)39 ICLLPTEST_F(IcllpHwInfoConfig, givenHwInfoConfigWhenAskedIfReturnedCmdSizeForMediaSamplerAdjustmentIsRequiredThenTrueIsReturned) {
40     const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily);
41     EXPECT_TRUE(hwInfoConfig.isReturnedCmdSizeForMediaSamplerAdjustmentRequired());
42 }
43 
44 using IcllpHwInfo = ::testing::Test;
45 
ICLLPTEST_F(IcllpHwInfo,givenBoolWhenCallIcllpHardwareInfoSetupThenFeatureTableAndWorkaroundTableAreSetCorrect)46 ICLLPTEST_F(IcllpHwInfo, givenBoolWhenCallIcllpHardwareInfoSetupThenFeatureTableAndWorkaroundTableAreSetCorrect) {
47     uint64_t configs[] = {
48         0x100080008,
49         0x100040008,
50         0x100060008};
51     bool boolValue[]{
52         true, false};
53 
54     HardwareInfo hwInfo = *defaultHwInfo;
55     GT_SYSTEM_INFO &gtSystemInfo = hwInfo.gtSystemInfo;
56     FeatureTable &featureTable = hwInfo.featureTable;
57     WorkaroundTable &workaroundTable = hwInfo.workaroundTable;
58 
59     for (auto config : configs) {
60         for (auto setParamBool : boolValue) {
61 
62             gtSystemInfo = {0};
63             featureTable = {};
64             workaroundTable = {};
65             hardwareInfoSetup[productFamily](&hwInfo, setParamBool, config);
66 
67             EXPECT_EQ(setParamBool, featureTable.flags.ftrL3IACoherency);
68             EXPECT_EQ(setParamBool, featureTable.flags.ftrPPGTT);
69             EXPECT_EQ(setParamBool, featureTable.flags.ftrSVM);
70             EXPECT_EQ(setParamBool, featureTable.flags.ftrIA32eGfxPTEs);
71             EXPECT_EQ(setParamBool, featureTable.flags.ftrStandardMipTailFormat);
72             EXPECT_EQ(setParamBool, featureTable.flags.ftrDisplayYTiling);
73             EXPECT_EQ(setParamBool, featureTable.flags.ftrTranslationTable);
74             EXPECT_EQ(setParamBool, featureTable.flags.ftrUserModeTranslationTable);
75             EXPECT_EQ(setParamBool, featureTable.flags.ftrTileMappedResource);
76             EXPECT_EQ(setParamBool, featureTable.flags.ftrEnableGuC);
77             EXPECT_EQ(setParamBool, featureTable.flags.ftrFbc);
78             EXPECT_EQ(setParamBool, featureTable.flags.ftrFbc2AddressTranslation);
79             EXPECT_EQ(setParamBool, featureTable.flags.ftrFbcBlitterTracking);
80             EXPECT_EQ(setParamBool, featureTable.flags.ftrFbcCpuTracking);
81             EXPECT_EQ(setParamBool, featureTable.flags.ftrTileY);
82             EXPECT_EQ(setParamBool, featureTable.flags.ftrAstcHdr2D);
83             EXPECT_EQ(setParamBool, featureTable.flags.ftrAstcLdr2D);
84             EXPECT_EQ(setParamBool, featureTable.flags.ftr3dMidBatchPreempt);
85             EXPECT_EQ(setParamBool, featureTable.flags.ftrGpGpuMidBatchPreempt);
86             EXPECT_EQ(setParamBool, featureTable.flags.ftrGpGpuMidThreadLevelPreempt);
87             EXPECT_EQ(setParamBool, featureTable.flags.ftrGpGpuThreadGroupLevelPreempt);
88             EXPECT_EQ(setParamBool, featureTable.flags.ftrPerCtxtPreemptionGranularityControl);
89 
90             EXPECT_EQ(setParamBool, workaroundTable.flags.wa4kAlignUVOffsetNV12LinearSurface);
91             EXPECT_EQ(setParamBool, workaroundTable.flags.waReportPerfCountUseGlobalContextID);
92         }
93     }
94 }
95