test: when hostStorageDuplicated sempahores still wait for device address

Related-to: NEO-12737

Signed-off-by: Damian Tomczak <damian.tomczak@intel.com>
This commit is contained in:
Damian Tomczak
2025-02-11 20:50:09 +00:00
committed by Compute-Runtime-Automation
parent 3759ab279f
commit f4b60f90f7
2 changed files with 57 additions and 7 deletions

View File

@@ -3954,9 +3954,10 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWhenProgrammingComputeCopyThenDon
context->freeMem(alloc);
}
HWTEST2_F(InOrderCmdListTests, givenAlocFlushRequiredhenProgrammingComputeCopyThenSingalFromSdi, IsAtLeastXeHpCore) {
HWTEST2_F(InOrderCmdListTests, givenAllocFlushRequiredWhenProgrammingComputeCopyThenSignalFromSdi, IsAtLeastXeHpCore) {
using WalkerVariant = typename FamilyType::WalkerVariant;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
using MI_ATOMIC = typename FamilyType::MI_ATOMIC;
auto immCmdList = createImmCmdList<gfxCoreFamily>();
auto cmdStream = immCmdList->getCmdContainer().getCommandStream();
@@ -3985,13 +3986,28 @@ HWTEST2_F(InOrderCmdListTests, givenAlocFlushRequiredhenProgrammingComputeCopyTh
},
walkerVariant);
auto sdiItor = find<MI_STORE_DATA_IMM *>(walkerItor, cmdList.end());
auto inOrderExecInfo = immCmdList->inOrderExecInfo;
auto gpuAddress = inOrderExecInfo->getBaseDeviceAddress();
auto miAtomicItor = find<MI_ATOMIC *>(walkerItor, cmdList.end());
if (device->getProductHelper().isDcFlushAllowed() && inOrderExecInfo->isHostStorageDuplicated()) {
EXPECT_NE(cmdList.end(), miAtomicItor);
auto miAtomicCmd = genCmdCast<MI_ATOMIC *>(*miAtomicItor);
EXPECT_EQ(gpuAddress, miAtomicCmd->getMemoryAddress());
} else {
EXPECT_EQ(cmdList.end(), miAtomicItor);
}
auto sdiItor = find<MI_STORE_DATA_IMM *>(walkerItor, cmdList.end());
if (dcFlushRequired) {
EXPECT_NE(cmdList.end(), sdiItor);
auto sdiCmd = genCmdCast<MI_STORE_DATA_IMM *>(*sdiItor);
auto inOrderExecInfo = immCmdList->inOrderExecInfo;
if (inOrderExecInfo->isHostStorageDuplicated()) {
gpuAddress = reinterpret_cast<uint64_t>(inOrderExecInfo->getBaseHostAddress());
}
EXPECT_EQ(immCmdList->inOrderExecInfo->getBaseDeviceAddress(), sdiCmd->getAddress());
auto sdiCmd = genCmdCast<MI_STORE_DATA_IMM *>(*sdiItor);
EXPECT_EQ(gpuAddress, sdiCmd->getAddress());
} else {
EXPECT_EQ(cmdList.end(), sdiItor);
}

View File

@@ -3351,7 +3351,7 @@ void BcsSplitInOrderCmdListTests::verifySplitCmds(LinearStream &cmdStream, size_
auto inOrderExecInfo = immCmdList.inOrderExecInfo;
auto counterGpuAddress = inOrderExecInfo->isHostStorageDuplicated() ? reinterpret_cast<uint64_t>(inOrderExecInfo->getBaseHostAddress()) : inOrderExecInfo->getBaseDeviceAddress();
auto counterGpuAddress = inOrderExecInfo->getBaseDeviceAddress();
GenCmdList cmdList;
ASSERT_TRUE(FamilyType::Parse::parseCommandBuffer(cmdList, ptrOffset(cmdStream.getCpuBase(), streamOffset), (cmdStream.getUsed() - streamOffset)));
@@ -3441,6 +3441,10 @@ void BcsSplitInOrderCmdListTests::verifySplitCmds(LinearStream &cmdStream, size_
auto implicitCounterSdi = genCmdCast<MI_STORE_DATA_IMM *>(*(++itor));
ASSERT_NE(nullptr, implicitCounterSdi);
if (inOrderExecInfo->isHostStorageDuplicated()) {
counterGpuAddress = reinterpret_cast<uint64_t>(inOrderExecInfo->getBaseHostAddress());
}
EXPECT_EQ(counterGpuAddress, implicitCounterSdi->getAddress());
EXPECT_EQ(submissionId + 1, implicitCounterSdi->getDataDword0());
@@ -3453,6 +3457,7 @@ void BcsSplitInOrderCmdListTests::verifySplitCmds(LinearStream &cmdStream, size_
HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyThenHandleInOrderSignaling, IsAtLeastXeHpcCore) {
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
using MI_ATOMIC = typename FamilyType::MI_ATOMIC;
auto immCmdList = createBcsSplitImmCmdList<gfxCoreFamily>();
@@ -3475,6 +3480,18 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyTh
auto semaphoreItor = find<MI_SEMAPHORE_WAIT *>(cmdList.begin(), cmdList.end());
ASSERT_NE(cmdList.end(), semaphoreItor);
auto inOrderExecInfo = immCmdList->inOrderExecInfo;
auto gpuAddress = inOrderExecInfo->getBaseDeviceAddress();
auto miAtomicItor = find<MI_ATOMIC *>(semaphoreItor, cmdList.end());
if (inOrderExecInfo->isHostStorageDuplicated()) {
EXPECT_NE(cmdList.end(), miAtomicItor);
auto miAtomicCmd = genCmdCast<MI_ATOMIC *>(*miAtomicItor);
EXPECT_EQ(gpuAddress, miAtomicCmd->getMemoryAddress());
} else {
EXPECT_EQ(cmdList.end(), miAtomicItor);
}
auto sdiItor = find<MI_STORE_DATA_IMM *>(semaphoreItor, cmdList.end());
ASSERT_NE(cmdList.end(), sdiItor);
@@ -3482,7 +3499,9 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyTh
ASSERT_NE(nullptr, sdiCmd);
auto gpuAddress = immCmdList->inOrderExecInfo->getBaseDeviceAddress();
if (inOrderExecInfo->isHostStorageDuplicated()) {
gpuAddress = reinterpret_cast<uint64_t>(inOrderExecInfo->getBaseHostAddress());
}
EXPECT_EQ(gpuAddress, sdiCmd->getAddress());
EXPECT_EQ(immCmdList->isQwordInOrderCounter(), sdiCmd->getStoreQword());
@@ -3568,6 +3587,7 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenAppendingMemoryCo
HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyRegionThenHandleInOrderSignaling, IsAtLeastXeHpcCore) {
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
using MI_ATOMIC = typename FamilyType::MI_ATOMIC;
auto immCmdList = createBcsSplitImmCmdList<gfxCoreFamily>();
@@ -3592,6 +3612,18 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyRe
auto semaphoreItor = find<MI_SEMAPHORE_WAIT *>(cmdList.begin(), cmdList.end());
ASSERT_NE(cmdList.end(), semaphoreItor);
auto inOrderExecInfo = immCmdList->inOrderExecInfo;
auto gpuAddress = inOrderExecInfo->getBaseDeviceAddress();
auto miAtomicItor = find<MI_ATOMIC *>(semaphoreItor, cmdList.end());
if (inOrderExecInfo->isHostStorageDuplicated()) {
EXPECT_NE(cmdList.end(), miAtomicItor);
auto miAtomicCmd = genCmdCast<MI_ATOMIC *>(*miAtomicItor);
EXPECT_EQ(gpuAddress, miAtomicCmd->getMemoryAddress());
} else {
EXPECT_EQ(cmdList.end(), miAtomicItor);
}
auto sdiItor = find<MI_STORE_DATA_IMM *>(semaphoreItor, cmdList.end());
ASSERT_NE(cmdList.end(), sdiItor);
@@ -3599,7 +3631,9 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyRe
ASSERT_NE(nullptr, sdiCmd);
auto gpuAddress = immCmdList->inOrderExecInfo->getBaseDeviceAddress();
if (inOrderExecInfo->isHostStorageDuplicated()) {
gpuAddress = reinterpret_cast<uint64_t>(inOrderExecInfo->getBaseHostAddress());
}
EXPECT_EQ(gpuAddress, sdiCmd->getAddress());
EXPECT_EQ(immCmdList->isQwordInOrderCounter(), sdiCmd->getStoreQword());