@@ -87,17 +87,17 @@ uint64_t *event_profiling_data_t::eventEndTimestampAddr() {
8787 return &recordEventEndTimestamp;
8888}
8989
90- ur_event_handle_t_::ur_event_handle_t_ (ur_context_handle_t hContext,
91- ze_event_handle_t hZeEvent,
92- v2::event_flags_t flags)
93- : hContext(hContext), hZeEvent(hZeEvent ), flags(flags ),
94- profilingData(hZeEvent ) {}
90+ ur_event_handle_t_::ur_event_handle_t_ (
91+ ur_context_handle_t hContext, ur_event_handle_t_::event_variant hZeEvent,
92+ v2::event_flags_t flags, v2::event_pool *pool )
93+ : hContext(hContext), event_pool(pool ), hZeEvent(std::move(hZeEvent) ),
94+ flags(flags), profilingData(getZeEvent() ) {}
9595
9696void ur_event_handle_t_::resetQueueAndCommand (ur_queue_handle_t hQueue,
9797 ur_command_t commandType) {
9898 this ->hQueue = hQueue;
9999 this ->commandType = commandType;
100- profilingData = event_profiling_data_t (hZeEvent );
100+ profilingData = event_profiling_data_t (getZeEvent () );
101101}
102102
103103void ur_event_handle_t_::recordStartTimestamp () {
@@ -123,13 +123,16 @@ void ur_event_handle_t_::reset() {
123123 // consider make an abstraction for regular/counter based
124124 // events if there's more of this type of conditions
125125 if (!(flags & v2::EVENT_FLAGS_COUNTER)) {
126- zeEventHostReset (hZeEvent );
126+ zeEventHostReset (getZeEvent () );
127127 }
128128}
129129
130130ze_event_handle_t ur_event_handle_t_::getZeEvent () const {
131- assert (hZeEvent);
132- return hZeEvent;
131+ if (event_pool) {
132+ return std::get<v2::raii::cache_borrowed_event>(hZeEvent).get ();
133+ } else {
134+ return std::get<v2::raii::ze_event_handle_t >(hZeEvent).get ();
135+ }
133136}
134137
135138ur_result_t ur_event_handle_t_::retain () {
@@ -138,7 +141,7 @@ ur_result_t ur_event_handle_t_::retain() {
138141}
139142
140143ur_result_t ur_event_handle_t_::releaseDeferred () {
141- assert (zeEventQueryStatus (hZeEvent ) == ZE_RESULT_SUCCESS);
144+ assert (zeEventQueryStatus (getZeEvent () ) == ZE_RESULT_SUCCESS);
142145 assert (RefCount.load () == 0 );
143146
144147 return this ->forceRelease ();
@@ -176,7 +179,7 @@ bool ur_event_handle_t_::isProfilingEnabled() const {
176179
177180std::pair<uint64_t *, ze_event_handle_t >
178181ur_event_handle_t_::getEventEndTimestampAndHandle () {
179- return {profilingData.eventEndTimestampAddr (), hZeEvent };
182+ return {profilingData.eventEndTimestampAddr (), getZeEvent () };
180183}
181184
182185ur_queue_handle_t ur_event_handle_t_::getQueue () const { return hQueue; }
@@ -185,29 +188,33 @@ ur_context_handle_t ur_event_handle_t_::getContext() const { return hContext; }
185188
186189ur_command_t ur_event_handle_t_::getCommandType () const { return commandType; }
187190
188- ur_pooled_event_t :: ur_pooled_event_t (
191+ ur_event_handle_t_::ur_event_handle_t_ (
189192 ur_context_handle_t hContext,
190193 v2::raii::cache_borrowed_event eventAllocation, v2::event_pool *pool)
191- : ur_event_handle_t_(hContext, eventAllocation.get(), pool->getFlags ()),
192- zeEvent(std::move(eventAllocation)), pool(pool) {}
193-
194- ur_result_t ur_pooled_event_t::forceRelease () {
195- pool->free (this );
196- return UR_RESULT_SUCCESS;
197- }
194+ : ur_event_handle_t_(hContext, std::move(eventAllocation), pool->getFlags(),
195+ pool) {}
198196
199- ur_native_event_t :: ur_native_event_t (
200- ur_native_handle_t hNativeEvent, ur_context_handle_t hContext ,
197+ ur_event_handle_t_::ur_event_handle_t_ (
198+ ur_context_handle_t hContext, ur_native_handle_t hNativeEvent ,
201199 const ur_event_native_properties_t *pProperties)
202200 : ur_event_handle_t_(
203201 hContext,
204- reinterpret_cast <ze_event_handle_t >(hNativeEvent), v2::EVENT_FLAGS_PROFILING_ENABLED /* TODO: this follows legacy adapter logic, we could check this with zeEventGetPool */ ),
205- zeEvent (reinterpret_cast <ze_event_handle_t >(hNativeEvent),
206- pProperties ? pProperties->isNativeHandleOwned : false) {}
207-
208- ur_result_t ur_native_event_t::forceRelease () {
209- zeEvent.release ();
210- delete this ;
202+ v2::raii::ze_event_handle_t {
203+ reinterpret_cast <ze_event_handle_t >(hNativeEvent),
204+ pProperties ? pProperties->isNativeHandleOwned : false },
205+ v2::EVENT_FLAGS_PROFILING_ENABLED /* TODO: this follows legacy adapter
206+ logic, we could check this with
207+ zeEventGetPool */
208+ ,
209+ nullptr ) {}
210+
211+ ur_result_t ur_event_handle_t_::forceRelease () {
212+ if (event_pool) {
213+ event_pool->free (this );
214+ } else {
215+ std::get<v2::raii::ze_event_handle_t >(hZeEvent).release ();
216+ delete this ;
217+ }
211218 return UR_RESULT_SUCCESS;
212219}
213220
@@ -389,7 +396,7 @@ urEventCreateWithNativeHandle(ur_native_handle_t hNativeEvent,
389396 *phEvent = hContext->nativeEventsPool .allocate ();
390397 ZE2UR_CALL (zeEventHostSignal, ((*phEvent)->getZeEvent ()));
391398 } else {
392- *phEvent = new ur_native_event_t (hNativeEvent, hContext , pProperties);
399+ *phEvent = new ur_event_handle_t_ (hContext, hNativeEvent , pProperties);
393400 }
394401 return UR_RESULT_SUCCESS;
395402} catch (...) {
0 commit comments