Skip to content

Commit 6625711

Browse files
committed
retain context in queue/command buffer
1 parent a140ef8 commit 6625711

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

unified-runtime/source/adapters/level_zero/v2/command_buffer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ ur_exp_command_buffer_handle_t_::ur_exp_command_buffer_handle_t_(
113113
isInOrder(desc ? desc->isInOrder : false),
114114
commandListManager(
115115
context, device,
116-
std::forward<v2::raii::command_list_unique_handle>(commandList)) {}
116+
std::forward<v2::raii::command_list_unique_handle>(commandList)) {
117+
ur::level_zero::urContextRetain(context);
118+
}
117119

118120
ur_exp_command_buffer_sync_point_t
119121
ur_exp_command_buffer_handle_t_::getSyncPoint(ur_event_handle_t event) {
@@ -197,6 +199,7 @@ ur_exp_command_buffer_handle_t_::~ur_exp_command_buffer_handle_t_() {
197199
for (auto &event : syncPoints) {
198200
event->release();
199201
}
202+
ur::level_zero::urContextRelease(context);
200203
}
201204

202205
ur_result_t ur_exp_command_buffer_handle_t_::applyUpdateCommands(

unified-runtime/source/adapters/level_zero/v2/queue_immediate_in_order.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ ur_queue_immediate_in_order_t::ur_queue_immediate_in_order_t(
3636
hDevice->ZeDevice,
3737
{true, ordinal, true /* always enable copy offload */},
3838
ZE_COMMAND_QUEUE_MODE_ASYNCHRONOUS, priority, index)),
39-
flags(flags) {}
39+
flags(flags) {
40+
ur::level_zero::urContextRetain(hContext);
41+
}
4042

4143
ur_queue_immediate_in_order_t::ur_queue_immediate_in_order_t(
4244
ur_context_handle_t hContext, ur_device_handle_t hDevice,
@@ -46,7 +48,9 @@ ur_queue_immediate_in_order_t::ur_queue_immediate_in_order_t(
4648
eventPool(hContext->getEventPoolCache(PoolCacheType::Immediate)
4749
.borrow(hDevice->Id.value(), eventFlags)),
4850
commandListManager(hContext, hDevice, std::move(commandListHandle)),
49-
flags(flags) {}
51+
flags(flags) {
52+
ur::level_zero::urContextRetain(hContext);
53+
}
5054

5155
ur_result_t
5256
ur_queue_immediate_in_order_t::queueGetInfo(ur_queue_info_t propName,
@@ -122,6 +126,7 @@ ur_result_t ur_queue_immediate_in_order_t::queueFlush() {
122126
ur_queue_immediate_in_order_t::~ur_queue_immediate_in_order_t() {
123127
try {
124128
UR_CALL_THROWS(queueFinish());
129+
ur::level_zero::urContextRelease(hContext);
125130
} catch (...) {
126131
// Ignore errors during destruction
127132
}

0 commit comments

Comments
 (0)