Flip order of instructions in appendWaitOnEvents
It might be beneficial to flush the caches in parallel with the wait instruction Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@intel.com>
This commit is contained in:
parent
aa79af46ac
commit
8f36ca5736
|
@ -1474,17 +1474,6 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendWaitOnEvents(uint32_t nu
|
||||||
|
|
||||||
for (uint32_t i = 0; i < numEvents; i++) {
|
for (uint32_t i = 0; i < numEvents; i++) {
|
||||||
auto event = Event::fromHandle(phEvent[i]);
|
auto event = Event::fromHandle(phEvent[i]);
|
||||||
commandContainer.addToResidencyContainer(&event->getAllocation());
|
|
||||||
|
|
||||||
gpuAddr = event->getGpuAddress();
|
|
||||||
if (event->isTimestampEvent) {
|
|
||||||
gpuAddr += offsetof(TimestampPacketStorage::Packet, contextEnd);
|
|
||||||
}
|
|
||||||
NEO::EncodeSempahore<GfxFamily>::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(),
|
|
||||||
gpuAddr,
|
|
||||||
eventStateClear,
|
|
||||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
|
|
||||||
|
|
||||||
dcFlushRequired |= (!event->waitScope) ? false : true;
|
dcFlushRequired |= (!event->waitScope) ? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1497,6 +1486,20 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendWaitOnEvents(uint32_t nu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < numEvents; i++) {
|
||||||
|
auto event = Event::fromHandle(phEvent[i]);
|
||||||
|
commandContainer.addToResidencyContainer(&event->getAllocation());
|
||||||
|
|
||||||
|
gpuAddr = event->getGpuAddress();
|
||||||
|
if (event->isTimestampEvent) {
|
||||||
|
gpuAddr += offsetof(TimestampPacketStorage::Packet, contextEnd);
|
||||||
|
}
|
||||||
|
NEO::EncodeSempahore<GfxFamily>::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(),
|
||||||
|
gpuAddr,
|
||||||
|
eventStateClear,
|
||||||
|
COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
|
||||||
|
}
|
||||||
|
|
||||||
return ZE_RESULT_SUCCESS;
|
return ZE_RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -990,7 +990,7 @@ HWTEST_F(CommandListCreate, givenCommandListyWhenAppendWaitEventsWithDcFlushTheP
|
||||||
EXPECT_NE(cmdList.end(), itor);
|
EXPECT_NE(cmdList.end(), itor);
|
||||||
}
|
}
|
||||||
|
|
||||||
HWTEST_F(CommandListCreate, givenCommandListyWhenAppendWaitEventsWithDcFlushThePipeControlIsProgrammedOnlyOnce) {
|
HWTEST_F(CommandListCreate, givenCommandListWhenAppendWaitEventsWithDcFlushThePipeControlIsProgrammedOnlyOnce) {
|
||||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||||
using SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
|
using SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
|
||||||
ze_result_t returnValue;
|
ze_result_t returnValue;
|
||||||
|
@ -1007,14 +1007,11 @@ HWTEST_F(CommandListCreate, givenCommandListyWhenAppendWaitEventsWithDcFlushTheP
|
||||||
ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(
|
ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(
|
||||||
cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed()));
|
cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed()));
|
||||||
|
|
||||||
auto itor = find<SEMAPHORE_WAIT *>(cmdList.begin(), cmdList.end());
|
auto itor = find<PIPE_CONTROL *>(cmdList.begin(), cmdList.end());
|
||||||
EXPECT_NE(cmdList.end(), itor);
|
EXPECT_NE(cmdList.end(), itor);
|
||||||
itor++;
|
itor++;
|
||||||
auto itor2 = find<PIPE_CONTROL *>(itor, cmdList.end());
|
auto itor2 = find<SEMAPHORE_WAIT *>(itor, cmdList.end());
|
||||||
EXPECT_NE(cmdList.end(), itor2);
|
EXPECT_NE(cmdList.end(), itor2);
|
||||||
itor2++;
|
|
||||||
auto itor3 = find<PIPE_CONTROL *>(itor2, cmdList.end());
|
|
||||||
EXPECT_EQ(cmdList.end(), itor3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
using Platforms = IsAtLeastProduct<IGFX_SKYLAKE>;
|
using Platforms = IsAtLeastProduct<IGFX_SKYLAKE>;
|
||||||
|
|
Loading…
Reference in New Issue