Skip to content

Commit f3b3e72

Browse files
committed
Refactor common.hpp
1 parent 611196c commit f3b3e72

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

source/adapters/level_zero/v2/common.hpp

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,26 @@
1616
#include "../common.hpp"
1717
#include "logger/ur_logger.hpp"
1818
namespace {
19-
const char *desturctorNames[] = {"zeKernelDestroy", "zeEventDestroy",
20-
"zeEventPoolDestroy", "zeContextDestroy",
21-
"zeCommandListDestroy"};
22-
}
19+
#define DECLARE_DESTROY_FUNCTION(name) \
20+
template <typename ZeHandleT> ze_result_t name##_wrapped(ZeHandleT handle) { \
21+
return ZE_CALL_NOCHECK_NAME(name, (handle), #name); \
22+
}
23+
24+
#define HANDLE_WRAPPER_TYPE(handle, destroy) \
25+
ze_handle_wrapper<handle, destroy##_wrapped<handle>>
26+
27+
DECLARE_DESTROY_FUNCTION(zeKernelDestroy);
28+
DECLARE_DESTROY_FUNCTION(zeEventDestroy);
29+
DECLARE_DESTROY_FUNCTION(zeEventPoolDestroy);
30+
DECLARE_DESTROY_FUNCTION(zeContextDestroy);
31+
DECLARE_DESTROY_FUNCTION(zeCommandListDestroy);
32+
} // namespace
2333

2434
namespace v2 {
2535

2636
namespace raii {
2737

28-
template <typename ZeHandleT, ze_result_t (*destroy)(ZeHandleT), size_t nameId>
38+
template <typename ZeHandleT, ze_result_t (*destroy)(ZeHandleT)>
2939
struct ze_handle_wrapper {
3040
ze_handle_wrapper(bool ownZeHandle = true)
3141
: handle(nullptr), ownZeHandle(ownZeHandle) {}
@@ -70,8 +80,7 @@ struct ze_handle_wrapper {
7080
}
7181

7282
if (ownZeHandle) {
73-
auto zeResult =
74-
ZE_CALL_NOCHECK_NAME(destroy, (handle), desturctorNames[nameId]);
83+
auto zeResult = destroy(handle);
7584
// Gracefully handle the case that L0 was already unloaded.
7685
if (zeResult && zeResult != ZE_RESULT_ERROR_UNINITIALIZED)
7786
throw ze2urResult(zeResult);
@@ -95,20 +104,20 @@ struct ze_handle_wrapper {
95104
bool ownZeHandle;
96105
};
97106

98-
using ze_kernel_handle_t =
99-
ze_handle_wrapper<::ze_kernel_handle_t, zeKernelDestroy, 0>;
107+
using ze_kernel_handle_t = HANDLE_WRAPPER_TYPE(::ze_kernel_handle_t,
108+
zeKernelDestroy);
100109

101-
using ze_event_handle_t =
102-
ze_handle_wrapper<::ze_event_handle_t, zeEventDestroy, 1>;
110+
using ze_event_handle_t = HANDLE_WRAPPER_TYPE(::ze_event_handle_t,
111+
zeEventDestroy);
103112

104-
using ze_event_pool_handle_t =
105-
ze_handle_wrapper<::ze_event_pool_handle_t, zeEventPoolDestroy, 2>;
113+
using ze_event_pool_handle_t = HANDLE_WRAPPER_TYPE(::ze_event_pool_handle_t,
114+
zeEventPoolDestroy);
106115

107-
using ze_context_handle_t =
108-
ze_handle_wrapper<::ze_context_handle_t, zeContextDestroy, 3>;
116+
using ze_context_handle_t = HANDLE_WRAPPER_TYPE(::ze_context_handle_t,
117+
zeContextDestroy);
109118

110-
using ze_command_list_handle_t =
111-
ze_handle_wrapper<::ze_command_list_handle_t, zeCommandListDestroy, 4>;
119+
using ze_command_list_handle_t = HANDLE_WRAPPER_TYPE(::ze_command_list_handle_t,
120+
zeCommandListDestroy);
112121

113122
} // namespace raii
114123
} // namespace v2

0 commit comments

Comments
 (0)