feature: assign external interrupt id to Event

Related-To: NEO-8179

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2024-04-17 12:02:39 +00:00
committed by Compute-Runtime-Automation
parent 4067b899cc
commit cd563c2761
4 changed files with 43 additions and 6 deletions

View File

@@ -288,6 +288,8 @@ struct Event : _ze_event_handle_t {
return this->signalAllEventPackets ? getMaxPacketsCount() : getPacketsInUse();
}
void setExternalInterruptId(uint32_t interruptId) { externalInterruptId = interruptId; }
protected:
Event(int index, Device *device) : device(device), index(index) {}
@@ -335,6 +337,8 @@ struct Event : _ze_event_handle_t {
uint32_t maxPacketCount = 0;
uint32_t totalEventSize = 0;
uint32_t counterBasedFlags = 0;
uint32_t externalInterruptId = 0;
CounterBasedMode counterBasedMode = CounterBasedMode::initiallyDisabled;
ze_event_scope_flags_t signalScope = 0u;

View File

@@ -30,8 +30,8 @@ Event *Event::create(const EventDescriptor &eventDescriptor, const ze_event_desc
auto csr = neoDevice->getDefaultEngine().commandStreamReceiver;
auto &hwInfo = neoDevice->getHardwareInfo();
auto event = new EventImp<TagSizeT>(desc->index, device, csr->isTbxMode());
UNRECOVERABLE_IF(event == nullptr);
auto event = std::make_unique<EventImp<TagSizeT>>(desc->index, device, csr->isTbxMode());
UNRECOVERABLE_IF(!event.get());
event->eventPoolAllocation = eventDescriptor.eventPoolAllocation;
@@ -103,6 +103,11 @@ Event *Event::create(const EventDescriptor &eventDescriptor, const ze_event_desc
interruptMode = (eventSyncModeDesc->syncModeFlags & ZE_INTEL_EVENT_SYNC_MODE_EXP_FLAG_SIGNAL_INTERRUPT);
kmdWaitMode = (eventSyncModeDesc->syncModeFlags & ZE_INTEL_EVENT_SYNC_MODE_EXP_FLAG_LOW_POWER_WAIT);
if (kmdWaitMode) {
event->setExternalInterruptId(eventSyncModeDesc->externalInterruptId);
UNRECOVERABLE_IF(eventSyncModeDesc->externalInterruptId > 0 && eventDescriptor.eventPoolAllocation);
}
}
interruptMode |= (NEO::debugManager.flags.WaitForUserFenceOnEventHostSynchronize.get() == 1);
@@ -116,7 +121,7 @@ Event *Event::create(const EventDescriptor &eventDescriptor, const ze_event_desc
event->enableInterruptMode();
}
return event;
return event.release();
}
template <typename TagSizeT>