38 #include <type_traits>
43 inline namespace _V1 {
44 namespace ext::oneapi::level_zero {
53 bool keep_ownership =
false);
56 bool IsImmCmdList,
bool keep_ownership,
60 bool keep_ownership =
false);
64 typename std::enable_if_t<std::is_same_v<T, platform>> * =
nullptr>
73 typename std::enable_if_t<std::is_same_v<T, device>> * =
nullptr>
90 template <
typename T, std::enable_if_t<std::is_same_v<T, context>> * =
nullptr>
97 sycl::detail::pi::cast<pi_native_handle>(Interop),
102 template <
typename T,
103 typename std::enable_if_t<std::is_same_v<T, event>> * =
nullptr>
117 inline context make_context<backend::ext_oneapi_level_zero>(
123 BackendObject.DeviceList,
124 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
130 inline queue make_queue<backend::ext_oneapi_level_zero>(
135 bool IsImmCmdList = std::holds_alternative<ze_command_list_handle_t>(
136 BackendObject.NativeHandle);
139 *(std::get_if<ze_command_list_handle_t>(
140 &BackendObject.NativeHandle)))
142 *(std::get_if<ze_command_queue_handle_t>(
143 &BackendObject.NativeHandle)));
145 TargetContext, Device, Handle, IsImmCmdList,
147 BackendObject.Properties);
152 inline auto get_native<backend::ext_oneapi_level_zero, queue>(
const queue &Obj)
154 int32_t IsImmCmdList;
166 inline event make_event<backend::ext_oneapi_level_zero>(
168 const context &TargetContext) {
171 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
178 make_kernel_bundle<backend::ext_oneapi_level_zero, bundle_state::executable>(
182 const context &TargetContext) {
183 std::shared_ptr<detail::kernel_bundle_impl> KBImpl =
185 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
189 return detail::createSyclObjFromImpl<kernel_bundle<bundle_state::executable>>(
195 inline kernel make_kernel<backend::ext_oneapi_level_zero>(
198 const context &TargetContext) {
200 TargetContext, BackendObject.KernelBundle,
201 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
215 return detail::make_buffer_helper<T, Dimensions, AllocatorT>(
216 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
217 TargetContext, AvailableEvent,
229 const context &TargetContext) {
230 return detail::make_buffer_helper<T, Dimensions, AllocatorT>(
231 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
232 TargetContext,
event{},
245 bool OwnNativeHandle =
249 detail::pi::cast<pi_native_handle>(BackendObject.ZeImageHandle),
250 TargetContext, AvailableEvent, BackendObject.ChanOrder,
251 BackendObject.ChanType, OwnNativeHandle, BackendObject.Range);
256 using namespace ext::oneapi::level_zero;