diff --git a/shared/source/command_stream/definitions/stream_properties.inl b/shared/source/command_stream/definitions/stream_properties.inl index 23e03badcd..92fa8c8e8f 100644 --- a/shared/source/command_stream/definitions/stream_properties.inl +++ b/shared/source/command_stream/definitions/stream_properties.inl @@ -68,4 +68,26 @@ struct FrontEndProperties { bool propertiesSupportLoaded = false; }; +struct PipelineSelectPropertiesSupport { + bool modeSelected = false; + bool mediaSamplerDopClockGate = false; + bool systolicMode = false; +}; + +struct PipelineSelectProperties { + StreamProperty modeSelected{}; + StreamProperty mediaSamplerDopClockGate{}; + StreamProperty systolicMode{}; + + void setProperties(bool modeSelected, bool mediaSamplerDopClockGate, bool systolicMode, const HardwareInfo &hwInfo); + void setProperties(const PipelineSelectProperties &properties); + bool isDirty() const; + + protected: + void clearIsDirty(); + + PipelineSelectPropertiesSupport pipelineSelectPropertiesSupport = {}; + bool propertiesSupportLoaded = false; +}; + } // namespace NEO diff --git a/shared/source/command_stream/stream_properties.cpp b/shared/source/command_stream/stream_properties.cpp index 55e539ebd5..b89704ae8b 100644 --- a/shared/source/command_stream/stream_properties.cpp +++ b/shared/source/command_stream/stream_properties.cpp @@ -119,7 +119,7 @@ void FrontEndProperties::setProperties(bool isCooperativeKernel, bool disableEUF this->disableEUFusion.set(disableEUFusion); } - if (frontEndPropertiesSupport.disableOverdispatch) { + if (this->frontEndPropertiesSupport.disableOverdispatch) { this->disableOverdispatch.set(disableOverdispatch); } @@ -160,3 +160,43 @@ void FrontEndProperties::clearIsDirty() { singleSliceDispatchCcsMode.isDirty = false; computeDispatchAllWalkerEnable.isDirty = false; } + +void PipelineSelectProperties::setProperties(bool modeSelected, bool mediaSamplerDopClockGate, bool systolicMode, const HardwareInfo &hwInfo) { + if (this->propertiesSupportLoaded == false) { + auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily); + hwInfoConfig.fillPipelineSelectPropertiesSupportStructure(this->pipelineSelectPropertiesSupport, hwInfo); + this->propertiesSupportLoaded = true; + } + + clearIsDirty(); + + if (this->pipelineSelectPropertiesSupport.modeSelected) { + this->modeSelected.set(modeSelected); + } + + if (this->pipelineSelectPropertiesSupport.mediaSamplerDopClockGate) { + this->mediaSamplerDopClockGate.set(mediaSamplerDopClockGate); + } + + if (this->pipelineSelectPropertiesSupport.systolicMode) { + this->systolicMode.set(systolicMode); + } +} + +void PipelineSelectProperties::setProperties(const PipelineSelectProperties &properties) { + clearIsDirty(); + + modeSelected.set(properties.modeSelected.value); + mediaSamplerDopClockGate.set(properties.mediaSamplerDopClockGate.value); + systolicMode.set(properties.systolicMode.value); +} + +bool PipelineSelectProperties::isDirty() const { + return modeSelected.isDirty || mediaSamplerDopClockGate.isDirty || systolicMode.isDirty; +} + +void PipelineSelectProperties::clearIsDirty() { + modeSelected.isDirty = false; + mediaSamplerDopClockGate.isDirty = false; + systolicMode.isDirty = false; +} diff --git a/shared/source/command_stream/stream_properties.h b/shared/source/command_stream/stream_properties.h index ab9aa7c570..1ac782f89c 100644 --- a/shared/source/command_stream/stream_properties.h +++ b/shared/source/command_stream/stream_properties.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 Intel Corporation + * Copyright (C) 2021-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -17,6 +17,7 @@ namespace NEO { struct StreamProperties { StateComputeModeProperties stateComputeMode{}; FrontEndProperties frontEndState{}; + PipelineSelectProperties pipelineSelect{}; }; } // namespace NEO diff --git a/shared/source/gen11/hw_cmds_base.h b/shared/source/gen11/hw_cmds_base.h index d79dc58ddd..fdb3578c40 100644 --- a/shared/source/gen11/hw_cmds_base.h +++ b/shared/source/gen11/hw_cmds_base.h @@ -49,7 +49,9 @@ struct Gen11 { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = true; + static constexpr bool systolicMode = false; }; struct PreemptionDebugSupport { diff --git a/shared/source/gen12lp/hw_cmds_adlp.h b/shared/source/gen12lp/hw_cmds_adlp.h index a71a050135..9bc67bc7b4 100644 --- a/shared/source/gen12lp/hw_cmds_adlp.h +++ b/shared/source/gen12lp/hw_cmds_adlp.h @@ -24,6 +24,12 @@ struct ADLP : public Gen12LpFamily { static void (*setupHardwareInfo)(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable, uint64_t hwInfoConfig); static void setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo); static void setupHardwareInfoBase(HardwareInfo *hwInfo, bool setupFeatureTableAndWorkaroundTable); + + struct PipelineSelectStateSupport { + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = true; + static constexpr bool systolicMode = true; + }; }; class AdlpHwConfig : public ADLP { diff --git a/shared/source/gen12lp/hw_cmds_base.h b/shared/source/gen12lp/hw_cmds_base.h index d444ee2290..504b11bcd7 100644 --- a/shared/source/gen12lp/hw_cmds_base.h +++ b/shared/source/gen12lp/hw_cmds_base.h @@ -52,7 +52,9 @@ struct Gen12Lp { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = true; + static constexpr bool systolicMode = false; }; struct PreemptionDebugSupport { diff --git a/shared/source/gen8/hw_cmds_base.h b/shared/source/gen8/hw_cmds_base.h index 322b5f4870..38cf91971a 100644 --- a/shared/source/gen8/hw_cmds_base.h +++ b/shared/source/gen8/hw_cmds_base.h @@ -51,7 +51,9 @@ struct Gen8 { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = false; + static constexpr bool systolicMode = false; }; struct PreemptionDebugSupport { diff --git a/shared/source/gen9/hw_cmds_base.h b/shared/source/gen9/hw_cmds_base.h index f483165fbf..dbde7537ed 100644 --- a/shared/source/gen9/hw_cmds_base.h +++ b/shared/source/gen9/hw_cmds_base.h @@ -50,7 +50,9 @@ struct Gen9 { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = true; + static constexpr bool systolicMode = false; }; struct PreemptionDebugSupport { diff --git a/shared/source/os_interface/hw_info_config.h b/shared/source/os_interface/hw_info_config.h index 2b3bc04d5c..691a08c60f 100644 --- a/shared/source/os_interface/hw_info_config.h +++ b/shared/source/os_interface/hw_info_config.h @@ -19,15 +19,16 @@ enum PRODUCT_CONFIG : uint32_t; namespace NEO { -struct HardwareInfo; struct FrontEndPropertiesSupport; +struct HardwareInfo; +struct PipelineSelectArgs; +struct PipelineSelectPropertiesSupport; struct StateComputeModeProperties; struct StateComputeModePropertiesSupport; -struct PipelineSelectArgs; -class OSInterface; class HwInfoConfig; class GraphicsAllocation; class MemoryManager; +class OSInterface; enum class DriverModelType; extern HwInfoConfig *hwInfoConfigFactory[IGFX_MAX_PRODUCT]; @@ -160,8 +161,13 @@ class HwInfoConfig { virtual bool getPreemptionDbgPropertyStateSipSupport() const = 0; virtual bool getPreemptionDbgPropertyCsrSurfaceSupport() const = 0; + virtual bool getPipelineSelectPropertyModeSelectedSupport() const = 0; + virtual bool getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const = 0; + virtual bool getPipelineSelectPropertySystolicModeSupport() const = 0; + virtual void fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) = 0; virtual void fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) = 0; + virtual void fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) = 0; MOCKABLE_VIRTUAL ~HwInfoConfig() = default; @@ -291,6 +297,10 @@ class HwInfoConfigHw : public HwInfoConfig { bool getPreemptionDbgPropertyStateSipSupport() const override; bool getPreemptionDbgPropertyCsrSurfaceSupport() const override; + bool getPipelineSelectPropertyModeSelectedSupport() const override; + bool getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const override; + bool getPipelineSelectPropertySystolicModeSupport() const override; + void fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) override; void fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) override; @@ -304,6 +314,7 @@ class HwInfoConfigHw : public HwInfoConfig { bool getHostMemCapabilitiesSupported(const HardwareInfo *hwInfo); LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override; void fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) override; + void fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) override; }; template diff --git a/shared/source/os_interface/hw_info_config.inl b/shared/source/os_interface/hw_info_config.inl index be27dc02d3..b4371cb36a 100644 --- a/shared/source/os_interface/hw_info_config.inl +++ b/shared/source/os_interface/hw_info_config.inl @@ -624,4 +624,29 @@ void HwInfoConfigHw::fillFrontEndPropertiesSupportStructure(FrontEnd propertiesSupport.singleSliceDispatchCcsMode = getFrontEndPropertySingleSliceDispatchCcsModeSupport(); } +template +bool HwInfoConfigHw::getPipelineSelectPropertyModeSelectedSupport() const { + using GfxProduct = typename HwMapper::GfxProduct; + return GfxProduct::PipelineSelectStateSupport::modeSelected; +} + +template +bool HwInfoConfigHw::getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const { + using GfxProduct = typename HwMapper::GfxProduct; + return GfxProduct::PipelineSelectStateSupport::mediaSamplerDopClockGate; +} + +template +bool HwInfoConfigHw::getPipelineSelectPropertySystolicModeSupport() const { + using GfxProduct = typename HwMapper::GfxProduct; + return GfxProduct::PipelineSelectStateSupport::systolicMode; +} + +template +void HwInfoConfigHw::fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) { + propertiesSupport.modeSelected = getPipelineSelectPropertyModeSelectedSupport(); + propertiesSupport.mediaSamplerDopClockGate = getPipelineSelectPropertyMediaSamplerDopClockGateSupport(); + propertiesSupport.systolicMode = getPipelineSelectPropertySystolicModeSupport(); +} + } // namespace NEO diff --git a/shared/source/xe_hp_core/hw_cmds_base.h b/shared/source/xe_hp_core/hw_cmds_base.h index 2250badb19..902274a9b1 100644 --- a/shared/source/xe_hp_core/hw_cmds_base.h +++ b/shared/source/xe_hp_core/hw_cmds_base.h @@ -58,7 +58,9 @@ struct XeHpCore { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = true; + static constexpr bool systolicMode = true; }; struct PreemptionDebugSupport { diff --git a/shared/source/xe_hpc_core/hw_cmds_pvc.h b/shared/source/xe_hpc_core/hw_cmds_pvc.h index 2a21e370ff..20c74ab367 100644 --- a/shared/source/xe_hpc_core/hw_cmds_pvc.h +++ b/shared/source/xe_hpc_core/hw_cmds_pvc.h @@ -52,7 +52,9 @@ struct PVC : public XeHpcCoreFamily { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = false; + static constexpr bool systolicMode = true; }; struct PreemptionDebugSupport { diff --git a/shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h b/shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h index c35c781205..f461b1582e 100644 --- a/shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h +++ b/shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h @@ -58,7 +58,9 @@ struct XeHpgCore { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = true; + static constexpr bool modeSelected = true; + static constexpr bool mediaSamplerDopClockGate = false; + static constexpr bool systolicMode = true; }; struct PreemptionDebugSupport { diff --git a/shared/test/common/mocks/mock_hw_info_config.cpp b/shared/test/common/mocks/mock_hw_info_config.cpp index 65743f0dc4..c6d305c587 100644 --- a/shared/test/common/mocks/mock_hw_info_config.cpp +++ b/shared/test/common/mocks/mock_hw_info_config.cpp @@ -438,7 +438,9 @@ struct UnknownProduct { }; struct PipelineSelectStateSupport { - static constexpr bool commandSupport = false; + static constexpr bool modeSelected = false; + static constexpr bool mediaSamplerDopClockGate = false; + static constexpr bool systolicMode = false; }; struct PreemptionDebugSupport { diff --git a/shared/test/unit_test/command_stream/stream_properties_tests.cpp b/shared/test/unit_test/command_stream/stream_properties_tests.cpp index f2d99efb32..19fc6776ce 100644 --- a/shared/test/unit_test/command_stream/stream_properties_tests.cpp +++ b/shared/test/unit_test/command_stream/stream_properties_tests.cpp @@ -31,4 +31,12 @@ std::vector getAllFrontEndProperties(FrontEndProperties &prope return allProperties; } +std::vector getAllPipelineSelectProperties(PipelineSelectProperties &properties) { + std::vector allProperties; + allProperties.push_back(&properties.modeSelected); + allProperties.push_back(&properties.mediaSamplerDopClockGate); + allProperties.push_back(&properties.systolicMode); + return allProperties; +} + } // namespace NEO diff --git a/shared/test/unit_test/command_stream/stream_properties_tests_common.cpp b/shared/test/unit_test/command_stream/stream_properties_tests_common.cpp index 3f31600e3a..a43b07bac4 100644 --- a/shared/test/unit_test/command_stream/stream_properties_tests_common.cpp +++ b/shared/test/unit_test/command_stream/stream_properties_tests_common.cpp @@ -22,6 +22,11 @@ struct MockFrontEndProperties : public FrontEndProperties { using FrontEndProperties::propertiesSupportLoaded; }; +struct MockPipelineSelectProperties : public PipelineSelectProperties { + using PipelineSelectProperties::pipelineSelectPropertiesSupport; + using PipelineSelectProperties::propertiesSupportLoaded; +}; + TEST(StreamPropertiesTests, whenPropertyValueIsChangedThenProperStateIsSet) { NEO::StreamProperty streamProperty; @@ -191,13 +196,17 @@ void verifyIsDirty() { } TEST(StreamPropertiesTests, givenVariousStatesOfStateComputeModePropertiesWhenIsDirtyIsQueriedThenCorrectValueIsReturned) { - verifyIsDirty(); + verifyIsDirty(); } TEST(StreamPropertiesTests, givenVariousStatesOfFrontEndPropertiesWhenIsDirtyIsQueriedThenCorrectValueIsReturned) { verifyIsDirty(); } +TEST(StreamPropertiesTests, givenVariousStatesOfPipelineSelectPropertiesWhenIsDirtyIsQueriedThenCorrectValueIsReturned) { + verifyIsDirty(); +} + template getAllProperties> void verifySettingPropertiesFromOtherStruct() { PropertiesT propertiesDestination; @@ -242,6 +251,10 @@ TEST(StreamPropertiesTests, givenOtherFrontEndPropertiesStructWhenSetPropertiesI verifySettingPropertiesFromOtherStruct(); } +TEST(StreamPropertiesTests, givenOtherPipelineSelectPropertiesStructWhenSetPropertiesIsCalledThenCorrectValuesAreSet) { + verifySettingPropertiesFromOtherStruct(); +} + TEST(StreamPropertiesTests, givenSingleDispatchCcsFrontEndPropertyWhenSettingPropertyAndCheckIfSupportedThenExpectCorrectState) { FrontEndPropertiesSupport fePropertiesSupport{}; auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily); @@ -269,3 +282,56 @@ TEST(StreamPropertiesTests, givenSingleDispatchCcsFrontEndPropertyWhenSettingPro EXPECT_TRUE(feProperties.singleSliceDispatchCcsMode.isDirty); EXPECT_EQ(engineInstancedDevice, feProperties.singleSliceDispatchCcsMode.value); } + +TEST(StreamPropertiesTests, whenSettingPipelineSelectPropertiesThenCorrectValueIsSet) { + StreamProperties properties; + + PipelineSelectPropertiesSupport pipelineSelectPropertiesSupport = {}; + auto hwInfoConfig = HwInfoConfig::get(defaultHwInfo->platform.eProductFamily); + hwInfoConfig->fillPipelineSelectPropertiesSupportStructure(pipelineSelectPropertiesSupport, *defaultHwInfo); + + for (auto modeSelected : ::testing::Bool()) { + for (auto mediaSamplerDopClockGate : ::testing::Bool()) { + for (auto systolicMode : ::testing::Bool()) { + properties.pipelineSelect.setProperties(modeSelected, mediaSamplerDopClockGate, systolicMode, *defaultHwInfo); + + if (pipelineSelectPropertiesSupport.modeSelected) { + EXPECT_EQ(modeSelected, properties.pipelineSelect.modeSelected.value); + } else { + EXPECT_EQ(-1, properties.pipelineSelect.modeSelected.value); + } + if (pipelineSelectPropertiesSupport.mediaSamplerDopClockGate) { + EXPECT_EQ(mediaSamplerDopClockGate, properties.pipelineSelect.mediaSamplerDopClockGate.value); + } else { + EXPECT_EQ(-1, properties.pipelineSelect.mediaSamplerDopClockGate.value); + } + if (pipelineSelectPropertiesSupport.systolicMode) { + EXPECT_EQ(systolicMode, properties.pipelineSelect.systolicMode.value); + } else { + EXPECT_EQ(-1, properties.pipelineSelect.systolicMode.value); + } + } + } + } +} + +TEST(StreamPropertiesTests, givenModeSelectPipelineSelectPropertyNotSupportedWhenSettingPropertyAndCheckIfDirtyThenExpectCleanState) { + MockPipelineSelectProperties pipeProperties{}; + pipeProperties.propertiesSupportLoaded = true; + pipeProperties.pipelineSelectPropertiesSupport.modeSelected = false; + pipeProperties.pipelineSelectPropertiesSupport.mediaSamplerDopClockGate = true; + pipeProperties.pipelineSelectPropertiesSupport.systolicMode = true; + + constexpr bool constState = false; + bool changingState = false; + pipeProperties.setProperties(changingState, constState, constState, *defaultHwInfo); + + // expect dirty as media and systolic changes from initial registered + EXPECT_TRUE(pipeProperties.isDirty()); + + changingState = !changingState; + pipeProperties.setProperties(changingState, constState, constState, *defaultHwInfo); + + // expect clean as changed modeSelected is not supported + EXPECT_FALSE(pipeProperties.isDirty()); +} diff --git a/shared/test/unit_test/command_stream/stream_properties_tests_common.h b/shared/test/unit_test/command_stream/stream_properties_tests_common.h index a877e73caa..5539a6a307 100644 --- a/shared/test/unit_test/command_stream/stream_properties_tests_common.h +++ b/shared/test/unit_test/command_stream/stream_properties_tests_common.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 Intel Corporation + * Copyright (C) 2021-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -12,10 +12,12 @@ namespace NEO { struct FrontEndProperties; +struct PipelineSelectProperties; struct StateComputeModeProperties; struct StreamProperty; std::vector getAllStateComputeModeProperties(StateComputeModeProperties &properties); std::vector getAllFrontEndProperties(FrontEndProperties &properties); +std::vector getAllPipelineSelectProperties(PipelineSelectProperties &properties); } // namespace NEO diff --git a/shared/test/unit_test/gen11/ehl/test_hw_info_config_ehl.cpp b/shared/test/unit_test/gen11/ehl/test_hw_info_config_ehl.cpp index 93460a417f..12811dc217 100644 --- a/shared/test/unit_test/gen11/ehl/test_hw_info_config_ehl.cpp +++ b/shared/test/unit_test/gen11/ehl/test_hw_info_config_ehl.cpp @@ -106,4 +106,8 @@ EHLTEST_F(EhlHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen11/icllp/test_hw_info_config_icllp.cpp b/shared/test/unit_test/gen11/icllp/test_hw_info_config_icllp.cpp index 4745b26233..10f52e4d71 100644 --- a/shared/test/unit_test/gen11/icllp/test_hw_info_config_icllp.cpp +++ b/shared/test/unit_test/gen11/icllp/test_hw_info_config_icllp.cpp @@ -133,4 +133,8 @@ ICLLPTEST_F(IcllpHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupport EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen11/lkf/test_hw_info_config_lkf.cpp b/shared/test/unit_test/gen11/lkf/test_hw_info_config_lkf.cpp index 3a5c058fda..700721d3ad 100644 --- a/shared/test/unit_test/gen11/lkf/test_hw_info_config_lkf.cpp +++ b/shared/test/unit_test/gen11/lkf/test_hw_info_config_lkf.cpp @@ -125,4 +125,8 @@ LKFTEST_F(LkfHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen12lp/adln/test_hw_info_config_adln.cpp b/shared/test/unit_test/gen12lp/adln/test_hw_info_config_adln.cpp index 9d0690e1a7..fb3003ab8c 100644 --- a/shared/test/unit_test/gen12lp/adln/test_hw_info_config_adln.cpp +++ b/shared/test/unit_test/gen12lp/adln/test_hw_info_config_adln.cpp @@ -108,4 +108,8 @@ ADLNTEST_F(AdlnHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportTh EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen12lp/adlp/test_hw_info_config_adlp.cpp b/shared/test/unit_test/gen12lp/adlp/test_hw_info_config_adlp.cpp index 387ce40dbd..43d7088901 100644 --- a/shared/test/unit_test/gen12lp/adlp/test_hw_info_config_adlp.cpp +++ b/shared/test/unit_test/gen12lp/adlp/test_hw_info_config_adlp.cpp @@ -108,4 +108,8 @@ ADLPTEST_F(AdlpHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportTh EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen12lp/adls/test_hw_info_config_adls.cpp b/shared/test/unit_test/gen12lp/adls/test_hw_info_config_adls.cpp index 1c8886a7d2..dc1e18aad5 100644 --- a/shared/test/unit_test/gen12lp/adls/test_hw_info_config_adls.cpp +++ b/shared/test/unit_test/gen12lp/adls/test_hw_info_config_adls.cpp @@ -108,4 +108,8 @@ ADLSTEST_F(AdlsHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportTh EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen12lp/dg1/test_hw_info_config_dg1.cpp b/shared/test/unit_test/gen12lp/dg1/test_hw_info_config_dg1.cpp index 98dc3b9f06..83ca47a1bf 100644 --- a/shared/test/unit_test/gen12lp/dg1/test_hw_info_config_dg1.cpp +++ b/shared/test/unit_test/gen12lp/dg1/test_hw_info_config_dg1.cpp @@ -174,4 +174,8 @@ DG1TEST_F(Dg1HwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen12lp/rkl/test_hw_info_config_rkl.cpp b/shared/test/unit_test/gen12lp/rkl/test_hw_info_config_rkl.cpp index ddfb57dead..b19b2e6425 100644 --- a/shared/test/unit_test/gen12lp/rkl/test_hw_info_config_rkl.cpp +++ b/shared/test/unit_test/gen12lp/rkl/test_hw_info_config_rkl.cpp @@ -118,4 +118,8 @@ RKLTEST_F(RklHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen12lp/tgllp/hw_info_config_tests_tgllp.cpp b/shared/test/unit_test/gen12lp/tgllp/hw_info_config_tests_tgllp.cpp index 20a8635ba1..db396c37c8 100644 --- a/shared/test/unit_test/gen12lp/tgllp/hw_info_config_tests_tgllp.cpp +++ b/shared/test/unit_test/gen12lp/tgllp/hw_info_config_tests_tgllp.cpp @@ -46,4 +46,8 @@ TGLLPTEST_F(HwInfoConfigTestTgllp, givenHwInfoConfigWhenGetCommandsStreamPropert EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen8/bdw/test_hw_info_config_bdw.cpp b/shared/test/unit_test/gen8/bdw/test_hw_info_config_bdw.cpp index 2e65a5a5a5..3374e75883 100644 --- a/shared/test/unit_test/gen8/bdw/test_hw_info_config_bdw.cpp +++ b/shared/test/unit_test/gen8/bdw/test_hw_info_config_bdw.cpp @@ -126,4 +126,8 @@ BDWTEST_F(BdwHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen9/bxt/test_hw_info_config_bxt.cpp b/shared/test/unit_test/gen9/bxt/test_hw_info_config_bxt.cpp index 57c1e791a2..8e9bb107f1 100644 --- a/shared/test/unit_test/gen9/bxt/test_hw_info_config_bxt.cpp +++ b/shared/test/unit_test/gen9/bxt/test_hw_info_config_bxt.cpp @@ -132,4 +132,8 @@ BXTTEST_F(BxtHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen9/cfl/test_hw_info_config_cfl.cpp b/shared/test/unit_test/gen9/cfl/test_hw_info_config_cfl.cpp index e010e7cc3d..4eec0e0f25 100644 --- a/shared/test/unit_test/gen9/cfl/test_hw_info_config_cfl.cpp +++ b/shared/test/unit_test/gen9/cfl/test_hw_info_config_cfl.cpp @@ -139,4 +139,8 @@ CFLTEST_F(CflHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen9/glk/test_hw_info_config_glk.cpp b/shared/test/unit_test/gen9/glk/test_hw_info_config_glk.cpp index 9511cce481..b0eaeef953 100644 --- a/shared/test/unit_test/gen9/glk/test_hw_info_config_glk.cpp +++ b/shared/test/unit_test/gen9/glk/test_hw_info_config_glk.cpp @@ -122,4 +122,8 @@ GLKTEST_F(GlkHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen9/kbl/test_hw_info_config_kbl.cpp b/shared/test/unit_test/gen9/kbl/test_hw_info_config_kbl.cpp index 2e718bca6f..1dd7552c09 100644 --- a/shared/test/unit_test/gen9/kbl/test_hw_info_config_kbl.cpp +++ b/shared/test/unit_test/gen9/kbl/test_hw_info_config_kbl.cpp @@ -146,4 +146,8 @@ KBLTEST_F(KblHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/gen9/skl/test_hw_info_config_skl.cpp b/shared/test/unit_test/gen9/skl/test_hw_info_config_skl.cpp index 8f331877f7..f69dd3803e 100644 --- a/shared/test/unit_test/gen9/skl/test_hw_info_config_skl.cpp +++ b/shared/test/unit_test/gen9/skl/test_hw_info_config_skl.cpp @@ -146,4 +146,8 @@ SKLTEST_F(SklHwInfo, givenHwInfoConfigWhenGetCommandsStreamPropertiesSupportThen EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_FALSE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/os_interface/hw_info_config_tests.cpp b/shared/test/unit_test/os_interface/hw_info_config_tests.cpp index f93a2f7664..ac320e3527 100644 --- a/shared/test/unit_test/os_interface/hw_info_config_tests.cpp +++ b/shared/test/unit_test/os_interface/hw_info_config_tests.cpp @@ -532,3 +532,14 @@ HWTEST_F(HwInfoConfigTest, WhenFillingFrontEndPropertiesSupportThenExpectUseCorr EXPECT_EQ(hwInfoConfig->getFrontEndPropertyDisableOverDispatchSupport(), frontEndPropertiesSupport.disableOverdispatch); EXPECT_EQ(hwInfoConfig->getFrontEndPropertySingleSliceDispatchCcsModeSupport(), frontEndPropertiesSupport.singleSliceDispatchCcsMode); } + +HWTEST_F(HwInfoConfigTest, WhenFillingPipelineSelectPropertiesSupportThenExpectUseCorrectGetters) { + PipelineSelectPropertiesSupport pipelineSelectPropertiesSupport = {}; + + auto hwInfoConfig = HwInfoConfig::get(pInHwInfo.platform.eProductFamily); + + hwInfoConfig->fillPipelineSelectPropertiesSupportStructure(pipelineSelectPropertiesSupport, pInHwInfo); + EXPECT_EQ(hwInfoConfig->getPipelineSelectPropertyModeSelectedSupport(), pipelineSelectPropertiesSupport.modeSelected); + EXPECT_EQ(hwInfoConfig->getPipelineSelectPropertyMediaSamplerDopClockGateSupport(), pipelineSelectPropertiesSupport.mediaSamplerDopClockGate); + EXPECT_EQ(hwInfoConfig->getPipelineSelectPropertySystolicModeSupport(), pipelineSelectPropertiesSupport.systolicMode); +} diff --git a/shared/test/unit_test/xe_hp_core/xe_hp_sdv/hw_info_config_tests_xe_hp_sdv.cpp b/shared/test/unit_test/xe_hp_core/xe_hp_sdv/hw_info_config_tests_xe_hp_sdv.cpp index d8698904ea..cb11771643 100644 --- a/shared/test/unit_test/xe_hp_core/xe_hp_sdv/hw_info_config_tests_xe_hp_sdv.cpp +++ b/shared/test/unit_test/xe_hp_core/xe_hp_sdv/hw_info_config_tests_xe_hp_sdv.cpp @@ -46,4 +46,8 @@ XEHPTEST_F(HwInfoConfigTestXeHpSdv, givenHwInfoConfigWhenGetCommandsStreamProper EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_TRUE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp b/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp index 65559eb86c..18df93468f 100644 --- a/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp +++ b/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp @@ -116,4 +116,8 @@ PVCTEST_F(PVCHwInfoConfig, givenHwInfoConfigWhenGetCommandsStreamPropertiesSuppo EXPECT_FALSE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_TRUE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); } diff --git a/shared/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp b/shared/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp index a49ca7562e..63135b8097 100644 --- a/shared/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp +++ b/shared/test/unit_test/xe_hpg_core/dg2/test_hw_info_config_dg2.cpp @@ -96,4 +96,8 @@ DG2TEST_F(TestDg2HwInfoConfig, givenHwInfoConfigWhenGetCommandsStreamPropertiesS EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableEuFusionSupport()); EXPECT_TRUE(hwInfoConfig.getFrontEndPropertyDisableOverDispatchSupport()); EXPECT_TRUE(hwInfoConfig.getFrontEndPropertySingleSliceDispatchCcsModeSupport()); + + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertyModeSelectedSupport()); + EXPECT_FALSE(hwInfoConfig.getPipelineSelectPropertyMediaSamplerDopClockGateSupport()); + EXPECT_TRUE(hwInfoConfig.getPipelineSelectPropertySystolicModeSupport()); }