From 86a5730c27e7f606e7222952bd40aba14fa92853 Mon Sep 17 00:00:00 2001 From: Adam Cetnerowski Date: Tue, 1 Oct 2019 12:28:49 +0200 Subject: [PATCH] Add TGL devices Change-Id: I399e54b6ade5ce7ba59d61229ddd9de0b86aedb2 Signed-off-by: Adam Cetnerowski --- runtime/dll/linux/devices/devices_base.inl | 10 ++- runtime/gen12lp/hw_cmds_tgllp.h | 10 +++ runtime/gen12lp/hw_info_tgllp.inl | 45 +++++++++++++- .../tgllp/linux/dll/device_id_tests_tgllp.cpp | 8 ++- .../tgllp/test_hw_info_config_tgllp.cpp | 61 +++++++++++-------- 5 files changed, 105 insertions(+), 29 deletions(-) diff --git a/runtime/dll/linux/devices/devices_base.inl b/runtime/dll/linux/devices/devices_base.inl index 113186c544..93481b4d4f 100644 --- a/runtime/dll/linux/devices/devices_base.inl +++ b/runtime/dll/linux/devices/devices_base.inl @@ -8,8 +8,14 @@ // clang-format off #ifdef SUPPORT_GEN12LP #ifdef SUPPORT_TGLLP -DEVICE( IGEN12LP_GT1_MOB_DEVICE_F0_ID, TGLLP_1x6x16, GTTYPE_GT2 ) -DEVICE( ITGL_LP_1x6x16_ULT_15W_DEVICE_F0_ID, TGLLP_1x6x16, GTTYPE_GT2 ) +DEVICE( IGEN12LP_GT1_MOB_DEVICE_F0_ID, TGLLP_1x6x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x6x16_ULT_15W_DEVICE_F0_ID, TGLLP_1x6x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x6x16_ULX_5_2W_DEVICE_F0_ID, TGLLP_1x6x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x6x16_ULT_12W_DEVICE_F0_ID, TGLLP_1x6x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x2x16_HALO_45W_DEVICE_F0_ID, TGLLP_1x2x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x2x16_DESK_65W_DEVICE_F0_ID, TGLLP_1x2x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x2x16_HALO_WS_45W_DEVICE_F0_ID, TGLLP_1x2x16, GTTYPE_GT2 ) +DEVICE( ITGL_LP_1x2x16_DESK_WS_65W_DEVICE_F0_ID, TGLLP_1x2x16, GTTYPE_GT2 ) #endif #endif diff --git a/runtime/gen12lp/hw_cmds_tgllp.h b/runtime/gen12lp/hw_cmds_tgllp.h index 1595a6c5f3..a5ded22b0e 100644 --- a/runtime/gen12lp/hw_cmds_tgllp.h +++ b/runtime/gen12lp/hw_cmds_tgllp.h @@ -23,6 +23,7 @@ struct TGLLP : public TGLLPFamily { static void (*setupHardwareInfo)(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable, const std::string &hwInfoConfig); static void setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo); }; + class TGLLP_1x6x16 : public TGLLP { public: static void setupHardwareInfo(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable); @@ -31,4 +32,13 @@ class TGLLP_1x6x16 : public TGLLP { private: static GT_SYSTEM_INFO gtSystemInfo; }; + +class TGLLP_1x2x16 : public TGLLP { + public: + static void setupHardwareInfo(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable); + static const HardwareInfo hwInfo; + + private: + static GT_SYSTEM_INFO gtSystemInfo; +}; } // namespace NEO diff --git a/runtime/gen12lp/hw_info_tgllp.inl b/runtime/gen12lp/hw_info_tgllp.inl index f7ae8dd92f..b4b989faaa 100644 --- a/runtime/gen12lp/hw_info_tgllp.inl +++ b/runtime/gen12lp/hw_info_tgllp.inl @@ -118,7 +118,7 @@ void TGLLP_1x6x16::setupHardwareInfo(HardwareInfo *hwInfo, bool setupFeatureTabl gtSysInfo->SliceCount = 1; gtSysInfo->SubSliceCount = 6; gtSysInfo->DualSubSliceCount = 6; - gtSysInfo->L3CacheSizeInKb = 2048; + gtSysInfo->L3CacheSizeInKb = 3840; gtSysInfo->L3BankCount = 8; gtSysInfo->MaxFillRate = 16; gtSysInfo->TotalVsThreads = 336; @@ -143,11 +143,54 @@ void TGLLP_1x6x16::setupHardwareInfo(HardwareInfo *hwInfo, bool setupFeatureTabl } }; +const HardwareInfo TGLLP_1x2x16::hwInfo = { + &TGLLP::platform, + &TGLLP::featureTable, + &TGLLP::workaroundTable, + &TGLLP_1x2x16::gtSystemInfo, + TGLLP::capabilityTable, +}; + +GT_SYSTEM_INFO TGLLP_1x2x16::gtSystemInfo = {0}; +void TGLLP_1x2x16::setupHardwareInfo(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable) { + GT_SYSTEM_INFO *gtSysInfo = &hwInfo->gtSystemInfo; + gtSysInfo->EUCount = 32; + gtSysInfo->ThreadCount = 32 * TGLLP::threadsPerEu; + gtSysInfo->SliceCount = 1; + gtSysInfo->SubSliceCount = 2; + gtSysInfo->DualSubSliceCount = 2; + gtSysInfo->L3CacheSizeInKb = 1920; + gtSysInfo->L3BankCount = 4; + gtSysInfo->MaxFillRate = 16; + gtSysInfo->TotalVsThreads = 224; + gtSysInfo->TotalHsThreads = 224; + gtSysInfo->TotalDsThreads = 224; + gtSysInfo->TotalGsThreads = 224; + gtSysInfo->TotalPsThreadsWindowerRange = 64; + gtSysInfo->CsrSizeInMb = 8; + gtSysInfo->MaxEuPerSubSlice = TGLLP::maxEuPerSubslice; + gtSysInfo->MaxSlicesSupported = TGLLP::maxSlicesSupported; + gtSysInfo->MaxSubSlicesSupported = TGLLP::maxSubslicesSupported; + gtSysInfo->MaxDualSubSlicesSupported = TGLLP::maxDualSubslicesSupported; + gtSysInfo->IsL3HashModeEnabled = false; + gtSysInfo->IsDynamicallyPopulated = false; + + gtSysInfo->CCSInfo.IsValid = true; + gtSysInfo->CCSInfo.NumberOfCCSEnabled = 1; + gtSysInfo->CCSInfo.Instances.CCSEnableMask = 0b1; + + if (setupFeatureTableAndWorkaroundTable) { + setupFeatureAndWorkaroundTable(hwInfo); + } +}; + const HardwareInfo TGLLP::hwInfo = TGLLP_1x6x16::hwInfo; void setupTGLLPHardwareInfoImpl(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable, const std::string &hwInfoConfig) { if (hwInfoConfig == "1x6x16") { TGLLP_1x6x16::setupHardwareInfo(hwInfo, setupFeatureTableAndWorkaroundTable); + } else if (hwInfoConfig == "1x2x16") { + TGLLP_1x2x16::setupHardwareInfo(hwInfo, setupFeatureTableAndWorkaroundTable); } else if (hwInfoConfig == "default") { // Default config TGLLP_1x6x16::setupHardwareInfo(hwInfo, setupFeatureTableAndWorkaroundTable); diff --git a/unit_tests/gen12lp/tgllp/linux/dll/device_id_tests_tgllp.cpp b/unit_tests/gen12lp/tgllp/linux/dll/device_id_tests_tgllp.cpp index b228b8b80b..ec10be872a 100644 --- a/unit_tests/gen12lp/tgllp/linux/dll/device_id_tests_tgllp.cpp +++ b/unit_tests/gen12lp/tgllp/linux/dll/device_id_tests_tgllp.cpp @@ -15,9 +15,15 @@ using namespace NEO; TEST(TglLpDeviceIdTest, supportedDeviceId) { - std::array expectedDescriptors = {{ + std::array expectedDescriptors = {{ {IGEN12LP_GT1_MOB_DEVICE_F0_ID, &TGLLP_1x6x16::hwInfo, &TGLLP_1x6x16::setupHardwareInfo, GTTYPE_GT2}, {ITGL_LP_1x6x16_ULT_15W_DEVICE_F0_ID, &TGLLP_1x6x16::hwInfo, &TGLLP_1x6x16::setupHardwareInfo, GTTYPE_GT2}, + {ITGL_LP_1x6x16_ULX_5_2W_DEVICE_F0_ID, &TGLLP_1x6x16::hwInfo, &TGLLP_1x6x16::setupHardwareInfo, GTTYPE_GT2}, + {ITGL_LP_1x6x16_ULT_12W_DEVICE_F0_ID, &TGLLP_1x6x16::hwInfo, &TGLLP_1x6x16::setupHardwareInfo, GTTYPE_GT2}, + {ITGL_LP_1x2x16_HALO_45W_DEVICE_F0_ID, &TGLLP_1x2x16::hwInfo, &TGLLP_1x2x16::setupHardwareInfo, GTTYPE_GT2}, + {ITGL_LP_1x2x16_DESK_65W_DEVICE_F0_ID, &TGLLP_1x2x16::hwInfo, &TGLLP_1x2x16::setupHardwareInfo, GTTYPE_GT2}, + {ITGL_LP_1x2x16_HALO_WS_45W_DEVICE_F0_ID, &TGLLP_1x2x16::hwInfo, &TGLLP_1x2x16::setupHardwareInfo, GTTYPE_GT2}, + {ITGL_LP_1x2x16_DESK_WS_65W_DEVICE_F0_ID, &TGLLP_1x2x16::hwInfo, &TGLLP_1x2x16::setupHardwareInfo, GTTYPE_GT2}, }}; auto compareStructs = [](const DeviceDescriptor *first, const DeviceDescriptor *second) { diff --git a/unit_tests/gen12lp/tgllp/test_hw_info_config_tgllp.cpp b/unit_tests/gen12lp/tgllp/test_hw_info_config_tgllp.cpp index c03195c30a..9ed91c8713 100644 --- a/unit_tests/gen12lp/tgllp/test_hw_info_config_tgllp.cpp +++ b/unit_tests/gen12lp/tgllp/test_hw_info_config_tgllp.cpp @@ -22,6 +22,12 @@ TEST(TgllpHwInfoConfig, givenHwInfoConfigStringThenAfterSetupResultingHwInfoIsCo EXPECT_EQ(6u, gtSystemInfo.SubSliceCount); EXPECT_EQ(96u, gtSystemInfo.EUCount); + strConfig = "1x2x16"; + hardwareInfoSetup[productFamily](&hwInfo, false, strConfig); + EXPECT_EQ(1u, gtSystemInfo.SliceCount); + EXPECT_EQ(2u, gtSystemInfo.SubSliceCount); + EXPECT_EQ(32u, gtSystemInfo.EUCount); + strConfig = "default"; gtSystemInfo = {0}; hardwareInfoSetup[productFamily](&hwInfo, false, strConfig); @@ -47,34 +53,39 @@ TGLLPTEST_F(TgllpHwInfo, givenBoolWhenCallTgllpHardwareInfoSetupThenFeatureTable FeatureTable &featureTable = hwInfo.featureTable; WorkaroundTable &workaroundTable = hwInfo.workaroundTable; - std::string strConfig = "1x6x16"; - for (auto setParamBool : boolValue) { + std::string strConfig[] = { + "1x6x16", + "1x2x16"}; - gtSystemInfo = {0}; - featureTable = {}; - workaroundTable = {}; - hardwareInfoSetup[productFamily](&hwInfo, setParamBool, strConfig); + for (auto &config : strConfig) { + for (auto setParamBool : boolValue) { - EXPECT_EQ(setParamBool, featureTable.ftrL3IACoherency); - EXPECT_EQ(setParamBool, featureTable.ftrPPGTT); - EXPECT_EQ(setParamBool, featureTable.ftrSVM); - EXPECT_EQ(setParamBool, featureTable.ftrIA32eGfxPTEs); - EXPECT_EQ(setParamBool, featureTable.ftrStandardMipTailFormat); - EXPECT_EQ(setParamBool, featureTable.ftrTranslationTable); - EXPECT_EQ(setParamBool, featureTable.ftrUserModeTranslationTable); - EXPECT_EQ(setParamBool, featureTable.ftrTileMappedResource); - EXPECT_EQ(setParamBool, featureTable.ftrEnableGuC); - EXPECT_EQ(setParamBool, featureTable.ftrFbc); - EXPECT_EQ(setParamBool, featureTable.ftrFbc2AddressTranslation); - EXPECT_EQ(setParamBool, featureTable.ftrFbcBlitterTracking); - EXPECT_EQ(setParamBool, featureTable.ftrFbcCpuTracking); - EXPECT_EQ(setParamBool, featureTable.ftrTileY); - EXPECT_EQ(setParamBool, featureTable.ftrAstcHdr2D); - EXPECT_EQ(setParamBool, featureTable.ftrAstcLdr2D); + gtSystemInfo = {0}; + featureTable = {}; + workaroundTable = {}; + hardwareInfoSetup[productFamily](&hwInfo, setParamBool, config); - EXPECT_EQ(setParamBool, workaroundTable.wa4kAlignUVOffsetNV12LinearSurface); - EXPECT_EQ(setParamBool, workaroundTable.waEnablePreemptionGranularityControlByUMD); - EXPECT_EQ(setParamBool, workaroundTable.waUntypedBufferCompression); + EXPECT_EQ(setParamBool, featureTable.ftrL3IACoherency); + EXPECT_EQ(setParamBool, featureTable.ftrPPGTT); + EXPECT_EQ(setParamBool, featureTable.ftrSVM); + EXPECT_EQ(setParamBool, featureTable.ftrIA32eGfxPTEs); + EXPECT_EQ(setParamBool, featureTable.ftrStandardMipTailFormat); + EXPECT_EQ(setParamBool, featureTable.ftrTranslationTable); + EXPECT_EQ(setParamBool, featureTable.ftrUserModeTranslationTable); + EXPECT_EQ(setParamBool, featureTable.ftrTileMappedResource); + EXPECT_EQ(setParamBool, featureTable.ftrEnableGuC); + EXPECT_EQ(setParamBool, featureTable.ftrFbc); + EXPECT_EQ(setParamBool, featureTable.ftrFbc2AddressTranslation); + EXPECT_EQ(setParamBool, featureTable.ftrFbcBlitterTracking); + EXPECT_EQ(setParamBool, featureTable.ftrFbcCpuTracking); + EXPECT_EQ(setParamBool, featureTable.ftrTileY); + EXPECT_EQ(setParamBool, featureTable.ftrAstcHdr2D); + EXPECT_EQ(setParamBool, featureTable.ftrAstcLdr2D); + + EXPECT_EQ(setParamBool, workaroundTable.wa4kAlignUVOffsetNV12LinearSurface); + EXPECT_EQ(setParamBool, workaroundTable.waEnablePreemptionGranularityControlByUMD); + EXPECT_EQ(setParamBool, workaroundTable.waUntypedBufferCompression); + } } }