Skip to content

Commit ceb9d81

Browse files
Add struct argument for input/output in StateBaseAddressHelper
This refactor makes future interface changes easier Related-To: NEO-5019 Signed-off-by: Zbigniew Zdanowicz <[email protected]>
1 parent 9b1afe4 commit ceb9d81

21 files changed

+740
-573
lines changed

level_zero/core/source/cmdqueue/cmdqueue_hw_base.inl

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,27 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
5252
auto indirectObjectHeapBaseAddress = neoDevice->getMemoryManager()->getInternalHeapBaseAddress(device->getRootDeviceIndex(), useLocalMemoryForIndirectHeap);
5353
auto instructionHeapBaseAddress = neoDevice->getMemoryManager()->getInternalHeapBaseAddress(device->getRootDeviceIndex(), neoDevice->getMemoryManager()->isLocalMemoryUsedForIsa(neoDevice->getRootDeviceIndex()));
5454

55-
NEO::StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(&sbaCmd,
56-
nullptr,
57-
nullptr,
58-
nullptr,
59-
gsba,
60-
true,
61-
(device->getMOCS(cachedMOCSAllowed, false) >> 1),
62-
indirectObjectHeapBaseAddress,
63-
instructionHeapBaseAddress,
64-
globalHeapsBase,
65-
true,
66-
useGlobalSshAndDsh,
67-
neoDevice->getGmmHelper(),
68-
false,
69-
NEO::MemoryCompressionState::NotApplicable,
70-
false,
71-
1u);
55+
NEO::StateBaseAddressHelperArgs<GfxFamily> args = {
56+
gsba, // generalStateBase
57+
indirectObjectHeapBaseAddress, // indirectObjectHeapBaseAddress
58+
instructionHeapBaseAddress, // instructionHeapBaseAddress
59+
globalHeapsBase, // globalHeapsBaseAddress
60+
&sbaCmd, // stateBaseAddressCmd
61+
nullptr, // dsh
62+
nullptr, // ioh
63+
nullptr, // ssh
64+
neoDevice->getGmmHelper(), // gmmHelper
65+
(device->getMOCS(cachedMOCSAllowed, false) >> 1), // statelessMocsIndex
66+
NEO::MemoryCompressionState::NotApplicable, // memoryCompressionState
67+
true, // setInstructionStateBaseAddress
68+
true, // setGeneralStateBaseAddress
69+
useGlobalSshAndDsh, // useGlobalHeapsBaseAddress
70+
false, // isMultiOsContextCapable
71+
false, // useGlobalAtomics
72+
false // areMultipleSubDevicesInContext
73+
};
74+
75+
NEO::StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(args);
7276
*sbaCmdBuf = sbaCmd;
7377
csr->setGSBAStateDirty(false);
7478

