From bea54b9fb8a6b92715432d0fa4666089c26a5d23 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Wed, 2 Feb 2022 15:50:52 +0000 Subject: [PATCH] Move DG2 hw info config tests to shared Signed-off-by: Mateusz Jablonski --- .../unit_test/xe_hpg_core/dg2/CMakeLists.txt | 4 +- .../xe_hpg_core/dg2/excludes_dg2.cpp | 3 +- .../xe_hpg_core/dg2/hw_info_tests_dg2.cpp | 27 --- .../dg2/test_hw_info_config_dg2.cpp | 173 ------------------ .../dg2/hw_info_config_tests_dg2.cpp | 169 ++++++++++++++++- 5 files changed, 171 insertions(+), 205 deletions(-) delete mode 100644 opencl/test/unit_test/xe_hpg_core/dg2/hw_info_tests_dg2.cpp delete mode 100644 opencl/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp diff --git a/opencl/test/unit_test/xe_hpg_core/dg2/CMakeLists.txt b/opencl/test/unit_test/xe_hpg_core/dg2/CMakeLists.txt index 46a7253b28..ce531a349a 100644 --- a/opencl/test/unit_test/xe_hpg_core/dg2/CMakeLists.txt +++ b/opencl/test/unit_test/xe_hpg_core/dg2/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2021-2022 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -15,12 +15,10 @@ if(TESTS_DG2) ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/get_device_info_dg2.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hw_helper_tests_dg2.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/hw_info_tests_dg2.cpp ${CMAKE_CURRENT_SOURCE_DIR}/memory_manager_tests_dg2.cpp ${CMAKE_CURRENT_SOURCE_DIR}/sampler_tests_dg2.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_cmds_programming_dg2.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_device_caps_dg2.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_hw_info_config_dg2.cpp ) target_sources(igdrcl_tests PRIVATE ${IGDRCL_SRCS_tests_xe_hpg_core_dg2}) add_subdirectories() diff --git a/opencl/test/unit_test/xe_hpg_core/dg2/excludes_dg2.cpp b/opencl/test/unit_test/xe_hpg_core/dg2/excludes_dg2.cpp index 8e6f4c56a5..63a2f992dd 100644 --- a/opencl/test/unit_test/xe_hpg_core/dg2/excludes_dg2.cpp +++ b/opencl/test/unit_test/xe_hpg_core/dg2/excludes_dg2.cpp @@ -18,4 +18,5 @@ HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenAskedIfTile64With3 HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTestXeHpAndLater, givenXeHPAndLaterPlatformWhenAskedIfTile64With3DSurfaceOnBCSIsSupportedThenFalseIsReturned, IGFX_DG2); HWTEST_EXCLUDE_PRODUCT(WddmMemoryManagerSimpleTest, givenLinearStreamWhenItIsAllocatedThenItIsInLocalMemoryHasCpuPointerAndHasStandardHeap64kbAsGpuAddress, IGFX_DG2); HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, WhenAllowRenderCompressionIsCalledThenTrueIsReturned, IGFX_DG2); -HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, whenConvertingTimestampsToCsDomainThenNothingIsChanged, IGFX_DG2); \ No newline at end of file +HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, whenConvertingTimestampsToCsDomainThenNothingIsChanged, IGFX_DG2); +HWTEST_EXCLUDE_PRODUCT(HwHelperTestXeHPAndLater, GiveCcsNodeThenDefaultEngineTypeIsCcs, IGFX_DG2); diff --git a/opencl/test/unit_test/xe_hpg_core/dg2/hw_info_tests_dg2.cpp b/opencl/test/unit_test/xe_hpg_core/dg2/hw_info_tests_dg2.cpp deleted file mode 100644 index 39262bc86e..0000000000 --- a/opencl/test/unit_test/xe_hpg_core/dg2/hw_info_tests_dg2.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "shared/source/helpers/hw_helper.h" -#include "shared/source/helpers/hw_info.h" -#include "shared/test/common/helpers/default_hw_info.h" -#include "shared/test/common/test_macros/test.h" - -#include "opencl/test/unit_test/helpers/gtest_helpers.h" - -using namespace NEO; - -using Dg2ConfigHwInfoTests = ::testing::Test; - -DG2TEST_F(Dg2ConfigHwInfoTests, givenDg2ConfigWhenSetupHardwearInfoMultiTileThenGtSystemInfoIsSetCorrect) { - HardwareInfo hwInfo = *defaultHwInfo; - GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo; - - DG2_CONFIG::setupHardwareInfoMultiTile(&hwInfo, false, false); - EXPECT_EQ(8u, gtSystemInfo.CsrSizeInMb); - EXPECT_FALSE(gtSystemInfo.IsL3HashModeEnabled); - EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated); -} diff --git a/opencl/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp b/opencl/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp deleted file mode 100644 index 13d80ba868..0000000000 --- a/opencl/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (C) 2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "shared/source/helpers/hw_helper.h" -#include "shared/source/os_interface/hw_info_config.h" -#include "shared/test/common/helpers/debug_manager_state_restore.h" -#include "shared/test/common/helpers/default_hw_info.h" -#include "shared/test/common/test_macros/test.h" - -using namespace NEO; - -using Dg2HwInfoConfig = ::testing::Test; - -DG2TEST_F(Dg2HwInfoConfig, givenHwInfoErrorneousConfigStringThenThrow) { - HardwareInfo hwInfo = *defaultHwInfo; - GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo; - - uint64_t config = 0xdeadbeef; - gtSystemInfo = {0}; - EXPECT_ANY_THROW(hardwareInfoSetup[productFamily](&hwInfo, false, config)); - EXPECT_EQ(0u, gtSystemInfo.SliceCount); - EXPECT_EQ(0u, gtSystemInfo.SubSliceCount); - EXPECT_EQ(0u, gtSystemInfo.DualSubSliceCount); - EXPECT_EQ(0u, gtSystemInfo.EUCount); -} - -DG2TEST_F(Dg2HwInfoConfig, givenHwInfoConfigWhenAdditionalKernelExecInfoSupportCheckedThenCorrectValueIsReturned) { - const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily); - auto hwInfo = *defaultHwInfo; - EXPECT_FALSE(hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)); - - hwInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, hwInfo); - EXPECT_TRUE(hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)); -} - -HWTEST_EXCLUDE_PRODUCT(HwHelperTestXeHPAndLater, GiveCcsNodeThenDefaultEngineTypeIsCcs, IGFX_DG2); - -DG2TEST_F(Dg2HwInfoConfig, whenAdjustingDefaultEngineTypeThenSelectEngineTypeBasedOnRevisionId) { - auto hardwareInfo = *defaultHwInfo; - hardwareInfo.featureTable.flags.ftrCCSNode = true; - auto &hwHelper = HwHelper::get(renderCoreFamily); - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - - hardwareInfo.capabilityTable.defaultEngineType = defaultHwInfo->capabilityTable.defaultEngineType; - hardwareInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_A0, hardwareInfo); - hwHelper.adjustDefaultEngineType(&hardwareInfo); - EXPECT_EQ(aub_stream::ENGINE_RCS, hardwareInfo.capabilityTable.defaultEngineType); - - hardwareInfo.capabilityTable.defaultEngineType = defaultHwInfo->capabilityTable.defaultEngineType; - hardwareInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, hardwareInfo); - hwHelper.adjustDefaultEngineType(&hardwareInfo); - EXPECT_EQ(aub_stream::ENGINE_CCS, hardwareInfo.capabilityTable.defaultEngineType); -} - -DG2TEST_F(Dg2HwInfoConfig, givenA0OrA1SteppingWhenAskingIfWAIsRequiredThenReturnTrue) { - auto hwInfoConfig = HwInfoConfig::get(productFamily); - std::array, 4> revisions = { - {{REVISION_A0, true}, - {REVISION_A1, true}, - {REVISION_B, false}, - {REVISION_C, false}}}; - - for (const auto &[revision, paramBool] : revisions) { - auto hwInfo = *defaultHwInfo; - hwInfo.platform.usRevId = hwInfoConfig->getHwRevIdFromStepping(revision, hwInfo); - - hwInfoConfig->configureHardwareCustom(&hwInfo, nullptr); - - EXPECT_EQ(paramBool, hwInfoConfig->isDefaultEngineTypeAdjustmentRequired(hwInfo)); - EXPECT_EQ(paramBool, hwInfoConfig->isAllocationSizeAdjustmentRequired(hwInfo)); - EXPECT_EQ(paramBool, hwInfoConfig->isPrefetchDisablingRequired(hwInfo)); - } -} - -DG2TEST_F(Dg2HwInfoConfig, givenProgramPipeControlPriorToNonPipelinedStateCommandWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnCcsThenTrueIsReturned) { - DebugManagerStateRestore restorer; - DebugManager.flags.ProgramPipeControlPriorToNonPipelinedStateCommand.set(true); - - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - auto hwInfo = *defaultHwInfo; - auto isRcs = false; - - EXPECT_TRUE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); -} - -DG2TEST_F(Dg2HwInfoConfig, givenProgramPipeControlPriorToNonPipelinedStateCommandWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnRcsThenTrueIsReturned) { - DebugManagerStateRestore restorer; - DebugManager.flags.ProgramPipeControlPriorToNonPipelinedStateCommand.set(true); - - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - auto hwInfo = *defaultHwInfo; - auto isRcs = true; - - EXPECT_TRUE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); -} - -DG2TEST_F(Dg2HwInfoConfig, givenProgramPipeControlPriorToNonPipelinedStateCommandDisabledWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnRcsThenFalseIsReturned) { - DebugManagerStateRestore restorer; - DebugManager.flags.ProgramPipeControlPriorToNonPipelinedStateCommand.set(0); - - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - auto hwInfo = *defaultHwInfo; - auto isRcs = true; - - EXPECT_FALSE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); -} - -DG2TEST_F(Dg2HwInfoConfig, givenHwInfoConfigWithMultipleCSSWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnCcsThenTrueIsReturned) { - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - auto hwInfo = *defaultHwInfo; - hwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 2; - auto isRcs = false; - - EXPECT_TRUE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); -} - -DG2TEST_F(Dg2HwInfoConfig, givenHwInfoConfigWithMultipleCSSWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnRcsThenFalseIsReturned) { - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - auto hwInfo = *defaultHwInfo; - hwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 2; - auto isRcs = true; - - EXPECT_FALSE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); -} - -DG2TEST_F(Dg2HwInfoConfig, givenDg2WhenIsBlitterForImagesSupportedIsCalledThenTrueIsReturned) { - const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); - EXPECT_TRUE(hwInfoConfig.isBlitterForImagesSupported()); -} - -DG2TEST_F(Dg2HwInfoConfig, givenB0rCSteppingWhenAskingIfTile64With3DSurfaceOnBCSIsSupportedThenReturnTrue) { - auto hwInfoConfig = HwInfoConfig::get(productFamily); - std::array, 4> revisions = { - {{REVISION_A0, false}, - {REVISION_A1, false}, - {REVISION_B, false}, - {REVISION_C, true}}}; - - for (const auto &[revision, paramBool] : revisions) { - auto hwInfo = *defaultHwInfo; - hwInfo.platform.usRevId = hwInfoConfig->getHwRevIdFromStepping(revision, hwInfo); - - hwInfoConfig->configureHardwareCustom(&hwInfo, nullptr); - - EXPECT_EQ(paramBool, hwInfoConfig->isTile64With3DSurfaceOnBCSSupported(hwInfo)); - } -} - -DG2TEST_F(Dg2HwInfoConfig, givenA0SteppingAnd128EuWhenConfigureCalledThenDisableCompression) { - auto hwInfoConfig = HwInfoConfig::get(productFamily); - - for (uint8_t revision : {REVISION_A0, REVISION_A1}) { - for (uint32_t euCount : {127, 128, 129}) { - HardwareInfo hwInfo = *defaultHwInfo; - hwInfo.featureTable.flags.ftrE2ECompression = true; - - hwInfo.platform.usRevId = hwInfoConfig->getHwRevIdFromStepping(revision, hwInfo); - hwInfo.gtSystemInfo.EUCount = euCount; - - hwInfoConfig->configureHardwareCustom(&hwInfo, nullptr); - - auto compressionExpected = (euCount == 128) ? true : (revision != REVISION_A0); - - EXPECT_EQ(compressionExpected, hwInfo.capabilityTable.ftrRenderCompressedBuffers); - EXPECT_EQ(compressionExpected, hwInfo.capabilityTable.ftrRenderCompressedImages); - EXPECT_EQ(compressionExpected, hwInfoConfig->allowCompression(hwInfo)); - } - } -} diff --git a/shared/test/unit_test/xe_hpg_core/dg2/hw_info_config_tests_dg2.cpp b/shared/test/unit_test/xe_hpg_core/dg2/hw_info_config_tests_dg2.cpp index db7d9f9673..34601c7d57 100644 --- a/shared/test/unit_test/xe_hpg_core/dg2/hw_info_config_tests_dg2.cpp +++ b/shared/test/unit_test/xe_hpg_core/dg2/hw_info_config_tests_dg2.cpp @@ -5,7 +5,9 @@ * */ +#include "shared/source/helpers/hw_helper.h" #include "shared/source/os_interface/hw_info_config.h" +#include "shared/test/common/helpers/debug_manager_state_restore.h" #include "shared/test/common/helpers/default_hw_info.h" #include "shared/test/common/test_macros/test.h" @@ -21,4 +23,169 @@ DG2TEST_F(HwInfoConfigTestDg2, whenConvertingTimestampsToCsDomainThenGpuTicksAre hwInfoConfig->convertTimestampsFromOaToCsDomain(gpuTicks); EXPECT_EQ(expectedGpuTicks, gpuTicks); -} \ No newline at end of file +} + +DG2TEST_F(HwInfoConfigTestDg2, givenDg2ConfigWhenSetupHardwareInfoMultiTileThenGtSystemInfoIsSetCorrect) { + HardwareInfo hwInfo = *defaultHwInfo; + GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo; + + DG2_CONFIG::setupHardwareInfoMultiTile(&hwInfo, false, false); + EXPECT_EQ(8u, gtSystemInfo.CsrSizeInMb); + EXPECT_FALSE(gtSystemInfo.IsL3HashModeEnabled); + EXPECT_FALSE(gtSystemInfo.IsDynamicallyPopulated); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenHwInfoErrorneousConfigStringThenThrow) { + HardwareInfo hwInfo = *defaultHwInfo; + GT_SYSTEM_INFO >SystemInfo = hwInfo.gtSystemInfo; + + uint64_t config = 0xdeadbeef; + gtSystemInfo = {0}; + EXPECT_ANY_THROW(hardwareInfoSetup[productFamily](&hwInfo, false, config)); + EXPECT_EQ(0u, gtSystemInfo.SliceCount); + EXPECT_EQ(0u, gtSystemInfo.SubSliceCount); + EXPECT_EQ(0u, gtSystemInfo.DualSubSliceCount); + EXPECT_EQ(0u, gtSystemInfo.EUCount); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenHwInfoConfigWhenAdditionalKernelExecInfoSupportCheckedThenCorrectValueIsReturned) { + const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily); + auto hwInfo = *defaultHwInfo; + EXPECT_FALSE(hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)); + + hwInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, hwInfo); + EXPECT_TRUE(hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)); +} + +DG2TEST_F(HwInfoConfigTestDg2, whenAdjustingDefaultEngineTypeThenSelectEngineTypeBasedOnRevisionId) { + auto hardwareInfo = *defaultHwInfo; + hardwareInfo.featureTable.flags.ftrCCSNode = true; + auto &hwHelper = HwHelper::get(renderCoreFamily); + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + + hardwareInfo.capabilityTable.defaultEngineType = defaultHwInfo->capabilityTable.defaultEngineType; + hardwareInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_A0, hardwareInfo); + hwHelper.adjustDefaultEngineType(&hardwareInfo); + EXPECT_EQ(aub_stream::ENGINE_RCS, hardwareInfo.capabilityTable.defaultEngineType); + + hardwareInfo.capabilityTable.defaultEngineType = defaultHwInfo->capabilityTable.defaultEngineType; + hardwareInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, hardwareInfo); + hwHelper.adjustDefaultEngineType(&hardwareInfo); + EXPECT_EQ(aub_stream::ENGINE_CCS, hardwareInfo.capabilityTable.defaultEngineType); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenA0OrA1SteppingWhenAskingIfWAIsRequiredThenReturnTrue) { + auto hwInfoConfig = HwInfoConfig::get(productFamily); + std::array, 4> revisions = { + {{REVISION_A0, true}, + {REVISION_A1, true}, + {REVISION_B, false}, + {REVISION_C, false}}}; + + for (const auto &[revision, paramBool] : revisions) { + auto hwInfo = *defaultHwInfo; + hwInfo.platform.usRevId = hwInfoConfig->getHwRevIdFromStepping(revision, hwInfo); + + hwInfoConfig->configureHardwareCustom(&hwInfo, nullptr); + + EXPECT_EQ(paramBool, hwInfoConfig->isDefaultEngineTypeAdjustmentRequired(hwInfo)); + EXPECT_EQ(paramBool, hwInfoConfig->isAllocationSizeAdjustmentRequired(hwInfo)); + EXPECT_EQ(paramBool, hwInfoConfig->isPrefetchDisablingRequired(hwInfo)); + } +} + +DG2TEST_F(HwInfoConfigTestDg2, givenProgramPipeControlPriorToNonPipelinedStateCommandWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnCcsThenTrueIsReturned) { + DebugManagerStateRestore restorer; + DebugManager.flags.ProgramPipeControlPriorToNonPipelinedStateCommand.set(true); + + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + auto hwInfo = *defaultHwInfo; + auto isRcs = false; + + EXPECT_TRUE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenProgramPipeControlPriorToNonPipelinedStateCommandWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnRcsThenTrueIsReturned) { + DebugManagerStateRestore restorer; + DebugManager.flags.ProgramPipeControlPriorToNonPipelinedStateCommand.set(true); + + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + auto hwInfo = *defaultHwInfo; + auto isRcs = true; + + EXPECT_TRUE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenProgramPipeControlPriorToNonPipelinedStateCommandDisabledWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnRcsThenFalseIsReturned) { + DebugManagerStateRestore restorer; + DebugManager.flags.ProgramPipeControlPriorToNonPipelinedStateCommand.set(0); + + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + auto hwInfo = *defaultHwInfo; + auto isRcs = true; + + EXPECT_FALSE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenHwInfoConfigWithMultipleCSSWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnCcsThenTrueIsReturned) { + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + auto hwInfo = *defaultHwInfo; + hwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 2; + auto isRcs = false; + + EXPECT_TRUE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenHwInfoConfigWithMultipleCSSWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnRcsThenFalseIsReturned) { + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + auto hwInfo = *defaultHwInfo; + hwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 2; + auto isRcs = true; + + EXPECT_FALSE(hwInfoConfig.isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, isRcs)); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenDg2WhenIsBlitterForImagesSupportedIsCalledThenTrueIsReturned) { + const auto &hwInfoConfig = *HwInfoConfig::get(productFamily); + EXPECT_TRUE(hwInfoConfig.isBlitterForImagesSupported()); +} + +DG2TEST_F(HwInfoConfigTestDg2, givenB0rCSteppingWhenAskingIfTile64With3DSurfaceOnBCSIsSupportedThenReturnTrue) { + auto hwInfoConfig = HwInfoConfig::get(productFamily); + std::array, 4> revisions = { + {{REVISION_A0, false}, + {REVISION_A1, false}, + {REVISION_B, false}, + {REVISION_C, true}}}; + + for (const auto &[revision, paramBool] : revisions) { + auto hwInfo = *defaultHwInfo; + hwInfo.platform.usRevId = hwInfoConfig->getHwRevIdFromStepping(revision, hwInfo); + + hwInfoConfig->configureHardwareCustom(&hwInfo, nullptr); + + EXPECT_EQ(paramBool, hwInfoConfig->isTile64With3DSurfaceOnBCSSupported(hwInfo)); + } +} + +DG2TEST_F(HwInfoConfigTestDg2, givenA0SteppingAnd128EuWhenConfigureCalledThenDisableCompression) { + auto hwInfoConfig = HwInfoConfig::get(productFamily); + + for (uint8_t revision : {REVISION_A0, REVISION_A1}) { + for (uint32_t euCount : {127, 128, 129}) { + HardwareInfo hwInfo = *defaultHwInfo; + hwInfo.featureTable.flags.ftrE2ECompression = true; + + hwInfo.platform.usRevId = hwInfoConfig->getHwRevIdFromStepping(revision, hwInfo); + hwInfo.gtSystemInfo.EUCount = euCount; + + hwInfoConfig->configureHardwareCustom(&hwInfo, nullptr); + + auto compressionExpected = (euCount == 128) ? true : (revision != REVISION_A0); + + EXPECT_EQ(compressionExpected, hwInfo.capabilityTable.ftrRenderCompressedBuffers); + EXPECT_EQ(compressionExpected, hwInfo.capabilityTable.ftrRenderCompressedImages); + EXPECT_EQ(compressionExpected, hwInfoConfig->allowCompression(hwInfo)); + } + } +}