mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
feature: api support for Event sync mode
Related-To: NEO-8179 Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
8b58cbbad8
commit
156154813a
@@ -256,7 +256,9 @@ struct Event : _ze_event_handle_t {
|
||||
bool hasKerneMappedTsCapability = false;
|
||||
std::shared_ptr<InOrderExecInfo> &getInOrderExecInfo() { return inOrderExecInfo; }
|
||||
void enableKmdWaitMode() { kmdWaitMode = true; }
|
||||
void enableInterruptMode() { interruptMode = true; }
|
||||
bool isKmdWaitModeEnabled() const { return kmdWaitMode; }
|
||||
bool isInterruptModeEnabled() const { return interruptMode; }
|
||||
void unsetInOrderExecInfo();
|
||||
|
||||
protected:
|
||||
@@ -317,6 +319,7 @@ struct Event : _ze_event_handle_t {
|
||||
bool signalAllEventPackets = false;
|
||||
bool isFromIpcPool = false;
|
||||
bool kmdWaitMode = false;
|
||||
bool interruptMode = false;
|
||||
uint64_t timestampRefreshIntervalInNanoSec = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -88,10 +88,29 @@ Event *Event::create(EventPool *eventPool, const ze_event_desc_t *desc, Device *
|
||||
event->enableCounterBasedMode(true);
|
||||
}
|
||||
|
||||
if (NEO::debugManager.flags.WaitForUserFenceOnEventHostSynchronize.get() == 1) {
|
||||
auto extendedDesc = reinterpret_cast<const ze_base_desc_t *>(desc->pNext);
|
||||
|
||||
bool interruptMode = false;
|
||||
bool kmdWaitMode = false;
|
||||
|
||||
if (extendedDesc && (extendedDesc->stype == ZE_INTEL_STRUCTURE_TYPE_EVENT_SYNC_MODE_EXP_DESC)) {
|
||||
auto eventSyncModeDesc = reinterpret_cast<const ze_intel_event_sync_mode_exp_desc_t *>(extendedDesc);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
interruptMode |= (NEO::debugManager.flags.WaitForUserFenceOnEventHostSynchronize.get() == 1);
|
||||
kmdWaitMode |= (NEO::debugManager.flags.WaitForUserFenceOnEventHostSynchronize.get() == 1);
|
||||
|
||||
if (kmdWaitMode) {
|
||||
event->enableKmdWaitMode();
|
||||
}
|
||||
|
||||
if (interruptMode) {
|
||||
event->enableInterruptMode();
|
||||
}
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user