mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 21:18:24 +08:00
feature: make CB event initially signaled
Related-To: NEO-11378 Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
f10439aea2
commit
21114ddc03
@@ -2646,16 +2646,16 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendWaitOnEvents(uint32_t nu
|
||||
for (uint32_t i = 0; i < numEvents; i++) {
|
||||
auto event = Event::fromHandle(phEvent[i]);
|
||||
|
||||
if (event->isCounterBased() && !event->getInOrderExecInfo().get()) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT; // in-order event not signaled yet
|
||||
}
|
||||
|
||||
if ((isImmediateType() && event->isAlreadyCompleted()) ||
|
||||
canSkipInOrderEventWait(*event, this->allowCbWaitEventsNoopDispatch)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (event->isCounterBased()) {
|
||||
if (!event->getInOrderExecInfo().get()) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT; // in-order event not signaled yet
|
||||
}
|
||||
|
||||
// 1. Regular CmdList adds submission counter to base value on each Execute
|
||||
// 2. Immediate CmdList takes current value (with submission counter)
|
||||
auto waitValue = !isImmediateType() ? event->getInOrderExecBaseSignalValue() : event->getInOrderExecSignalValueWithSubmissionCounter();
|
||||
|
||||
@@ -220,7 +220,7 @@ void EventImp<TagSizeT>::assignKernelEventCompletionData(void *address) {
|
||||
template <typename TagSizeT>
|
||||
ze_result_t EventImp<TagSizeT>::queryCounterBasedEventStatus() {
|
||||
if (!this->inOrderExecInfo.get()) {
|
||||
return ZE_RESULT_NOT_READY;
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
auto waitValue = getInOrderExecSignalValueWithSubmissionCounter();
|
||||
@@ -520,7 +520,7 @@ ze_result_t EventImp<TagSizeT>::waitForUserFence(uint64_t timeout) {
|
||||
}
|
||||
|
||||
if (!inOrderExecInfo) {
|
||||
return ZE_RESULT_NOT_READY;
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
uint64_t waitAddress = castToUint64(ptrOffset(inOrderExecInfo->getBaseHostAddress(), this->inOrderAllocationOffset));
|
||||
|
||||
@@ -36,11 +36,13 @@ struct InOrderCmdListFixture : public ::Test<ModuleFixture> {
|
||||
|
||||
void makeCounterBasedInitiallyDisabled() {
|
||||
counterBasedMode = CounterBasedMode::initiallyDisabled;
|
||||
resetCompletionStatus();
|
||||
counterBasedFlags = 0;
|
||||
}
|
||||
|
||||
void makeCounterBasedImplicitlyDisabled() {
|
||||
counterBasedMode = CounterBasedMode::implicitlyDisabled;
|
||||
resetCompletionStatus();
|
||||
counterBasedFlags = 0;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -235,11 +235,11 @@ HWTEST2_F(InOrderCmdListTests, givenIpcPoolEventWhenTryingToImplicitlyConverToCo
|
||||
EXPECT_EQ(Event::CounterBasedMode::implicitlyDisabled, event1->counterBasedMode);
|
||||
}
|
||||
|
||||
HWTEST2_F(InOrderCmdListTests, givenNotSignaledInOrderWhenWhenCallingQueryStatusThenReturnNotReady, IsAtLeastSkl) {
|
||||
HWTEST2_F(InOrderCmdListTests, givenNotSignaledInOrderWhenWhenCallingQueryStatusThenReturnSuccess, IsAtLeastSkl) {
|
||||
auto eventPool = createEvents<FamilyType>(1, false);
|
||||
events[0]->enableCounterBasedMode(true, eventPool->getCounterBasedFlags());
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_NOT_READY, events[0]->queryStatus());
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, events[0]->queryStatus());
|
||||
}
|
||||
|
||||
HWTEST2_F(InOrderCmdListTests, givenCmdListsWhenDispatchingThenUseInternalTaskCountForWaits, IsAtLeastSkl) {
|
||||
@@ -347,7 +347,7 @@ HWTEST2_F(InOrderCmdListTests, givenDebugFlagSetWhenEventHostSyncCalledThenCallW
|
||||
EXPECT_TRUE(events[1]->isKmdWaitModeEnabled());
|
||||
EXPECT_TRUE(events[1]->isInterruptModeEnabled());
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_NOT_READY, events[0]->hostSynchronize(2));
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, events[0]->hostSynchronize(2));
|
||||
|
||||
immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user