mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 15:53:45 +08:00
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:
committed by
Compute-Runtime-Automation
parent
4067b899cc
commit
cd563c2761
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user