mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-26 23:33:20 +08:00
test: use walkerVariant in ults 5/n
Related-To: NEO-10641 Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
db703fd335
commit
06457b942e
@@ -86,9 +86,7 @@ struct AppendFillMultiPacketEventFixture : public AppendFillFixture {
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
ze_event_pool_desc_t eventPoolDesc = {};
|
||||
@@ -129,16 +127,23 @@ void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, Te
|
||||
|
||||
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(2u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
auto secondWalker = itorWalkers[1];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
|
||||
|
||||
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
for (auto i = 0u; i < itorWalkers.size(); i++) {
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
|
||||
|
||||
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
}
|
||||
|
||||
if (event->isUsingContextEndOffset()) {
|
||||
gpuBaseAddress += event->getContextEndOffset();
|
||||
@@ -151,7 +156,7 @@ void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, Te
|
||||
storeDataImmAddress += input.storeDataImmOffset;
|
||||
}
|
||||
|
||||
auto itorStoreDataImm = findAll<MI_STORE_DATA_IMM *>(firstWalker, cmdList.end());
|
||||
auto itorStoreDataImm = findAll<MI_STORE_DATA_IMM *>(itorWalkers[0], cmdList.end());
|
||||
ASSERT_EQ(expectedPostSyncStoreDataImm, itorStoreDataImm.size());
|
||||
|
||||
for (size_t i = 0; i < expectedPostSyncStoreDataImm; i++) {
|
||||
@@ -166,9 +171,7 @@ void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, Te
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testSingleTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
ze_event_pool_desc_t eventPoolDesc = {};
|
||||
@@ -210,15 +213,23 @@ void testSingleTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpecte
|
||||
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(2u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
auto secondWalker = itorWalkers[1];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
|
||||
|
||||
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
for (auto i = 0u; i < itorWalkers.size(); i++) {
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
|
||||
|
||||
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
}
|
||||
|
||||
if (event->isUsingContextEndOffset()) {
|
||||
gpuBaseAddress += event->getContextEndOffset();
|
||||
@@ -246,9 +257,7 @@ void testSingleTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpecte
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testSingleTileAppendMemoryFillManyKernelsAndL3Flush(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
ze_event_pool_desc_t eventPoolDesc = {};
|
||||
@@ -291,15 +300,23 @@ void testSingleTileAppendMemoryFillManyKernelsAndL3Flush(FillTestInput &input, T
|
||||
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(2u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
auto secondWalker = itorWalkers[1];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
|
||||
|
||||
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
for (auto i = 0u; i < itorWalkers.size(); i++) {
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
|
||||
|
||||
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
}
|
||||
|
||||
if (event->isUsingContextEndOffset()) {
|
||||
gpuBaseAddress += event->getContextEndOffset();
|
||||
@@ -327,9 +344,7 @@ void testSingleTileAppendMemoryFillManyKernelsAndL3Flush(FillTestInput &input, T
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testSingleTileAppendMemoryFillSingleKernel(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
ze_event_pool_desc_t eventPoolDesc = {};
|
||||
@@ -373,9 +388,17 @@ void testSingleTileAppendMemoryFillSingleKernel(FillTestInput &input, TestExpect
|
||||
ASSERT_EQ(1u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
|
||||
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
|
||||
if (event->isUsingContextEndOffset()) {
|
||||
gpuBaseAddress += event->getContextEndOffset();
|
||||
@@ -403,9 +426,7 @@ void testSingleTileAppendMemoryFillSingleKernel(FillTestInput &input, TestExpect
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testSingleTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
@@ -452,9 +473,17 @@ void testSingleTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input,
|
||||
ASSERT_EQ(1u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
|
||||
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
|
||||
if (event->isUsingContextEndOffset()) {
|
||||
gpuBaseAddress += event->getContextEndOffset();
|
||||
@@ -508,11 +537,9 @@ void testSingleTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input,
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testMultiTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
ze_event_pool_desc_t eventPoolDesc = {};
|
||||
@@ -565,13 +592,22 @@ void testMultiTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpected
|
||||
auto firstWalker = itorWalkers[0];
|
||||
auto secondWalker = itorWalkers[1];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
|
||||
|
||||
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
for (auto i = 0u; i < itorWalkers.size(); i++) {
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
|
||||
|
||||
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
}
|
||||
|
||||
if (event->isUsingContextEndOffset()) {
|
||||
gpuBaseAddress += event->getContextEndOffset();
|
||||
@@ -623,9 +659,7 @@ void testMultiTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpected
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testMultiTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
@@ -672,9 +706,17 @@ void testMultiTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input, T
|
||||
ASSERT_EQ(1u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
|
||||
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
|
||||
constexpr uint32_t kernels = 1;
|
||||
uint32_t sdiCount = NEO::ImplicitScalingDispatch<FamilyType>::getPipeControlStallRequired() ? 3 : 0;
|
||||
|
||||
@@ -391,7 +391,7 @@ using InOrderCmdListTests = InOrderCmdListFixture;
|
||||
HWTEST2_F(InOrderCmdListTests, givenDebugFlagWhenPostSyncWithInOrderExecInfoIsCreateThenL1IsNotFlushed, Platforms) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::debugManager.flags.ForcePostSyncL1Flush.set(0);
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
|
||||
auto immCmdList = createImmCmdList<gfxCoreFamily>();
|
||||
@@ -405,11 +405,14 @@ HWTEST2_F(InOrderCmdListTests, givenDebugFlagWhenPostSyncWithInOrderExecInfoIsCr
|
||||
auto walkerItor = NEO::UnitTestHelper<FamilyType>::findWalkerTypeCmd(cmdList.begin(), cmdList.end());
|
||||
ASSERT_NE(cmdList.end(), walkerItor);
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*walkerItor);
|
||||
auto &postSync = walkerCmd->getPostSync();
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*walkerItor);
|
||||
std::visit([](auto &&walker) {
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_FALSE(postSync.getDataportPipelineFlush());
|
||||
EXPECT_FALSE(postSync.getDataportSubsliceCacheFlush());
|
||||
EXPECT_FALSE(postSync.getDataportPipelineFlush());
|
||||
EXPECT_FALSE(postSync.getDataportSubsliceCacheFlush());
|
||||
},
|
||||
walkerVariant);
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
|
||||
@@ -350,11 +350,9 @@ struct CommandListAppendLaunchKernelCompactL3FlushEventFixture : public ModuleFi
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testAppendLaunchKernelAndL3Flush(AppendKernelTestInput &input, TestExpectedValues &arg) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||
using POST_SYNC_OPERATION = typename FamilyType::PIPE_CONTROL::POST_SYNC_OPERATION;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
Mock<::L0::KernelImp> kernel;
|
||||
@@ -391,13 +389,21 @@ struct CommandListAppendLaunchKernelCompactL3FlushEventFixture : public ModuleFi
|
||||
cmdList, ptrOffset(commandList->commandContainer.getCommandStream()->getCpuBase(), 0),
|
||||
commandList->commandContainer.getCommandStream()->getUsed()));
|
||||
|
||||
auto itorWalkers = findAll<DefaultWalkerType *>(cmdList.begin(), cmdList.end());
|
||||
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(1u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
|
||||
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
|
||||
},
|
||||
walkerVariant);
|
||||
|
||||
uint64_t l3FlushPostSyncAddress = event->getGpuAddress(input.device) + input.packetOffsetMul * event->getSinglePacketSize();
|
||||
if (input.useFirstEventPacketAddress) {
|
||||
@@ -594,9 +600,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture {
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void testAppendKernel(ze_event_pool_flags_t eventPoolFlags) {
|
||||
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
|
||||
using OPERATION = typename POSTSYNC_DATA::OPERATION;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
||||
auto commandList = std::make_unique<WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>>();
|
||||
@@ -631,10 +635,6 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture {
|
||||
ptrOffset(cmdStream->getCpuBase(), sizeBefore),
|
||||
(sizeAfter - sizeBefore)));
|
||||
|
||||
auto itorWalkers = findAll<DefaultWalkerType *>(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(1u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
|
||||
uint32_t expectedWalkerPostSyncOp = 3;
|
||||
if (multiTile == 0 && eventPoolFlags == 0 && !eventPool->isImplicitScalingCapableFlagSet()) {
|
||||
expectedWalkerPostSyncOp = 1;
|
||||
@@ -644,8 +644,20 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture {
|
||||
expectedWalkerPostSyncOp = 1;
|
||||
}
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
|
||||
EXPECT_EQ(static_cast<OPERATION>(expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
|
||||
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(1u, itorWalkers.size());
|
||||
auto firstWalker = itorWalkers[0];
|
||||
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
|
||||
std::visit([expectedWalkerPostSyncOp](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
using PostSyncType = typename WalkerType::PostSyncType;
|
||||
using OPERATION = typename PostSyncType::OPERATION;
|
||||
auto &postSync = walker->getPostSync();
|
||||
|
||||
EXPECT_EQ(static_cast<OPERATION>(expectedWalkerPostSyncOp), postSync.getOperation());
|
||||
},
|
||||
walkerVariant);
|
||||
|
||||
uint32_t extraCleanupStoreDataImm = 0;
|
||||
if (multiTile == 1 && NEO::ImplicitScalingDispatch<FamilyType>::getPipeControlStallRequired()) {
|
||||
@@ -2773,7 +2785,7 @@ HWTEST2_F(CommandListAppendLaunchKernel,
|
||||
IsAtLeastXeHpCore) {
|
||||
using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
|
||||
using WalkerVariant = typename FamilyType::WalkerVariant;
|
||||
|
||||
Mock<::L0::KernelImp> kernel;
|
||||
auto mockModule = std::unique_ptr<Module>(new Mock<Module>(device, nullptr));
|
||||
@@ -2824,7 +2836,7 @@ HWTEST2_F(CommandListAppendLaunchKernel,
|
||||
|
||||
auto storeDataImmList = findAll<MI_STORE_DATA_IMM *>(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(expectedSdi, storeDataImmList.size());
|
||||
auto computeWalkerList = findAll<DefaultWalkerType *>(cmdList.begin(), cmdList.end());
|
||||
auto computeWalkerList = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(1u, computeWalkerList.size());
|
||||
auto semaphoreWaitList = findAll<MI_SEMAPHORE_WAIT *>(cmdList.begin(), cmdList.end());
|
||||
ASSERT_EQ(1u, semaphoreWaitList.size());
|
||||
@@ -2836,12 +2848,19 @@ HWTEST2_F(CommandListAppendLaunchKernel,
|
||||
EXPECT_EQ(eventCompletionAddress, storeDataImmCmd->getAddress());
|
||||
|
||||
EXPECT_EQ(launchParams.outWalker, *computeWalkerList[0]);
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(launchParams.outWalker);
|
||||
ASSERT_NE(nullptr, walkerCmd);
|
||||
if constexpr (!FamilyType::template isHeaplessMode<DefaultWalkerType>()) {
|
||||
auto eventBaseAddress = event->getGpuAddress(device);
|
||||
EXPECT_EQ(eventBaseAddress, walkerCmd->getPostSync().getDestinationAddress());
|
||||
}
|
||||
ASSERT_NE(nullptr, launchParams.outWalker);
|
||||
auto eventBaseAddress = event->getGpuAddress(device);
|
||||
|
||||
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(launchParams.outWalker);
|
||||
std::visit([eventBaseAddress](auto &&walker) {
|
||||
using WalkerType = std::decay_t<decltype(*walker)>;
|
||||
|
||||
if constexpr (!FamilyType::template isHeaplessMode<WalkerType>()) {
|
||||
auto &postSync = walker->getPostSync();
|
||||
EXPECT_EQ(eventBaseAddress, postSync.getDestinationAddress());
|
||||
}
|
||||
},
|
||||
walkerVariant);
|
||||
|
||||
EXPECT_EQ(CommandToPatch::CbEventTimestampPostSyncSemaphoreWait, outCbEventCmds[1].type);
|
||||
EXPECT_EQ(*semaphoreWaitList[0], outCbEventCmds[1].pDestination);
|
||||
|
||||
Reference in New Issue
Block a user