177 lines
6.9 KiB
C++
177 lines
6.9 KiB
C++
/*
|
|
* Copyright (C) 2018-2019 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#include "test.h"
|
|
|
|
using namespace NEO;
|
|
|
|
TEST(SklHwInfoConfig, givenHwInfoConfigStringThenAfterSetupResultingHwInfoIsCorrect) {
|
|
if (IGFX_SKYLAKE != productFamily) {
|
|
return;
|
|
}
|
|
GT_SYSTEM_INFO gtSystemInfo = {0};
|
|
HardwareInfo hwInfo;
|
|
hwInfo.pSysInfo = >SystemInfo;
|
|
|
|
std::string strConfig = "1x3x8";
|
|
hardwareInfoSetup[productFamily](&hwInfo, false, strConfig);
|
|
EXPECT_EQ(1u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(3u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(23u, gtSystemInfo.EUCount);
|
|
|
|
strConfig = "2x3x8";
|
|
gtSystemInfo = {0};
|
|
hardwareInfoSetup[productFamily](&hwInfo, false, strConfig);
|
|
EXPECT_EQ(2u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(6u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(47u, gtSystemInfo.EUCount);
|
|
|
|
strConfig = "3x3x8";
|
|
gtSystemInfo = {0};
|
|
hardwareInfoSetup[productFamily](&hwInfo, false, strConfig);
|
|
EXPECT_EQ(3u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(9u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(71u, gtSystemInfo.EUCount);
|
|
|
|
strConfig = "1x2x6";
|
|
gtSystemInfo = {0};
|
|
hardwareInfoSetup[productFamily](&hwInfo, false, strConfig);
|
|
EXPECT_EQ(1u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(2u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(11u, gtSystemInfo.EUCount);
|
|
|
|
strConfig = "1x3x6";
|
|
gtSystemInfo = {0};
|
|
hardwareInfoSetup[productFamily](&hwInfo, false, strConfig);
|
|
EXPECT_EQ(1u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(3u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(17u, gtSystemInfo.EUCount);
|
|
|
|
strConfig = "default";
|
|
gtSystemInfo = {0};
|
|
hardwareInfoSetup[productFamily](&hwInfo, false, strConfig);
|
|
EXPECT_EQ(1u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(3u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(23u, gtSystemInfo.EUCount);
|
|
|
|
strConfig = "erroneous";
|
|
|
|
gtSystemInfo = {0};
|
|
|
|
EXPECT_ANY_THROW(hardwareInfoSetup[productFamily](&hwInfo, false, strConfig));
|
|
EXPECT_EQ(0u, gtSystemInfo.SliceCount);
|
|
EXPECT_EQ(0u, gtSystemInfo.SubSliceCount);
|
|
EXPECT_EQ(0u, gtSystemInfo.EUCount);
|
|
}
|
|
|
|
using SklHwInfo = ::testing::Test;
|
|
|
|
SKLTEST_F(SklHwInfo, givenBoolWhenCallSklHardwareInfoSetupThenFeatureTableAndWorkaroundTableAreSetCorrect) {
|
|
std::string strConfig[] = {
|
|
"1x3x8",
|
|
"2x3x8",
|
|
"3x3x8",
|
|
"1x2x6",
|
|
"1x3x6"};
|
|
bool boolValue[]{
|
|
true, false};
|
|
GT_SYSTEM_INFO gtSystemInfo = {0};
|
|
FeatureTable pSkuTable;
|
|
WorkaroundTable pWaTable;
|
|
PLATFORM pPlatform;
|
|
HardwareInfo hwInfo;
|
|
hwInfo.pSysInfo = >SystemInfo;
|
|
hwInfo.pSkuTable = &pSkuTable;
|
|
hwInfo.pWaTable = &pWaTable;
|
|
hwInfo.pPlatform = &pPlatform;
|
|
|
|
for (auto &config : strConfig) {
|
|
for (auto setParamBool : boolValue) {
|
|
|
|
gtSystemInfo = {0};
|
|
pSkuTable = {};
|
|
pWaTable = {};
|
|
pPlatform.usRevId = 9;
|
|
hardwareInfoSetup[productFamily](&hwInfo, setParamBool, config);
|
|
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrGpGpuMidBatchPreempt);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrGpGpuThreadGroupLevelPreempt);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrL3IACoherency);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrGpGpuMidThreadLevelPreempt);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftr3dMidBatchPreempt);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftr3dObjectLevelPreempt);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrPerCtxtPreemptionGranularityControl);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrPPGTT);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrSVM);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrIA32eGfxPTEs);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrDisplayYTiling);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrTranslationTable);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrUserModeTranslationTable);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrEnableGuC);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrFbc);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrFbc2AddressTranslation);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrFbcBlitterTracking);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrFbcCpuTracking);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrVEBOX);
|
|
EXPECT_EQ(setParamBool, pSkuTable.ftrTileY);
|
|
EXPECT_EQ(false, pSkuTable.ftrSingleVeboxSlice);
|
|
EXPECT_EQ(false, pSkuTable.ftrVcs2);
|
|
|
|
EXPECT_EQ(setParamBool, pWaTable.waEnablePreemptionGranularityControlByUMD);
|
|
EXPECT_EQ(setParamBool, pWaTable.waSendMIFLUSHBeforeVFE);
|
|
EXPECT_EQ(setParamBool, pWaTable.waReportPerfCountUseGlobalContextID);
|
|
EXPECT_EQ(setParamBool, pWaTable.waDisableLSQCROPERFforOCL);
|
|
EXPECT_EQ(setParamBool, pWaTable.waMsaa8xTileYDepthPitchAlignment);
|
|
EXPECT_EQ(setParamBool, pWaTable.waLosslessCompressionSurfaceStride);
|
|
EXPECT_EQ(setParamBool, pWaTable.waFbcLinearSurfaceStride);
|
|
EXPECT_EQ(setParamBool, pWaTable.wa4kAlignUVOffsetNV12LinearSurface);
|
|
EXPECT_EQ(setParamBool, pWaTable.waEncryptedEdramOnlyPartials);
|
|
EXPECT_EQ(setParamBool, pWaTable.waDisableEdramForDisplayRT);
|
|
EXPECT_EQ(setParamBool, pWaTable.waForcePcBbFullCfgRestore);
|
|
EXPECT_EQ(setParamBool, pWaTable.waSamplerCacheFlushBetweenRedescribedSurfaceReads);
|
|
EXPECT_EQ(false, pWaTable.waCompressedResourceRequiresConstVA21);
|
|
EXPECT_EQ(false, pWaTable.waDisablePerCtxtPreemptionGranularityControl);
|
|
EXPECT_EQ(false, pWaTable.waModifyVFEStateAfterGPGPUPreemption);
|
|
EXPECT_EQ(false, pWaTable.waCSRUncachable);
|
|
|
|
pPlatform.usRevId = 1;
|
|
pWaTable = {};
|
|
pSkuTable = {};
|
|
pSkuTable.ftrGT1 = true;
|
|
pSkuTable.ftrGT3 = true;
|
|
hardwareInfoSetup[productFamily](&hwInfo, true, config);
|
|
|
|
EXPECT_EQ(true, pWaTable.waCompressedResourceRequiresConstVA21);
|
|
EXPECT_EQ(true, pWaTable.waDisablePerCtxtPreemptionGranularityControl);
|
|
EXPECT_EQ(true, pWaTable.waModifyVFEStateAfterGPGPUPreemption);
|
|
EXPECT_EQ(true, pWaTable.waCSRUncachable);
|
|
EXPECT_EQ(true, pSkuTable.ftrSingleVeboxSlice);
|
|
EXPECT_EQ(true, pSkuTable.ftrVcs2);
|
|
|
|
pWaTable = {};
|
|
pSkuTable = {};
|
|
pSkuTable.ftrGT2 = true;
|
|
pSkuTable.ftrGT4 = true;
|
|
hardwareInfoSetup[productFamily](&hwInfo, true, config);
|
|
|
|
EXPECT_EQ(true, pSkuTable.ftrSingleVeboxSlice);
|
|
EXPECT_EQ(true, pSkuTable.ftrVcs2);
|
|
|
|
pWaTable = {};
|
|
pSkuTable = {};
|
|
pSkuTable.ftrGT1 = true;
|
|
pSkuTable.ftrGT2 = true;
|
|
pSkuTable.ftrGT3 = true;
|
|
pSkuTable.ftrGT4 = true;
|
|
hardwareInfoSetup[productFamily](&hwInfo, true, config);
|
|
|
|
EXPECT_EQ(true, pSkuTable.ftrSingleVeboxSlice);
|
|
EXPECT_EQ(true, pSkuTable.ftrVcs2);
|
|
}
|
|
}
|
|
}
|