level_zero/core/source/cmdqueue/cmdqueue_xe_hp_core_and_later.inl

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,27 @@ void CommandQueueHw<gfxCoreFamily>::programStateBaseAddress(uint64_t gsba, bool
4343
auto sbaCmdBuf = static_cast<STATE_BASE_ADDRESS *>(NEO::StateBaseAddressHelper<GfxFamily>::getSpaceForSbaCmd(commandStream));
4444

4545
STATE_BASE_ADDRESS sbaCmd;
46-
NEO::StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(&sbaCmd,
47-
nullptr,
48-
nullptr,
49-
nullptr,
50-
0,
51-
true,
52-
(device->getMOCS(cachedMOCSAllowed, false) >> 1),
53-
indirectObjectStateBaseAddress,
54-
instructionStateBaseAddress,
55-
globalHeapsBase,
56-
true,
57-
true,
58-
neoDevice->getGmmHelper(),
59-
multiOsContextCapable,
60-
NEO::MemoryCompressionState::NotApplicable,
61-
false,
62-
1u);
46+
NEO::StateBaseAddressHelperArgs<GfxFamily> args = {
47+
0, // generalStateBase
48+
indirectObjectStateBaseAddress, // indirectObjectHeapBaseAddress
49+
instructionStateBaseAddress, // instructionHeapBaseAddress
50+
globalHeapsBase, // globalHeapsBaseAddress
51+
&sbaCmd, // stateBaseAddressCmd
52+
nullptr, // dsh
53+
nullptr, // ioh
54+
nullptr, // ssh
55+
neoDevice->getGmmHelper(), // gmmHelper
56+
(device->getMOCS(cachedMOCSAllowed, false) >> 1), // statelessMocsIndex
57+
NEO::MemoryCompressionState::NotApplicable, // memoryCompressionState
58+
true, // setInstructionStateBaseAddress
59+
true, // setGeneralStateBaseAddress
60+
true, // useGlobalHeapsBaseAddress
61+
multiOsContextCapable, // isMultiOsContextCapable
62+
false, // useGlobalAtomics
63+
false // areMultipleSubDevicesInContext
64+
};
65+
66+
NEO::StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(args);
6367
*sbaCmdBuf = sbaCmd;
6468

6569
auto &hwInfoConfig = *NEO::HwInfoConfig::get(hwInfo.platform.eProductFamily);

opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_2_tests.cpp

Lines changed: 80 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,23 +1213,26 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, givenCsrWhenGen
12131213
auto gmmHelper = pDevice->getGmmHelper();
12141214

12151215
typename FamilyType::STATE_BASE_ADDRESS sbaCmd;
1216-
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(&sbaCmd,
1217-
&dsh,
1218-
&ioh,
1219-
&ssh,
1220-
generalStateBaseAddress,
1221-
true,
1222-
0,
1223-
0,
1224-
generalStateBaseAddress,
1225-
0,
1226-
true,
1227-
false,
1228-
gmmHelper,
1229-
false,
1230-
MemoryCompressionState::NotApplicable,
1231-
false,
1232-
1u);
1216+
StateBaseAddressHelperArgs<FamilyType> args = {
1217+
generalStateBaseAddress, // generalStateBase
1218+
0, // indirectObjectHeapBaseAddress
1219+
generalStateBaseAddress, // instructionHeapBaseAddress
1220+
0, // globalHeapsBaseAddress
1221+
&sbaCmd, // stateBaseAddressCmd
1222+
&dsh, // dsh
1223+
&ioh, // ioh
1224+
&ssh, // ssh
1225+
gmmHelper, // gmmHelper
1226+
0, // statelessMocsIndex
1227+
MemoryCompressionState::NotApplicable, // memoryCompressionState
1228+
true, // setInstructionStateBaseAddress
1229+
true, // setGeneralStateBaseAddress
1230+
false, // useGlobalHeapsBaseAddress
1231+
false, // isMultiOsContextCapable
1232+
false, // useGlobalAtomics
1233+
false // areMultipleSubDevicesInContext
1234+
};
1235+
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
12331236

12341237
EXPECT_NE(generalStateBaseAddress, sbaCmd.getGeneralStateBaseAddress());
12351238
EXPECT_EQ(gmmHelper->decanonize(generalStateBaseAddress), sbaCmd.getGeneralStateBaseAddress());
@@ -1239,23 +1242,26 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNonZeroGeneralStateBaseAddres
12391242
uint64_t generalStateBaseAddress = 0x80010000ull;
12401243

12411244
typename FamilyType::STATE_BASE_ADDRESS sbaCmd;
1242-
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(&sbaCmd,
1243-
&dsh,
1244-
&ioh,
1245-
&ssh,
1246-
generalStateBaseAddress,
1247-
false,
1248-
0,
1249-
0,
1250-
generalStateBaseAddress,
1251-
0,
1252-
true,
1253-
false,
1254-
pDevice->getGmmHelper(),
1255-
false,
1256-
MemoryCompressionState::NotApplicable,
1257-
false,
1258-
1u);
1245+
StateBaseAddressHelperArgs<FamilyType> args = {
1246+
generalStateBaseAddress, // generalStateBase
1247+
0, // indirectObjectHeapBaseAddress
1248+
generalStateBaseAddress, // instructionHeapBaseAddress
1249+
0, // globalHeapsBaseAddress
1250+
&sbaCmd, // stateBaseAddressCmd
1251+
&dsh, // dsh
1252+
&ioh, // ioh
1253+
&ssh, // ssh
1254+
pDevice->getGmmHelper(), // gmmHelper
1255+
0, // statelessMocsIndex
1256+
MemoryCompressionState::NotApplicable, // memoryCompressionState
1257+
true, // setInstructionStateBaseAddress
1258+
false, // setGeneralStateBaseAddress
1259+
false, // useGlobalHeapsBaseAddress
1260+
false, // isMultiOsContextCapable
1261+
false, // useGlobalAtomics
1262+
false // areMultipleSubDevicesInContext
1263+
};
1264+
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
12591265

12601266
EXPECT_EQ(0ull, sbaCmd.getGeneralStateBaseAddress());
12611267
EXPECT_EQ(0u, sbaCmd.getGeneralStateBufferSize());
@@ -1267,23 +1273,26 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNonZeroInternalHeapBaseAddres
12671273
uint64_t internalHeapBaseAddress = 0x80010000ull;
12681274

12691275
typename FamilyType::STATE_BASE_ADDRESS sbaCmd;
1270-
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(&sbaCmd,
1271-
&dsh,
1272-
&ioh,
1273-
&ssh,
1274-
internalHeapBaseAddress,
1275-
true,
1276-
0,
1277-
internalHeapBaseAddress,
1278-
0,
1279-
0,
1280-
false,
1281-
false,
1282-
pDevice->getGmmHelper(),
1283-
false,
1284-
MemoryCompressionState::NotApplicable,
1285-
false,
1286-
1u);
1276+
StateBaseAddressHelperArgs<FamilyType> args = {
1277+
internalHeapBaseAddress, // generalStateBase
1278+
internalHeapBaseAddress, // indirectObjectHeapBaseAddress
1279+
0, // instructionHeapBaseAddress
1280+
0, // globalHeapsBaseAddress
1281+
&sbaCmd, // stateBaseAddressCmd
1282+
&dsh, // dsh
1283+
&ioh, // ioh
1284+
&ssh, // ssh
1285+
pDevice->getGmmHelper(), // gmmHelper
1286+
0, // statelessMocsIndex
1287+
MemoryCompressionState::NotApplicable, // memoryCompressionState
1288+
false, // setInstructionStateBaseAddress
1289+
true, // setGeneralStateBaseAddress
1290+
false, // useGlobalHeapsBaseAddress
1291+
false, // isMultiOsContextCapable
1292+
false, // useGlobalAtomics
1293+
false // areMultipleSubDevicesInContext
1294+
};
1295+
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
12871296

12881297
EXPECT_FALSE(sbaCmd.getInstructionBaseAddressModifyEnable());
12891298
EXPECT_EQ(0ull, sbaCmd.getInstructionBaseAddress());
@@ -1299,24 +1308,26 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, givenSbaProgram
12991308
uint64_t instructionHeapBase = 0x10000;
13001309
uint64_t generalStateBase = 0x30000;
13011310
typename FamilyType::STATE_BASE_ADDRESS sbaCmd;
1302-
1303-
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(&sbaCmd,
1304-
nullptr,
1305-
nullptr,
1306-
nullptr,
1307-
generalStateBase,
1308-
true,
1309-
0,
1310-
internalHeapBase,
1311-
instructionHeapBase,
1312-
0,
1313-
true,
1314-
false,
1315-
pDevice->getGmmHelper(),
1316-
false,
1317-
MemoryCompressionState::NotApplicable,
1318-
false,
1319-
1u);
1311+
StateBaseAddressHelperArgs<FamilyType> args = {
1312+
generalStateBase, // generalStateBase
1313+
internalHeapBase, // indirectObjectHeapBaseAddress
1314+
instructionHeapBase, // instructionHeapBaseAddress
1315+
0, // globalHeapsBaseAddress
1316+
&sbaCmd, // stateBaseAddressCmd
1317+
nullptr, // dsh
1318+
nullptr, // ioh
1319+
nullptr, // ssh
1320+
pDevice->getGmmHelper(), // gmmHelper
1321+
0, // statelessMocsIndex
1322+
MemoryCompressionState::NotApplicable, // memoryCompressionState
1323+
true, // setInstructionStateBaseAddress
1324+
true, // setGeneralStateBaseAddress
1325+
false, // useGlobalHeapsBaseAddress
1326+
false, // isMultiOsContextCapable
1327+
false, // useGlobalAtomics
1328+
false // areMultipleSubDevicesInContext
1329+
};
1330+
StateBaseAddressHelper<FamilyType>::programStateBaseAddress(args);
13201331

13211332
EXPECT_FALSE(sbaCmd.getDynamicStateBaseAddressModifyEnable());
13221333
EXPECT_FALSE(sbaCmd.getDynamicStateBufferSizeModifyEnable());

0 commit comments

Comments
 (0)