feature: new multitile post sync layout for immediate write [1/n]

No functional changes in this commit. This is prework.

Related-To: NEO-7966

Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz
2023-06-06 15:11:09 +00:00
committed by Compute-Runtime-Automation
parent 6abdc64d73
commit 5fe9d70066
37 changed files with 93 additions and 77 deletions

View File

@@ -386,7 +386,7 @@ void CommandListCoreFamily<gfxCoreFamily>::appendMultiPartitionPrologue(uint32_t
template <GFXCORE_FAMILY gfxCoreFamily>
void CommandListCoreFamily<gfxCoreFamily>::appendMultiPartitionEpilogue() {
NEO::ImplicitScalingDispatch<GfxFamily>::dispatchOffsetRegister(*commandContainer.getCommandStream(),
NEO::ImplicitScalingDispatch<GfxFamily>::getPostSyncOffset());
NEO::ImplicitScalingDispatch<GfxFamily>::getImmediateWritePostSyncOffset());
}
template <GFXCORE_FAMILY gfxCoreFamily>

View File

@@ -98,7 +98,7 @@ HWTEST2_F(MultiPartitionEpilogueTest, whenAppendMultiPartitionEpilogueIsCalledTh
auto lriCmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorLri);
EXPECT_EQ(NEO::PartitionRegisters<FamilyType>::addressOffsetCCSOffset, static_cast<uint64_t>(lriCmd->getRegisterOffset()));
EXPECT_EQ(NEO::ImplicitScalingDispatch<FamilyType>::getPostSyncOffset(), static_cast<uint32_t>(lriCmd->getDataDword()));
EXPECT_EQ(NEO::ImplicitScalingDispatch<FamilyType>::getImmediateWritePostSyncOffset(), static_cast<uint32_t>(lriCmd->getDataDword()));
EXPECT_EQ(true, lriCmd->getMmioRemapEnable());
auto result = commandList->close();

View File

@@ -302,11 +302,11 @@ HWTEST2_F(MultiTileCommandQueueSynchronizeTest, givenMultiplePartitionCountWhenC
if (device->getNEODevice()->getPreemptionMode() == PreemptionMode::MidThread || device->getNEODevice()->isDebuggerActive()) {
csr->createPreemptionAllocation();
}
EXPECT_NE(0u, csr->getPostSyncWriteOffset());
EXPECT_NE(0u, csr->getImmWritePostSyncWriteOffset());
volatile TagAddressType *tagAddress = csr->getTagAddress();
for (uint32_t i = 0; i < 2; i++) {
*tagAddress = 0xFF;
tagAddress = ptrOffset(tagAddress, csr->getPostSyncWriteOffset());
tagAddress = ptrOffset(tagAddress, csr->getImmWritePostSyncWriteOffset());
}
csr->activePartitions = 2u;
auto commandQueue = whiteboxCast(CommandQueue::create(productFamily,
@@ -345,11 +345,11 @@ HWTEST2_F(MultiTileCommandQueueSynchronizeTest, givenCsrHasMultipleActivePartiti
if (device->getNEODevice()->getPreemptionMode() == PreemptionMode::MidThread || device->getNEODevice()->isDebuggerActive()) {
csr->createPreemptionAllocation();
}
EXPECT_NE(0u, csr->getPostSyncWriteOffset());
EXPECT_NE(0u, csr->getImmWritePostSyncWriteOffset());
volatile TagAddressType *tagAddress = csr->getTagAddress();
for (uint32_t i = 0; i < 2; i++) {
*tagAddress = 0xFF;
tagAddress = ptrOffset(tagAddress, csr->getPostSyncWriteOffset());
tagAddress = ptrOffset(tagAddress, csr->getImmWritePostSyncWriteOffset());
}
csr->activePartitions = 2u;
auto commandQueue = whiteboxCast(CommandQueue::create(productFamily,

View File

@@ -239,7 +239,7 @@ TEST_F(FenceSynchronizeTest, givenInfiniteTimeoutWhenWaitingForFenceCompletionTh
const auto csr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
ASSERT_NE(nullptr, csr->getTagAddress());
csr->postSyncWriteOffset = postSyncOffset;
csr->immWritePostSyncWriteOffset = postSyncOffset;
csr->activePartitions = activePartitions;
Mock<CommandQueue> cmdqueue(device, csr.get());