From cf35f8b40ee32858dbbe63701c0f16eafd6508d9 Mon Sep 17 00:00:00 2001 From: Maciej Plewka Date: Wed, 24 Sep 2025 12:44:57 +0000 Subject: [PATCH] fix: wa for multi ccs execution on bmg Related-To: NEO-15771 Signed-off-by: Maciej Plewka --- .../test_preamble_xe2_hpg_core.cpp | 20 ++++++++++++++++++- .../root_device_environment.cpp | 5 ++++- .../root_device_environment.h | 1 + .../helpers/preamble_xehp_and_later.inl | 4 +++- shared/source/release_helper/release_helper.h | 2 ++ .../release_helper/release_helper_2001.cpp | 5 +++++ .../release_helper/release_helper_2002.cpp | 5 +++++ .../release_helper/release_helper_base.inl | 5 +++++ .../release_helper_common_xe2_hpg.inl | 3 +-- .../test/common/mocks/mock_release_helper.h | 1 + .../release_helper_12_55_tests.cpp | 4 ++++ .../release_helper_12_56_tests.cpp | 4 ++++ .../release_helper_12_57_tests.cpp | 4 ++++ .../release_helper_12_60_tests.cpp | 4 ++++ .../release_helper_12_61_tests.cpp | 4 ++++ .../release_helper_12_70_tests.cpp | 4 ++++ .../release_helper_12_71_tests.cpp | 4 ++++ .../release_helper_12_74_tests.cpp | 4 ++++ .../release_helper_20_01_tests.cpp | 4 ++++ .../release_helper_20_02_tests.cpp | 4 ++++ .../release_helper_20_04_tests.cpp | 4 ++++ .../release_helper_30_00_tests.cpp | 4 ++++ .../release_helper_30_01_tests.cpp | 4 ++++ .../release_helper_30_03_tests.cpp | 4 ++++ .../release_helper_tests_base.cpp | 18 +++++++++++++++++ .../release_helper_tests_base.h | 2 ++ 26 files changed, 122 insertions(+), 5 deletions(-) diff --git a/opencl/test/unit_test/xe2_hpg_core/test_preamble_xe2_hpg_core.cpp b/opencl/test/unit_test/xe2_hpg_core/test_preamble_xe2_hpg_core.cpp index e41d5f7e5f..0cda658e6b 100644 --- a/opencl/test/unit_test/xe2_hpg_core/test_preamble_xe2_hpg_core.cpp +++ b/opencl/test/unit_test/xe2_hpg_core/test_preamble_xe2_hpg_core.cpp @@ -27,7 +27,7 @@ XE2_HPG_CORETEST_F(PreambleCfeState, givenXe2HpgCoreAndConcurrentKernelExecution EXPECT_FALSE(cfeState->getSingleSliceDispatchCcsMode()); } -XE2_HPG_CORETEST_F(PreambleCfeState, givenXe2HpgCoreAndDefaultKernelExecutionTypeWhenCallingProgramVFEStateThenSingleSpliceDispatchCcsModeIsDisabled) { +XE2_HPG_CORETEST_F(PreambleCfeState, givenXe2HpgCoreAndDefaultKernelExecutionTypeWhenCallingProgramVFEStateThenSingleSliceDispatchCcsModeIsDisabled) { using CFE_STATE = typename FamilyType::CFE_STATE; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::renderCompute, nullptr); @@ -42,3 +42,21 @@ XE2_HPG_CORETEST_F(PreambleCfeState, givenXe2HpgCoreAndDefaultKernelExecutionTyp EXPECT_FALSE(cfeState->getComputeOverdispatchDisable()); EXPECT_FALSE(cfeState->getSingleSliceDispatchCcsMode()); } + +BMGTEST_F(PreambleCfeState, givenXe2HpgCoreWithMultiCCSAndDefaultKernelExecutionTypeWhenCallingProgramVFEStateThenSingleSliceDispatchCcsModeIsEnabled) { + using CFE_STATE = typename FamilyType::CFE_STATE; + + auto mutableHwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); + mutableHwInfo->gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 2; + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::renderCompute, nullptr); + StreamProperties streamProperties{}; + streamProperties.initSupport(pDevice->getRootDeviceEnvironment()); + streamProperties.frontEndState.setPropertiesAll(false, false, false); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 0, streamProperties); + parseCommands(linearStream); + auto cfeStateIt = find(cmdList.begin(), cmdList.end()); + ASSERT_NE(cmdList.end(), cfeStateIt); + auto cfeState = reinterpret_cast(*cfeStateIt); + EXPECT_FALSE(cfeState->getComputeOverdispatchDisable()); + EXPECT_TRUE(cfeState->getSingleSliceDispatchCcsMode()); +} \ No newline at end of file diff --git a/shared/source/execution_environment/root_device_environment.cpp b/shared/source/execution_environment/root_device_environment.cpp index e26540a3b0..b9fe3d8e29 100644 --- a/shared/source/execution_environment/root_device_environment.cpp +++ b/shared/source/execution_environment/root_device_environment.cpp @@ -247,7 +247,6 @@ BuiltIns *RootDeviceEnvironment::getBuiltIns() { } void RootDeviceEnvironment::setNumberOfCcs(uint32_t numberOfCcs) { - hwInfo->gtSystemInfo.CCSInfo.NumberOfCCSEnabled = std::min(hwInfo->gtSystemInfo.CCSInfo.NumberOfCCSEnabled, numberOfCcs); limitedNumberOfCcs = true; if (aubCenter) { @@ -255,6 +254,10 @@ void RootDeviceEnvironment::setNumberOfCcs(uint32_t numberOfCcs) { } } +uint32_t RootDeviceEnvironment::getNumberOfCcs() const { + return hwInfo->gtSystemInfo.CCSInfo.NumberOfCCSEnabled; +} + bool RootDeviceEnvironment::isNumberOfCcsLimited() const { return limitedNumberOfCcs; } diff --git a/shared/source/execution_environment/root_device_environment.h b/shared/source/execution_environment/root_device_environment.h index df5fd790ce..aed0155eb9 100644 --- a/shared/source/execution_environment/root_device_environment.h +++ b/shared/source/execution_environment/root_device_environment.h @@ -82,6 +82,7 @@ struct RootDeviceEnvironment : NonCopyableClass { AssertHandler *getAssertHandler(Device *neoDevice); void createBindlessHeapsHelper(Device *rootDevice, bool availableDevices); void setNumberOfCcs(uint32_t numberOfCcs); + uint32_t getNumberOfCcs() const; bool isNumberOfCcsLimited() const; void setRcsExposure(); void initProductHelper(); diff --git a/shared/source/helpers/preamble_xehp_and_later.inl b/shared/source/helpers/preamble_xehp_and_later.inl index c6c0b2eaee..6889695a4a 100644 --- a/shared/source/helpers/preamble_xehp_and_later.inl +++ b/shared/source/helpers/preamble_xehp_and_later.inl @@ -13,6 +13,7 @@ #include "shared/source/helpers/pipe_control_args.h" #include "shared/source/helpers/pipeline_select_helper.h" #include "shared/source/helpers/preamble_base.inl" +#include "shared/source/release_helper/release_helper.h" namespace NEO { @@ -64,8 +65,9 @@ void PreambleHelper::programVfeState(void *pVfeState, cmd.setMaximumNumberOfThreads(maxFrontEndThreads); cmd.setComputeOverdispatchDisable(streamProperties.frontEndState.disableOverdispatch.value == 1); + auto singleSliceDispatchCcsMode = streamProperties.frontEndState.singleSliceDispatchCcsMode.value == 1 || (rootDeviceEnvironment.getNumberOfCcs() > 1 && rootDeviceEnvironment.getReleaseHelper()->isSingleDispatchRequiredForMultiCCS()); - PreambleHelper::setSingleSliceDispatchMode(&cmd, streamProperties.frontEndState.singleSliceDispatchCcsMode.value == 1); + PreambleHelper::setSingleSliceDispatchMode(&cmd, singleSliceDispatchCcsMode); appendProgramVFEState(rootDeviceEnvironment, streamProperties, &cmd); diff --git a/shared/source/release_helper/release_helper.h b/shared/source/release_helper/release_helper.h index c32d3685a3..c857b322a8 100644 --- a/shared/source/release_helper/release_helper.h +++ b/shared/source/release_helper/release_helper.h @@ -70,6 +70,7 @@ class ReleaseHelper { virtual uint32_t adjustMaxThreadsPerEuCount(uint32_t maxThreadsPerEuCount, uint32_t grfCount) const = 0; virtual bool shouldQueryPeerAccess() const = 0; virtual bool isSpirSupported() const = 0; + virtual bool isSingleDispatchRequiredForMultiCCS() const = 0; protected: ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {} @@ -119,6 +120,7 @@ class ReleaseHelperHw : public ReleaseHelper { uint32_t adjustMaxThreadsPerEuCount(uint32_t maxThreadsPerEuCount, uint32_t grfCount) const override; bool shouldQueryPeerAccess() const override; bool isSpirSupported() const override; + bool isSingleDispatchRequiredForMultiCCS() const override; protected: ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {} diff --git a/shared/source/release_helper/release_helper_2001.cpp b/shared/source/release_helper/release_helper_2001.cpp index e4bc947079..f4d73bdf83 100644 --- a/shared/source/release_helper/release_helper_2001.cpp +++ b/shared/source/release_helper/release_helper_2001.cpp @@ -54,6 +54,11 @@ bool ReleaseHelperHw::shouldQueryPeerAccess() const { return true; } +template <> +bool ReleaseHelperHw::isSingleDispatchRequiredForMultiCCS() const { + return true; +} + } // namespace NEO #include "shared/source/release_helper/release_helper_common_xe2_hpg.inl" diff --git a/shared/source/release_helper/release_helper_2002.cpp b/shared/source/release_helper/release_helper_2002.cpp index 1ad236a0ea..3271300c79 100644 --- a/shared/source/release_helper/release_helper_2002.cpp +++ b/shared/source/release_helper/release_helper_2002.cpp @@ -54,6 +54,11 @@ bool ReleaseHelperHw::shouldQueryPeerAccess() const { return true; } +template <> +bool ReleaseHelperHw::isSingleDispatchRequiredForMultiCCS() const { + return true; +} + } // namespace NEO #include "shared/source/release_helper/release_helper_common_xe2_hpg.inl" diff --git a/shared/source/release_helper/release_helper_base.inl b/shared/source/release_helper/release_helper_base.inl index 73b3942c27..d0dcdc7e57 100644 --- a/shared/source/release_helper/release_helper_base.inl +++ b/shared/source/release_helper/release_helper_base.inl @@ -196,4 +196,9 @@ bool ReleaseHelperHw::isSpirSupported() const { return true; } +template +bool ReleaseHelperHw::isSingleDispatchRequiredForMultiCCS() const { + return false; +} + } // namespace NEO diff --git a/shared/source/release_helper/release_helper_common_xe2_hpg.inl b/shared/source/release_helper/release_helper_common_xe2_hpg.inl index d6a5d43786..fde7d79add 100644 --- a/shared/source/release_helper/release_helper_common_xe2_hpg.inl +++ b/shared/source/release_helper/release_helper_common_xe2_hpg.inl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -32,5 +32,4 @@ template <> bool ReleaseHelperHw::isGlobalBindlessAllocatorEnabled() const { return true; } - } // namespace NEO diff --git a/shared/test/common/mocks/mock_release_helper.h b/shared/test/common/mocks/mock_release_helper.h index db43435397..5a6b37d5e5 100644 --- a/shared/test/common/mocks/mock_release_helper.h +++ b/shared/test/common/mocks/mock_release_helper.h @@ -48,6 +48,7 @@ class MockReleaseHelper : public ReleaseHelper { ADDMETHOD_CONST_NOBASE_VOIDRETURN(adjustRTDispatchGlobals, (void *rtDispatchGlobals, uint32_t rtStacksPerDss, bool heaplessEnabled, uint32_t maxBvhLevels)); ADDMETHOD_CONST_NOBASE(shouldQueryPeerAccess, bool, false, ()); ADDMETHOD_CONST_NOBASE(isSpirSupported, bool, true, ()); + ADDMETHOD_CONST_NOBASE(isSingleDispatchRequiredForMultiCCS, bool, false, ()); const SizeToPreferredSlmValueArray &getSizeToPreferredSlmValue(bool isHeapless) const override { static SizeToPreferredSlmValueArray sizeToPreferredSlmValue = {}; diff --git a/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp index a5324f5afc..6137b781fe 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp @@ -126,3 +126,7 @@ TEST_F(ReleaseHelper1255Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1255Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1255Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp index 1657361578..073753038b 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp @@ -126,3 +126,7 @@ TEST_F(ReleaseHelper1256Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1256Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1256Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp index ea84345fb6..be44cea726 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp @@ -126,3 +126,7 @@ TEST_F(ReleaseHelper1257Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1257Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1257Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp index dca6b7cfce..379856dcfb 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp @@ -110,3 +110,7 @@ TEST_F(ReleaseHelper1260Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1260Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1260Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp index fbb41f7c8b..430cf35cb1 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp @@ -109,3 +109,7 @@ TEST_F(ReleaseHelper1261Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1261Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1261Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp index 3eb00c5f2c..d1f0951ed4 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp @@ -120,3 +120,7 @@ TEST_F(ReleaseHelper1270Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1270Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1270Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp index 6b1caaf05d..eea0ce7ee0 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp @@ -120,3 +120,7 @@ TEST_F(ReleaseHelper1271Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1271Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1271Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp index efb1db81b9..48086c7ac8 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp @@ -126,3 +126,7 @@ TEST_F(ReleaseHelper1274Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper1274Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper1274Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp b/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp index b190a032d3..2aef052042 100644 --- a/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp @@ -119,3 +119,7 @@ TEST_F(ReleaseHelper2001Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper2001Tests, whenShouldQueryPeerAccessCalledThenTrueReturned) { whenShouldQueryPeerAccessCalledThenTrueReturned(); } + +TEST_F(ReleaseHelper2001Tests, whenIsSingleDispatchRequiredForMultiCCSThenTrueReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp b/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp index f5a9a5b314..6063e57b79 100644 --- a/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp @@ -119,3 +119,7 @@ TEST_F(ReleaseHelper2002Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper2002Tests, whenShouldQueryPeerAccessCalledThenTrueReturned) { whenShouldQueryPeerAccessCalledThenTrueReturned(); } + +TEST_F(ReleaseHelper2002Tests, whenIsSingleDispatchRequiredForMultiCCSThenTrueReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp b/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp index 9b3cce3ce8..aa301221ba 100644 --- a/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp @@ -122,3 +122,7 @@ TEST_F(ReleaseHelper2004Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper2004Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper2004Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp b/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp index 0b51214126..0a09c7979c 100644 --- a/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp @@ -120,3 +120,7 @@ TEST_F(ReleaseHelper3000Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper3000Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper3000Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp b/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp index af7e542bf1..a7fbc22b1f 100644 --- a/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp @@ -120,3 +120,7 @@ TEST_F(ReleaseHelper3001Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper3001Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper3001Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp b/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp index 75567e302e..e60c8c4923 100644 --- a/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp @@ -120,3 +120,7 @@ TEST_F(ReleaseHelper3003Tests, whenCallingAdjustMaxThreadsPerEuCountThenCorrectV TEST_F(ReleaseHelper3003Tests, whenShouldQueryPeerAccessCalledThenFalseReturned) { whenShouldQueryPeerAccessCalledThenFalseReturned(); } + +TEST_F(ReleaseHelper3003Tests, whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned) { + whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_tests_base.cpp b/shared/test/unit_test/release_helper/release_helper_tests_base.cpp index cb0d8bfde6..4b2bd8df8a 100644 --- a/shared/test/unit_test/release_helper/release_helper_tests_base.cpp +++ b/shared/test/unit_test/release_helper/release_helper_tests_base.cpp @@ -214,3 +214,21 @@ void ReleaseHelperTestsBase::whenShouldQueryPeerAccessCalledThenTrueReturned() { EXPECT_TRUE(releaseHelper->shouldQueryPeerAccess()); } } + +void ReleaseHelperTestsBase::whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned() { + for (auto &revision : getRevisions()) { + ipVersion.revision = revision; + releaseHelper = ReleaseHelper::create(ipVersion); + ASSERT_NE(nullptr, releaseHelper); + EXPECT_FALSE(releaseHelper->isSingleDispatchRequiredForMultiCCS()); + } +} + +void ReleaseHelperTestsBase::whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned() { + for (auto &revision : getRevisions()) { + ipVersion.revision = revision; + releaseHelper = ReleaseHelper::create(ipVersion); + ASSERT_NE(nullptr, releaseHelper); + EXPECT_TRUE(releaseHelper->isSingleDispatchRequiredForMultiCCS()); + } +} \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_tests_base.h b/shared/test/unit_test/release_helper/release_helper_tests_base.h index 8b7dc8c548..6489586c90 100644 --- a/shared/test/unit_test/release_helper/release_helper_tests_base.h +++ b/shared/test/unit_test/release_helper/release_helper_tests_base.h @@ -39,6 +39,8 @@ struct ReleaseHelperTestsBase : public ::testing::Test { void whenCallingAdjustMaxThreadsPerEuCountThenCorrectValueIsReturned(); void whenShouldQueryPeerAccessCalledThenFalseReturned(); void whenShouldQueryPeerAccessCalledThenTrueReturned(); + void whenIsSingleDispatchRequiredForMultiCCSCalledThenFalseReturned(); + void whenIsSingleDispatchRequiredForMultiCCSCalledThenTrueReturned(); virtual std::vector getRevisions() = 0; std::unique_ptr releaseHelper;