mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Don't appendWaitOnEvents on already signaled event
Related-To: NEO-7534 Signed-off-by: Szymon Morek <szymon.morek@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
6040923c80
commit
8a2a12393d
@ -436,6 +436,13 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendPageFaultCopy(N
|
|||||||
|
|
||||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||||
ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendWaitOnEvents(uint32_t numEvents, ze_event_handle_t *phWaitEvents) {
|
ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendWaitOnEvents(uint32_t numEvents, ze_event_handle_t *phWaitEvents) {
|
||||||
|
bool allSignaled = true;
|
||||||
|
for (auto i = 0u; i < numEvents; i++) {
|
||||||
|
allSignaled &= (!this->dcFlushSupport && Event::fromHandle(phWaitEvents[i])->isAlreadyCompleted());
|
||||||
|
}
|
||||||
|
if (allSignaled) {
|
||||||
|
return ZE_RESULT_SUCCESS;
|
||||||
|
}
|
||||||
if (this->isFlushTaskSubmissionEnabled) {
|
if (this->isFlushTaskSubmissionEnabled) {
|
||||||
checkAvailableSpace();
|
checkAvailableSpace();
|
||||||
}
|
}
|
||||||
|
@ -505,6 +505,7 @@ class MockCommandListImmediateHw : public WhiteBox<::L0::CommandListCoreFamilyIm
|
|||||||
using BaseClass = WhiteBox<::L0::CommandListCoreFamilyImmediate<gfxCoreFamily>>;
|
using BaseClass = WhiteBox<::L0::CommandListCoreFamilyImmediate<gfxCoreFamily>>;
|
||||||
MockCommandListImmediateHw() : BaseClass() {}
|
MockCommandListImmediateHw() : BaseClass() {}
|
||||||
using BaseClass::applyMemoryRangesBarrier;
|
using BaseClass::applyMemoryRangesBarrier;
|
||||||
|
using BaseClass::dcFlushSupport;
|
||||||
using BaseClass::dependenciesPresent;
|
using BaseClass::dependenciesPresent;
|
||||||
using BaseClass::isFlushTaskSubmissionEnabled;
|
using BaseClass::isFlushTaskSubmissionEnabled;
|
||||||
using BaseClass::isSyncModeQueue;
|
using BaseClass::isSyncModeQueue;
|
||||||
|
@ -545,5 +545,31 @@ HWTEST2_F(MultTileCommandListAppendWaitOnEvent,
|
|||||||
EXPECT_EQ(2u, semaphoreWaitsFound);
|
EXPECT_EQ(2u, semaphoreWaitsFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HWTEST2_F(CommandListAppendWaitOnEvent, givenImmediateCommandListWhenAppendWaitOnNotSignaledEventThenWait, IsAtLeastSkl) {
|
||||||
|
MockCommandListImmediateHw<gfxCoreFamily> cmdList;
|
||||||
|
cmdList.initialize(device, NEO::EngineGroupType::RenderCompute, 0u);
|
||||||
|
cmdList.csr = device->getNEODevice()->getInternalEngine().commandStreamReceiver;
|
||||||
|
|
||||||
|
ze_event_handle_t eventHandle = event->toHandle();
|
||||||
|
|
||||||
|
EXPECT_FALSE(cmdList.dependenciesPresent);
|
||||||
|
EXPECT_EQ(ZE_RESULT_SUCCESS, cmdList.appendWaitOnEvents(1, &eventHandle));
|
||||||
|
EXPECT_TRUE(cmdList.dependenciesPresent);
|
||||||
|
}
|
||||||
|
|
||||||
|
HWTEST2_F(CommandListAppendWaitOnEvent, givenImmediateCommandListWhenAppendWaitOnAlreadySignaledEventThenDontWait, IsAtLeastSkl) {
|
||||||
|
MockCommandListImmediateHw<gfxCoreFamily> cmdList;
|
||||||
|
cmdList.initialize(device, NEO::EngineGroupType::RenderCompute, 0u);
|
||||||
|
cmdList.csr = device->getNEODevice()->getInternalEngine().commandStreamReceiver;
|
||||||
|
cmdList.dcFlushSupport = false;
|
||||||
|
event->hostSignal();
|
||||||
|
EXPECT_EQ(ZE_RESULT_SUCCESS, event->queryStatus());
|
||||||
|
ze_event_handle_t eventHandle = event->toHandle();
|
||||||
|
|
||||||
|
EXPECT_FALSE(cmdList.dependenciesPresent);
|
||||||
|
EXPECT_EQ(ZE_RESULT_SUCCESS, cmdList.appendWaitOnEvents(1, &eventHandle));
|
||||||
|
EXPECT_FALSE(cmdList.dependenciesPresent);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
@ -1124,8 +1124,17 @@ HWTEST2_F(AppendMemoryLockedCopyTest, givenImmediateCommandListWhenAppendWaitOnE
|
|||||||
cmdList.csr = device->getNEODevice()->getInternalEngine().commandStreamReceiver;
|
cmdList.csr = device->getNEODevice()->getInternalEngine().commandStreamReceiver;
|
||||||
|
|
||||||
EXPECT_FALSE(cmdList.dependenciesPresent);
|
EXPECT_FALSE(cmdList.dependenciesPresent);
|
||||||
|
ze_event_pool_desc_t eventPoolDesc = {};
|
||||||
cmdList.appendWaitOnEvents(0, nullptr);
|
eventPoolDesc.count = 1;
|
||||||
|
eventPoolDesc.flags = ZE_EVENT_POOL_FLAG_KERNEL_TIMESTAMP;
|
||||||
|
ze_event_desc_t eventDesc = {};
|
||||||
|
eventDesc.index = 0;
|
||||||
|
ze_result_t returnValue = ZE_RESULT_SUCCESS;
|
||||||
|
auto eventPool = std::unique_ptr<EventPool>(EventPool::create(driverHandle.get(), context, 0, nullptr, &eventPoolDesc, returnValue));
|
||||||
|
EXPECT_EQ(ZE_RESULT_SUCCESS, returnValue);
|
||||||
|
auto event = std::unique_ptr<Event>(Event::create<uint32_t>(eventPool.get(), &eventDesc, device));
|
||||||
|
auto eventHandle = event->toHandle();
|
||||||
|
cmdList.appendWaitOnEvents(1, &eventHandle);
|
||||||
|
|
||||||
EXPECT_TRUE(cmdList.dependenciesPresent);
|
EXPECT_TRUE(cmdList.dependenciesPresent);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user