From c8a9cc95184039b9f34be6e39abec2b399a27376 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Tue, 20 Dec 2022 15:56:50 +0000 Subject: [PATCH] Refactor: dont use global getters for product/gfxcore helper in preamble helpers Signed-off-by: Mateusz Jablonski --- level_zero/core/source/cmdlist/cmdlist_hw.inl | 2 +- .../core/source/cmdqueue/cmdqueue_hw.inl | 2 +- .../helpers/test_preamble_dg2_and_later.cpp | 8 ++++---- .../helpers/test_preamble_xehp_and_later.cpp | 6 +++--- .../test_cmds_programming_xe_hpg_core.cpp | 15 ++++++++------ .../command_stream_receiver_hw_base.inl | 2 +- shared/source/gen12lp/preamble_gen12lp.cpp | 5 +++-- shared/source/helpers/preamble.h | 5 +++-- shared/source/helpers/preamble_base.inl | 2 +- .../source/helpers/preamble_bdw_and_later.inl | 4 ++-- .../helpers/preamble_xehp_and_later.inl | 6 +++--- .../xe_hpc_core/preamble_xe_hpc_core.cpp | 2 +- .../xe_hpg_core/preamble_xe_hpg_core.cpp | 5 +++-- .../unit_test/gen11/test_preamble_gen11.cpp | 4 ++-- .../gen12lp/test_preamble_gen12lp.cpp | 20 +++++++------------ .../unit_test/gen8/test_preamble_gen8.cpp | 2 +- .../unit_test/gen9/test_preamble_gen9.cpp | 4 ++-- .../unit_test/preamble/preamble_tests.cpp | 6 ++++-- .../preamble/test_preamble_xe_hpg_core.cpp | 4 +++- .../xe_hpc_core/pvc/test_preamble_pvc.cpp | 2 +- .../xe_hpc_core/test_preamble_xe_hpc_core.cpp | 10 +++++----- 21 files changed, 60 insertions(+), 56 deletions(-) diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 8d67817467..18142ed0b1 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -2473,7 +2473,7 @@ void CommandListCoreFamily::updateStreamProperties(Kernel &kernel if (isPatchingVfeStateAllowed) { auto pVfeStateAddress = NEO::PreambleHelper::getSpaceForVfeState(commandContainer.getCommandStream(), hwInfo, engineGroupType); auto pVfeState = new VFE_STATE_TYPE; - NEO::PreambleHelper::programVfeState(pVfeState, hwInfo, 0, 0, device->getMaxNumHwThreads(), finalStreamState, nullptr); + NEO::PreambleHelper::programVfeState(pVfeState, rootDeviceEnvironment, 0, 0, device->getMaxNumHwThreads(), finalStreamState, nullptr); commandsToPatch.push_back({pVfeStateAddress, pVfeState, CommandToPatch::FrontEndState}); } if (this->frontEndStateTracking) { diff --git a/level_zero/core/source/cmdqueue/cmdqueue_hw.inl b/level_zero/core/source/cmdqueue/cmdqueue_hw.inl index 5eb283aed7..b514a7ac27 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue_hw.inl +++ b/level_zero/core/source/cmdqueue/cmdqueue_hw.inl @@ -352,7 +352,7 @@ void CommandQueueHw::programFrontEnd(uint64_t scratchAddress, uin csr->getOsContext().getEngineUsage(), hwInfo); auto pVfeState = NEO::PreambleHelper::getSpaceForVfeState(&cmdStream, hwInfo, engineGroupType); NEO::PreambleHelper::programVfeState(pVfeState, - hwInfo, + device->getNEODevice()->getRootDeviceEnvironment(), perThreadScratchSpaceSize, scratchAddress, device->getMaxNumHwThreads(), diff --git a/opencl/test/unit_test/helpers/test_preamble_dg2_and_later.cpp b/opencl/test/unit_test/helpers/test_preamble_dg2_and_later.cpp index 403c350f48..4e10a761c0 100644 --- a/opencl/test/unit_test/helpers/test_preamble_dg2_and_later.cpp +++ b/opencl/test/unit_test/helpers/test_preamble_dg2_and_later.cpp @@ -23,7 +23,7 @@ HWTEST2_F(PreambleCfeStateDg2AndLater, whenprogramVFEStateIsCalledWithProperAddi using CFE_STATE = typename FamilyType::CFE_STATE; HardwareInfo hwInfo = *defaultHwInfo; - const auto &productHelper = *ProductHelper::get(productFamily); + const auto &productHelper = pDevice->getProductHelper(); hwInfo.platform.usRevId = productHelper.getHwRevIdFromStepping(REVISION_B, hwInfo); @@ -34,7 +34,7 @@ HWTEST2_F(PreambleCfeStateDg2AndLater, whenprogramVFEStateIsCalledWithProperAddi auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, hwInfo, EngineGroupType::RenderCompute); StreamProperties properties{}; properties.frontEndState.disableOverdispatch.value = 1; - PreambleHelper::programVfeState(pVfeCmd, hwInfo, 0u, 0, 0, properties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 0, properties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), cfeStateIt); @@ -44,7 +44,7 @@ HWTEST2_F(PreambleCfeStateDg2AndLater, whenprogramVFEStateIsCalledWithProperAddi cmdList.clear(); pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, hwInfo, EngineGroupType::RenderCompute); properties.frontEndState.disableOverdispatch.value = 0; - PreambleHelper::programVfeState(pVfeCmd, hwInfo, 0u, 0, 0, properties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 0, properties, nullptr); parseCommands(linearStream); cfeStateIt = find(cmdList.begin(), cmdList.end()); cfeStateIt++; @@ -65,7 +65,7 @@ HWTEST2_F(PreambleCfeStateDg2AndLater, givenSetDebugFlagWhenPreambleCfeStateIsPr uint64_t expectedAddress = 1 << CFE_STATE::SCRATCHSPACEBUFFER_BIT_SHIFT; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, 16u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, 16u, emptyProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); diff --git a/opencl/test/unit_test/helpers/test_preamble_xehp_and_later.cpp b/opencl/test/unit_test/helpers/test_preamble_xehp_and_later.cpp index da91a80d86..93f12a1067 100644 --- a/opencl/test/unit_test/helpers/test_preamble_xehp_and_later.cpp +++ b/opencl/test/unit_test/helpers/test_preamble_xehp_and_later.cpp @@ -140,7 +140,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, PreambleCfeStateXeHPAndLater, givenScratchEnabledWh uint32_t expectedMaxThreads = GfxCoreHelper::getMaxThreadsForVfe(*defaultHwInfo); auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, expectedMaxThreads, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, expectedMaxThreads, emptyProperties, nullptr); parseCommands(linearStream); @@ -174,7 +174,7 @@ HWTEST2_F(PreambleCfeStateXeHPAndLater, givenNotSetDebugFlagWhenPreambleCfeState uint32_t expectedMaxThreads = GfxCoreHelper::getMaxThreadsForVfe(*defaultHwInfo); auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, expectedMaxThreads, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, expectedMaxThreads, emptyProperties, nullptr); uint32_t maximumNumberOfThreads = cfeState->getMaximumNumberOfThreads(); if constexpr (TestTraits::numberOfWalkersInCfeStateSupported) { @@ -205,7 +205,7 @@ HWTEST2_F(PreambleCfeStateXeHPAndLater, givenSetDebugFlagWhenPreambleCfeStateIsP uint64_t expectedAddress = 1 << CFE_STATE::SCRATCHSPACEBUFFER_BIT_SHIFT; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, 16u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, 16u, emptyProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); diff --git a/opencl/test/unit_test/xe_hpg_core/test_cmds_programming_xe_hpg_core.cpp b/opencl/test/unit_test/xe_hpg_core/test_cmds_programming_xe_hpg_core.cpp index 9ba2a3a6c4..7dcc884511 100644 --- a/opencl/test/unit_test/xe_hpg_core/test_cmds_programming_xe_hpg_core.cpp +++ b/opencl/test/unit_test/xe_hpg_core/test_cmds_programming_xe_hpg_core.cpp @@ -313,13 +313,14 @@ using PreambleCfeState = PreambleFixture; HWTEST2_F(PreambleCfeState, givenXehpAndDisabledFusedEuWhenCfeStateProgrammedThenFusedEuDispatchSetToTrue, IsXeHpgCore) { using CFE_STATE = typename FamilyType::CFE_STATE; - auto hwInfo = *defaultHwInfo; + auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment(); + auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo(); hwInfo.capabilityTable.fusedEuEnabled = false; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, hwInfo, EngineGroupType::RenderCompute); StreamProperties streamProperties{}; streamProperties.frontEndState.setProperties(false, false, false, false, hwInfo); - PreambleHelper::programVfeState(pVfeCmd, hwInfo, 0u, 0, 0, streamProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, rootDeviceEnvironment, 0u, 0, 0, streamProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), cfeStateIt); @@ -334,13 +335,14 @@ HWTEST2_F(PreambleCfeState, givenXehpEnabledFusedEuAndDisableFusedDispatchFromKe DebugManagerStateRestore dbgRestorer; DebugManager.flags.CFEFusedEUDispatch.set(0); - auto hwInfo = *defaultHwInfo; + auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment(); + auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo(); hwInfo.capabilityTable.fusedEuEnabled = true; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, hwInfo, EngineGroupType::RenderCompute); StreamProperties streamProperties{}; streamProperties.frontEndState.setProperties(false, true, false, false, hwInfo); - PreambleHelper::programVfeState(pVfeCmd, hwInfo, 0u, 0, 0, streamProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, rootDeviceEnvironment, 0u, 0, 0, streamProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), cfeStateIt); @@ -352,13 +354,14 @@ HWTEST2_F(PreambleCfeState, givenXehpEnabledFusedEuAndDisableFusedDispatchFromKe HWTEST2_F(PreambleCfeState, givenXehpAndEnabledFusedEuWhenCfeStateProgrammedThenFusedEuDispatchSetToFalse, IsXeHpgCore) { using CFE_STATE = typename FamilyType::CFE_STATE; - auto hwInfo = *defaultHwInfo; + auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment(); + auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo(); hwInfo.capabilityTable.fusedEuEnabled = true; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, hwInfo, EngineGroupType::RenderCompute); StreamProperties streamProperties{}; streamProperties.frontEndState.setProperties(false, false, false, false, hwInfo); - PreambleHelper::programVfeState(pVfeCmd, hwInfo, 0u, 0, 0, streamProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, rootDeviceEnvironment, 0u, 0, 0, streamProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), cfeStateIt); diff --git a/shared/source/command_stream/command_stream_receiver_hw_base.inl b/shared/source/command_stream/command_stream_receiver_hw_base.inl index 5d035f57ba..c48bb794a2 100644 --- a/shared/source/command_stream/command_stream_receiver_hw_base.inl +++ b/shared/source/command_stream/command_stream_receiver_hw_base.inl @@ -1083,7 +1083,7 @@ inline void CommandStreamReceiverHw::programVFEState(LinearStream &cs auto engineGroupType = gfxCoreHelper.getEngineGroupType(getOsContext().getEngineType(), getOsContext().getEngineUsage(), hwInfo); auto pVfeState = PreambleHelper::getSpaceForVfeState(&csr, hwInfo, engineGroupType); PreambleHelper::programVfeState( - pVfeState, hwInfo, requiredScratchSize, getScratchPatchAddress(), + pVfeState, peekRootDeviceEnvironment(), requiredScratchSize, getScratchPatchAddress(), maxFrontEndThreads, streamProperties, logicalStateHelper.get()); auto commandOffset = PreambleHelper::getScratchSpaceAddressOffsetForVfeState(&csr, pVfeState); diff --git a/shared/source/gen12lp/preamble_gen12lp.cpp b/shared/source/gen12lp/preamble_gen12lp.cpp index 49cc7ccc23..b0d283d580 100644 --- a/shared/source/gen12lp/preamble_gen12lp.cpp +++ b/shared/source/gen12lp/preamble_gen12lp.cpp @@ -86,10 +86,11 @@ uint32_t PreambleHelper::getUrbEntryAllocationSize() { } template <> -void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd) { +void PreambleHelper::appendProgramVFEState(const RootDeviceEnvironment &rootDeviceEnvironment, const StreamProperties &streamProperties, void *cmd) { VFE_STATE_TYPE *mediaVfeState = static_cast(cmd); bool disableEUFusion = streamProperties.frontEndState.disableEUFusion.value == 1; - auto &gfxCoreHelper = GfxCoreHelperHw::get(); + auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); + auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo(); if (!gfxCoreHelper.isFusedEuDispatchEnabled(hwInfo, disableEUFusion)) { mediaVfeState->setDisableSlice0Subslice2(true); } diff --git a/shared/source/helpers/preamble.h b/shared/source/helpers/preamble.h index 7367762dde..c60299499d 100644 --- a/shared/source/helpers/preamble.h +++ b/shared/source/helpers/preamble.h @@ -24,6 +24,7 @@ class LinearStream; class LogicalStateHelper; struct PipelineSelectArgs; struct StreamProperties; +struct RootDeviceEnvironment; template struct PreambleHelper { @@ -37,12 +38,12 @@ struct PreambleHelper { const HardwareInfo &hwInfo); static void programPreemption(LinearStream *pCommandStream, Device &device, GraphicsAllocation *preemptionCsr, LogicalStateHelper *logicalStateHelper); static void addPipeControlBeforeVfeCmd(LinearStream *pCommandStream, const HardwareInfo *hwInfo, EngineGroupType engineGroupType); - static void appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd); + static void appendProgramVFEState(const RootDeviceEnvironment &rootDeviceEnvironment, const StreamProperties &streamProperties, void *cmd); static void *getSpaceForVfeState(LinearStream *pCommandStream, const HardwareInfo &hwInfo, EngineGroupType engineGroupType); static void programVfeState(void *pVfeState, - const HardwareInfo &hwInfo, + const RootDeviceEnvironment &rootDeviceEnvironment, uint32_t scratchSize, uint64_t scratchAddress, uint32_t maxFrontEndThreads, diff --git a/shared/source/helpers/preamble_base.inl b/shared/source/helpers/preamble_base.inl index c7f5cfdf8f..fb350312d7 100644 --- a/shared/source/helpers/preamble_base.inl +++ b/shared/source/helpers/preamble_base.inl @@ -102,7 +102,7 @@ size_t PreambleHelper::getKernelDebuggingCommandsSize(bool debuggingA } template -void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd) {} +void PreambleHelper::appendProgramVFEState(const RootDeviceEnvironment &rootDeviceEnvironment, const StreamProperties &streamProperties, void *cmd) {} template uint32_t PreambleHelper::getScratchSizeValueToProgramMediaVfeState(uint32_t scratchSize) { diff --git a/shared/source/helpers/preamble_bdw_and_later.inl b/shared/source/helpers/preamble_bdw_and_later.inl index a30dd848ed..c82c04c6ec 100644 --- a/shared/source/helpers/preamble_bdw_and_later.inl +++ b/shared/source/helpers/preamble_bdw_and_later.inl @@ -36,7 +36,7 @@ void *PreambleHelper::getSpaceForVfeState(LinearStream *pCommandStrea template void PreambleHelper::programVfeState(void *pVfeState, - const HardwareInfo &hwInfo, + const RootDeviceEnvironment &rootDeviceEnvironment, uint32_t scratchSize, uint64_t scratchAddress, uint32_t maxFrontEndThreads, @@ -56,7 +56,7 @@ void PreambleHelper::programVfeState(void *pVfeState, cmd.setScratchSpaceBasePointer(lowAddress); cmd.setScratchSpaceBasePointerHigh(highAddress); - appendProgramVFEState(hwInfo, streamProperties, &cmd); + appendProgramVFEState(rootDeviceEnvironment, streamProperties, &cmd); *pMediaVfeState = cmd; } diff --git a/shared/source/helpers/preamble_xehp_and_later.inl b/shared/source/helpers/preamble_xehp_and_later.inl index 112bfe4000..966686207d 100644 --- a/shared/source/helpers/preamble_xehp_and_later.inl +++ b/shared/source/helpers/preamble_xehp_and_later.inl @@ -89,7 +89,7 @@ uint32_t PreambleHelper::getUrbEntryAllocationSize() { return 0u; } template <> -void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd); +void PreambleHelper::appendProgramVFEState(const RootDeviceEnvironment &rootDeviceEnvironment, const StreamProperties &streamProperties, void *cmd); template void *PreambleHelper::getSpaceForVfeState(LinearStream *pCommandStream, @@ -101,7 +101,7 @@ void *PreambleHelper::getSpaceForVfeState(LinearStream *pCommandStrea template void PreambleHelper::programVfeState(void *pVfeState, - const HardwareInfo &hwInfo, + const RootDeviceEnvironment &rootDeviceEnvironment, uint32_t scratchSize, uint64_t scratchAddress, uint32_t maxFrontEndThreads, @@ -115,7 +115,7 @@ void PreambleHelper::programVfeState(void *pVfeState, uint32_t lowAddress = uint32_t(0xFFFFFFFF & scratchAddress); cmd.setScratchSpaceBuffer(lowAddress); cmd.setMaximumNumberOfThreads(maxFrontEndThreads); - appendProgramVFEState(hwInfo, streamProperties, &cmd); + appendProgramVFEState(rootDeviceEnvironment, streamProperties, &cmd); if (DebugManager.flags.CFEMaximumNumberOfThreads.get() != -1) { cmd.setMaximumNumberOfThreads(DebugManager.flags.CFEMaximumNumberOfThreads.get()); diff --git a/shared/source/xe_hpc_core/preamble_xe_hpc_core.cpp b/shared/source/xe_hpc_core/preamble_xe_hpc_core.cpp index 299c0bad9f..5df8a5c4f2 100644 --- a/shared/source/xe_hpc_core/preamble_xe_hpc_core.cpp +++ b/shared/source/xe_hpc_core/preamble_xe_hpc_core.cpp @@ -20,7 +20,7 @@ namespace NEO { using CFE_STATE = typename Family::CFE_STATE; template <> -void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd) { +void PreambleHelper::appendProgramVFEState(const RootDeviceEnvironment &rootDeviceEnvironment, const StreamProperties &streamProperties, void *cmd) { auto command = static_cast(cmd); command->setComputeOverdispatchDisable(streamProperties.frontEndState.disableOverdispatch.value == 1); diff --git a/shared/source/xe_hpg_core/preamble_xe_hpg_core.cpp b/shared/source/xe_hpg_core/preamble_xe_hpg_core.cpp index 886a893db8..463431ea41 100644 --- a/shared/source/xe_hpg_core/preamble_xe_hpg_core.cpp +++ b/shared/source/xe_hpg_core/preamble_xe_hpg_core.cpp @@ -17,7 +17,7 @@ using Family = XeHpgCoreFamily; namespace NEO { template <> -void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd) { +void PreambleHelper::appendProgramVFEState(const RootDeviceEnvironment &rootDeviceEnvironment, const StreamProperties &streamProperties, void *cmd) { auto command = static_cast(cmd); command->setComputeOverdispatchDisable(streamProperties.frontEndState.disableOverdispatch.value == 1); @@ -30,7 +30,8 @@ void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, c command->setSingleSliceDispatchCcsMode(DebugManager.flags.CFESingleSliceDispatchCCSMode.get()); } - auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily); + auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); + auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo(); if (!gfxCoreHelper.isFusedEuDispatchEnabled(hwInfo, streamProperties.frontEndState.disableEUFusion.value == 1)) { command->setFusedEuDispatch(true); } diff --git a/shared/test/unit_test/gen11/test_preamble_gen11.cpp b/shared/test/unit_test/gen11/test_preamble_gen11.cpp index c0cb5080d2..93c79d2419 100644 --- a/shared/test/unit_test/gen11/test_preamble_gen11.cpp +++ b/shared/test/unit_test/gen11/test_preamble_gen11.cpp @@ -56,7 +56,7 @@ GEN11TEST_F(Gen11PreambleVfeState, GivenWaOffWhenProgrammingVfeStateThenProgramm LinearStream &cs = linearStream; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, pDevice->getHardwareInfo(), 0u, 0, 168u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 168u, emptyProperties, nullptr); parseCommands(cs); @@ -76,7 +76,7 @@ GEN11TEST_F(Gen11PreambleVfeState, GivenWaOnWhenProgrammingVfeStateThenProgrammi LinearStream &cs = linearStream; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, pDevice->getHardwareInfo(), 0u, 0, 168u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 168u, emptyProperties, nullptr); parseCommands(cs); diff --git a/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp b/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp index 01508802e6..e93dded9b4 100644 --- a/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp +++ b/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp @@ -58,7 +58,7 @@ HWTEST2_F(Gen12LpPreambleVfeState, GivenWaOffWhenProgrammingVfeStateThenProgramm LinearStream &cs = linearStream; auto vfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(vfeCmd, pDevice->getHardwareInfo(), 0u, 0, 672u, emptyProperties, nullptr); + PreambleHelper::programVfeState(vfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 672u, emptyProperties, nullptr); parseCommands(cs); @@ -80,7 +80,7 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenCcsEngineWhenWaIsSetThenAppropriatePipeC auto vfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::Compute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(vfeCmd, pDevice->getHardwareInfo(), 0u, 0, 672u, emptyProperties, nullptr); + PreambleHelper::programVfeState(vfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 672u, emptyProperties, nullptr); parseCommands(cs); @@ -101,7 +101,7 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenRcsEngineWhenWaIsSetThenAppropriatePipeC auto vfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(vfeCmd, pDevice->getHardwareInfo(), 0u, 0, 672u, emptyProperties, nullptr); + PreambleHelper::programVfeState(vfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 672u, emptyProperties, nullptr); parseCommands(cs); @@ -153,7 +153,7 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenCfeFusedEuDispatchFlagsWhenprogramAdditi DebugManager.flags.CFEFusedEUDispatch.set(debugKeyValue); - PreambleHelper::appendProgramVFEState(*hwInfo, streamProperties, cmdSpace); + PreambleHelper::appendProgramVFEState(pDevice->getRootDeviceEnvironment(), streamProperties, cmdSpace); EXPECT_EQ(expectedValue, mediaVfeState->getDisableSlice0Subslice2()); } } @@ -164,8 +164,6 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenMaxNumberOfDssDebugVariableWhenMediaVfeS DebugManagerStateRestore restorer; DebugManager.flags.MediaVfeStateMaxSubSlices.set(2); - auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); - void *cmdSpace = linearStream.getSpace(sizeof(MEDIA_VFE_STATE)); auto mediaVfeState = reinterpret_cast(cmdSpace); *mediaVfeState = FamilyType::cmdInitMediaVfeState; @@ -173,15 +171,13 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenMaxNumberOfDssDebugVariableWhenMediaVfeS StreamProperties streamProperties = {}; streamProperties.frontEndState.disableEUFusion.value = 0; - PreambleHelper::appendProgramVFEState(*hwInfo, streamProperties, cmdSpace); + PreambleHelper::appendProgramVFEState(pDevice->getRootDeviceEnvironment(), streamProperties, cmdSpace); EXPECT_EQ(2u, mediaVfeState->getMaximumNumberOfDualSubslices()); } HWTEST2_F(Gen12LpPreambleVfeState, givenDisableEUFusionWhenProgramAdditionalFieldsInVfeStateThenCorrectFieldIsSet, IsTGLLP) { using MEDIA_VFE_STATE = typename FamilyType::MEDIA_VFE_STATE; - auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); - void *cmdSpace = linearStream.getSpace(sizeof(MEDIA_VFE_STATE)); auto mediaVfeState = reinterpret_cast(cmdSpace); *mediaVfeState = FamilyType::cmdInitMediaVfeState; @@ -189,7 +185,7 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenDisableEUFusionWhenProgramAdditionalFiel StreamProperties streamProperties = {}; streamProperties.frontEndState.disableEUFusion.value = 1; - PreambleHelper::appendProgramVFEState(*hwInfo, streamProperties, cmdSpace); + PreambleHelper::appendProgramVFEState(pDevice->getRootDeviceEnvironment(), streamProperties, cmdSpace); EXPECT_TRUE(mediaVfeState->getDisableSlice0Subslice2()); } @@ -199,8 +195,6 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenDisableEUFusionAndCFEFusedEUDispatchWhen DebugManagerStateRestore dbgRestorer; DebugManager.flags.CFEFusedEUDispatch.set(0); - auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); - void *cmdSpace = linearStream.getSpace(sizeof(MEDIA_VFE_STATE)); auto mediaVfeState = reinterpret_cast(cmdSpace); *mediaVfeState = FamilyType::cmdInitMediaVfeState; @@ -208,7 +202,7 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenDisableEUFusionAndCFEFusedEUDispatchWhen StreamProperties streamProperties = {}; streamProperties.frontEndState.disableEUFusion.value = 1; - PreambleHelper::appendProgramVFEState(*hwInfo, streamProperties, cmdSpace); + PreambleHelper::appendProgramVFEState(pDevice->getRootDeviceEnvironment(), streamProperties, cmdSpace); EXPECT_FALSE(mediaVfeState->getDisableSlice0Subslice2()); } diff --git a/shared/test/unit_test/gen8/test_preamble_gen8.cpp b/shared/test/unit_test/gen8/test_preamble_gen8.cpp index 012849f3af..22e5ff82a5 100644 --- a/shared/test/unit_test/gen8/test_preamble_gen8.cpp +++ b/shared/test/unit_test/gen8/test_preamble_gen8.cpp @@ -92,7 +92,7 @@ BDWTEST_F(PreambleVfeState, WhenProgrammingVfeStateThenProgrammingIsCorrect) { LinearStream &cs = linearStream; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, 0, 168u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 168u, emptyProperties, nullptr); parseCommands(cs); diff --git a/shared/test/unit_test/gen9/test_preamble_gen9.cpp b/shared/test/unit_test/gen9/test_preamble_gen9.cpp index d03044aaf4..00827b8c00 100644 --- a/shared/test/unit_test/gen9/test_preamble_gen9.cpp +++ b/shared/test/unit_test/gen9/test_preamble_gen9.cpp @@ -94,7 +94,7 @@ GEN9TEST_F(PreambleVfeState, GivenWaOffWhenProgrammingVfeStateThenProgrammingIsC LinearStream &cs = linearStream; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, pDevice->getHardwareInfo(), 0u, 0, 168u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 168u, emptyProperties, nullptr); parseCommands(cs); @@ -114,7 +114,7 @@ GEN9TEST_F(PreambleVfeState, GivenWaOnWhenProgrammingVfeStateThenProgrammingIsCo LinearStream &cs = linearStream; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, pDevice->getHardwareInfo(), 0u, 0, 168u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 168u, emptyProperties, nullptr); parseCommands(cs); diff --git a/shared/test/unit_test/preamble/preamble_tests.cpp b/shared/test/unit_test/preamble/preamble_tests.cpp index 7ac718ac6b..1c07bb35a7 100644 --- a/shared/test/unit_test/preamble/preamble_tests.cpp +++ b/shared/test/unit_test/preamble/preamble_tests.cpp @@ -17,6 +17,7 @@ #include "shared/test/common/helpers/debug_manager_state_restore.h" #include "shared/test/common/helpers/unit_test_helper.h" #include "shared/test/common/mocks/mock_device.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/mocks/mock_graphics_allocation.h" #include "shared/test/common/test_macros/hw_test.h" @@ -225,7 +226,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, PreambleTest, WhenProgramVFEStateIsCalledThenCorrect auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&preambleStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 1024u, addressToPatch, 10u, emptyProperties, nullptr); + MockExecutionEnvironment executionEnvironment{}; + PreambleHelper::programVfeState(pVfeCmd, *executionEnvironment.rootDeviceEnvironments[0], 1024u, addressToPatch, 10u, emptyProperties, nullptr); EXPECT_GE(reinterpret_cast(pVfeCmd), reinterpret_cast(preambleStream.getCpuBase())); EXPECT_LT(reinterpret_cast(pVfeCmd), reinterpret_cast(preambleStream.getCpuBase()) + preambleStream.getUsed()); @@ -248,7 +250,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, PreambleTest, WhenGetScratchSpaceAddressOffsetForVfe auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&preambleStream, mockDevice->getHardwareInfo(), EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, mockDevice->getHardwareInfo(), 1024u, addressToPatch, 10u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, mockDevice->getRootDeviceEnvironment(), 1024u, addressToPatch, 10u, emptyProperties, nullptr); auto offset = PreambleHelper::getScratchSpaceAddressOffsetForVfeState(&preambleStream, pVfeCmd); EXPECT_NE(0u, offset); diff --git a/shared/test/unit_test/preamble/test_preamble_xe_hpg_core.cpp b/shared/test/unit_test/preamble/test_preamble_xe_hpg_core.cpp index 0a7a982dc5..7cbd15ba03 100644 --- a/shared/test/unit_test/preamble/test_preamble_xe_hpg_core.cpp +++ b/shared/test/unit_test/preamble/test_preamble_xe_hpg_core.cpp @@ -12,6 +12,7 @@ #include "shared/source/helpers/preamble.h" #include "shared/source/utilities/stackvec.h" #include "shared/test/common/cmd_parse/hw_parse.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/test_macros/hw_test.h" using PreambleTest = ::testing::Test; @@ -55,7 +56,8 @@ HWTEST2_F(PreambleTest, givenDisableEUFusionWhenProgramVFEStateThenFusedEUDispat auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&stream, *defaultHwInfo.get(), EngineGroupType::RenderCompute); StreamProperties props; props.frontEndState.disableEUFusion.set(true); - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo.get(), 0, 0, 0, props, nullptr); + MockExecutionEnvironment executionEnvironment{}; + PreambleHelper::programVfeState(pVfeCmd, *executionEnvironment.rootDeviceEnvironments[0], 0, 0, 0, props, nullptr); auto cfeCmd = reinterpret_cast(pVfeCmd); EXPECT_EQ(1u, cfeCmd->getFusedEuDispatch()); diff --git a/shared/test/unit_test/xe_hpc_core/pvc/test_preamble_pvc.cpp b/shared/test/unit_test/xe_hpc_core/pvc/test_preamble_pvc.cpp index da76ef2945..650fbe159b 100644 --- a/shared/test/unit_test/xe_hpc_core/pvc/test_preamble_pvc.cpp +++ b/shared/test/unit_test/xe_hpc_core/pvc/test_preamble_pvc.cpp @@ -33,7 +33,7 @@ PVCTEST_F(PreambleCfeState, givenXeHpcAndKernelExecutionTypeAndRevisionWhenCalli hwInfo->platform.usRevId = productHelper.getHwRevIdFromStepping(revision, *hwInfo); streamProperties.frontEndState.setProperties(kernelExecutionType, false, false, false, *hwInfo); - PreambleHelper::programVfeState(pVfeCmd, *hwInfo, 0u, 0, 0, streamProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 0, streamProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), cfeStateIt); diff --git a/shared/test/unit_test/xe_hpc_core/test_preamble_xe_hpc_core.cpp b/shared/test/unit_test/xe_hpc_core/test_preamble_xe_hpc_core.cpp index ea56c2ce89..8076ef16f1 100644 --- a/shared/test/unit_test/xe_hpc_core/test_preamble_xe_hpc_core.cpp +++ b/shared/test/unit_test/xe_hpc_core/test_preamble_xe_hpc_core.cpp @@ -26,7 +26,7 @@ XE_HPC_CORETEST_F(PreambleCfeState, givenXeHpcCoreAndSetDebugFlagWhenPreambleCfe uint64_t expectedAddress = 1 << CFE_STATE::SCRATCHSPACEBUFFER_BIT_SHIFT; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, 16u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, 16u, emptyProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); @@ -42,14 +42,14 @@ XE_HPC_CORETEST_F(PreambleCfeState, givenKernelExecutionTypeConcurrentAndRevisio using CFE_STATE = typename FamilyType::CFE_STATE; auto hwInfo = *defaultHwInfo; - const auto &productHelper = *NEO::ProductHelper::get(hwInfo.platform.eProductFamily); + const auto &productHelper = pDevice->getProductHelper(); hwInfo.platform.usRevId = productHelper.getHwRevIdFromStepping(REVISION_B, hwInfo); auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, hwInfo, EngineGroupType::RenderCompute); StreamProperties streamProperties{}; streamProperties.frontEndState.setProperties(true, false, false, false, hwInfo); - PreambleHelper::programVfeState(pVfeCmd, hwInfo, 0u, 0, 0, streamProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, 0, 0, streamProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), cfeStateIt); @@ -74,7 +74,7 @@ XE_HPC_CORETEST_F(PreambleCfeState, givenNotSetDebugFlagWhenPreambleCfeStateIsPr uint32_t expectedMaxThreads = GfxCoreHelper::getMaxThreadsForVfe(*defaultHwInfo); auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, expectedMaxThreads, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, expectedMaxThreads, emptyProperties, nullptr); uint32_t maximumNumberOfThreads = cfeState->getMaximumNumberOfThreads(); EXPECT_EQ(numberOfWalkers, cfeState->getNumberOfWalkers()); @@ -101,7 +101,7 @@ XE_HPC_CORETEST_F(PreambleCfeState, givenSetDebugFlagWhenPreambleCfeStateIsProgr uint64_t expectedAddress = 1 << CFE_STATE::SCRATCHSPACEBUFFER_BIT_SHIFT; auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); StreamProperties emptyProperties{}; - PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, expectedAddress, 16u, emptyProperties, nullptr); + PreambleHelper::programVfeState(pVfeCmd, pDevice->getRootDeviceEnvironment(), 0u, expectedAddress, 16u, emptyProperties, nullptr); parseCommands(linearStream); auto cfeStateIt = find(cmdList.begin(), cmdList.end());