@@ -117,101 +117,6 @@ ur_result_t urBindlessImagesImageCopyExp(
117117 return res;
118118}
119119
120- ur_result_t urBindlessImagesImportExternalMemoryExp (
121- ur_context_handle_t hContext, ur_device_handle_t hDevice, size_t size,
122- ur_exp_external_mem_type_t memHandleType,
123- ur_exp_external_mem_desc_t *pExternalMemDesc,
124- ur_exp_external_mem_handle_t *phExternalMem) {
125-
126- UR_ASSERT (hContext && hDevice, UR_RESULT_ERROR_INVALID_NULL_HANDLE);
127- UR_ASSERT (pExternalMemDesc && phExternalMem,
128- UR_RESULT_ERROR_INVALID_NULL_POINTER);
129-
130- struct ur_ze_external_memory_data *externalMemoryData =
131- new struct ur_ze_external_memory_data ;
132-
133- void *pNext = const_cast <void *>(pExternalMemDesc->pNext );
134- while (pNext != nullptr ) {
135- const ur_base_desc_t *BaseDesc = static_cast <const ur_base_desc_t *>(pNext);
136- if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR) {
137- ze_external_memory_import_fd_t *importFd =
138- new ze_external_memory_import_fd_t ;
139- importFd->stype = ZE_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMPORT_FD;
140- importFd->pNext = nullptr ;
141- auto FileDescriptor =
142- static_cast <const ur_exp_file_descriptor_t *>(pNext);
143- importFd->fd = FileDescriptor->fd ;
144- importFd->flags = ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_FD;
145- externalMemoryData->importExtensionDesc = importFd;
146- externalMemoryData->type = UR_ZE_EXTERNAL_OPAQUE_FD;
147- } else if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE) {
148- ze_external_memory_import_win32_handle_t *importWin32 =
149- new ze_external_memory_import_win32_handle_t ;
150- importWin32->stype = ZE_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMPORT_WIN32;
151- importWin32->pNext = nullptr ;
152- auto Win32Handle = static_cast <const ur_exp_win32_handle_t *>(pNext);
153-
154- switch (memHandleType) {
155- case UR_EXP_EXTERNAL_MEM_TYPE_WIN32_NT:
156- importWin32->flags = ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32;
157- break ;
158- case UR_EXP_EXTERNAL_MEM_TYPE_WIN32_NT_DX12_RESOURCE:
159- importWin32->flags = ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_RESOURCE;
160- break ;
161- case UR_EXP_EXTERNAL_MEM_TYPE_OPAQUE_FD:
162- default :
163- delete importWin32;
164- delete externalMemoryData;
165- return UR_RESULT_ERROR_INVALID_VALUE;
166- }
167- importWin32->handle = Win32Handle->handle ;
168- externalMemoryData->importExtensionDesc = importWin32;
169- externalMemoryData->type = UR_ZE_EXTERNAL_WIN32;
170- }
171- pNext = const_cast <void *>(BaseDesc->pNext );
172- }
173- externalMemoryData->size = size;
174-
175- *phExternalMem =
176- reinterpret_cast <ur_exp_external_mem_handle_t >(externalMemoryData);
177- return UR_RESULT_SUCCESS;
178- }
179-
180- ur_result_t urBindlessImagesMapExternalArrayExp (
181- ur_context_handle_t hContext, ur_device_handle_t hDevice,
182- const ur_image_format_t *pImageFormat, const ur_image_desc_t *pImageDesc,
183- ur_exp_external_mem_handle_t hExternalMem,
184- ur_exp_image_mem_native_handle_t *phImageMem) {
185-
186- UR_ASSERT (hContext && hDevice && hExternalMem,
187- UR_RESULT_ERROR_INVALID_NULL_HANDLE);
188- UR_ASSERT (pImageFormat && pImageDesc, UR_RESULT_ERROR_INVALID_NULL_POINTER);
189-
190- struct ur_ze_external_memory_data *externalMemoryData =
191- reinterpret_cast <ur_ze_external_memory_data *>(hExternalMem);
192-
193- ze_image_bindless_exp_desc_t ZeImageBindlessDesc = {};
194- ZeImageBindlessDesc.stype = ZE_STRUCTURE_TYPE_BINDLESS_IMAGE_EXP_DESC;
195-
196- ZeStruct<ze_image_desc_t > ZeImageDesc;
197- UR_CALL (ur2zeImageDesc (pImageFormat, pImageDesc, ZeImageDesc));
198-
199- ZeImageBindlessDesc.pNext = externalMemoryData->importExtensionDesc ;
200- ZeImageBindlessDesc.flags = ZE_IMAGE_BINDLESS_EXP_FLAG_BINDLESS;
201- ZeImageDesc.pNext = &ZeImageBindlessDesc;
202-
203- ze_image_handle_t ZeImage;
204- ZE2UR_CALL (zeImageCreate,
205- (hContext->ZeContext , hDevice->ZeDevice , &ZeImageDesc, &ZeImage));
206- ZE2UR_CALL (zeContextMakeImageResident,
207- (hContext->ZeContext , hDevice->ZeDevice , ZeImage));
208- UR_CALL (
209- createUrMemFromZeImage (hContext, ZeImage, true , ZeImageDesc, phImageMem));
210- externalMemoryData->urMemoryHandle =
211- reinterpret_cast <ur_mem_handle_t >(*phImageMem);
212- return UR_RESULT_SUCCESS;
213- }
214-
215120ur_result_t urBindlessImagesMapExternalLinearMemoryExp (
216121 ur_context_handle_t hContext, ur_device_handle_t hDevice, uint64_t offset,
217122 uint64_t size, ur_exp_external_mem_handle_t hExternalMem, void **phRetMem) {
@@ -226,122 +131,6 @@ ur_result_t urBindlessImagesMapExternalLinearMemoryExp(
226131 return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
227132}
228133
229- ur_result_t urBindlessImagesReleaseExternalMemoryExp (
230- ur_context_handle_t hContext, ur_device_handle_t hDevice,
231- ur_exp_external_mem_handle_t hExternalMem) {
232-
233- UR_ASSERT (hContext && hDevice && hExternalMem,
234- UR_RESULT_ERROR_INVALID_NULL_HANDLE);
235-
236- struct ur_ze_external_memory_data *externalMemoryData =
237- reinterpret_cast <ur_ze_external_memory_data *>(hExternalMem);
238-
239- UR_CALL (ur::level_zero::urMemRelease (externalMemoryData->urMemoryHandle ));
240-
241- switch (externalMemoryData->type ) {
242- case UR_ZE_EXTERNAL_OPAQUE_FD:
243- delete (reinterpret_cast <ze_external_memory_import_fd_t *>(
244- externalMemoryData->importExtensionDesc ));
245- break ;
246- case UR_ZE_EXTERNAL_WIN32:
247- delete (reinterpret_cast <ze_external_memory_import_win32_handle_t *>(
248- externalMemoryData->importExtensionDesc ));
249- break ;
250- default :
251- return UR_RESULT_ERROR_INVALID_VALUE;
252- }
253-
254- delete (externalMemoryData);
255-
256- return UR_RESULT_SUCCESS;
257- }
258-
259- ur_result_t urBindlessImagesImportExternalSemaphoreExp (
260- ur_context_handle_t hContext, ur_device_handle_t hDevice,
261- ur_exp_external_semaphore_type_t semHandleType,
262- ur_exp_external_semaphore_desc_t *pExternalSemaphoreDesc,
263- ur_exp_external_semaphore_handle_t *phExternalSemaphoreHandle) {
264-
265- auto UrPlatform = hContext->getPlatform ();
266- if (UrPlatform->ZeExternalSemaphoreExt .Supported == false ) {
267- logger::error (logger::LegacyMessage (" [UR][L0] " ),
268- " {} function not supported!" , __FUNCTION__);
269- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
270- }
271- ze_intel_external_semaphore_exp_desc_t SemDesc = {
272- ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_EXP_DESC, nullptr ,
273- ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD};
274- ze_intel_external_semaphore_exp_handle_t ExtSemaphoreHandle;
275- ze_intel_external_semaphore_desc_fd_exp_desc_t FDExpDesc = {
276- ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXP_DESC, nullptr , 0 };
277- _ze_intel_external_semaphore_win32_exp_desc_t Win32ExpDesc = {
278- ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC, nullptr ,
279- nullptr , nullptr };
280- void *pNext = const_cast <void *>(pExternalSemaphoreDesc->pNext );
281- while (pNext != nullptr ) {
282- const ur_base_desc_t *BaseDesc = static_cast <const ur_base_desc_t *>(pNext);
283- if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR) {
284- auto FileDescriptor =
285- static_cast <const ur_exp_file_descriptor_t *>(pNext);
286- FDExpDesc.fd = FileDescriptor->fd ;
287- SemDesc.pNext = &FDExpDesc;
288- switch (semHandleType) {
289- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD:
290- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD;
291- break ;
292- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_FD:
293- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_FD;
294- break ;
295- default :
296- return UR_RESULT_ERROR_INVALID_VALUE;
297- }
298- } else if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE) {
299- SemDesc.pNext = &Win32ExpDesc;
300- auto Win32Handle = static_cast <const ur_exp_win32_handle_t *>(pNext);
301- switch (semHandleType) {
302- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT:
303- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32;
304- break ;
305- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE:
306- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D12_FENCE;
307- break ;
308- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_WIN32_NT:
309- SemDesc.flags =
310- ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_WIN32;
311- break ;
312- default :
313- return UR_RESULT_ERROR_INVALID_VALUE;
314- }
315- Win32ExpDesc.handle = Win32Handle->handle ;
316- }
317- pNext = const_cast <void *>(BaseDesc->pNext );
318- }
319-
320- ZE2UR_CALL (UrPlatform->ZeExternalSemaphoreExt .zexImportExternalSemaphoreExp ,
321- (hDevice->ZeDevice , &SemDesc, &ExtSemaphoreHandle));
322- *phExternalSemaphoreHandle =
323- (ur_exp_external_semaphore_handle_t )ExtSemaphoreHandle;
324-
325- return UR_RESULT_SUCCESS;
326- }
327-
328- ur_result_t urBindlessImagesReleaseExternalSemaphoreExp (
329- ur_context_handle_t hContext, ur_device_handle_t hDevice,
330- ur_exp_external_semaphore_handle_t hExternalSemaphore) {
331- std::ignore = hDevice;
332- auto UrPlatform = hContext->getPlatform ();
333- if (UrPlatform->ZeExternalSemaphoreExt .Supported == false ) {
334- logger::error (logger::LegacyMessage (" [UR][L0] " ),
335- " {} function not supported!" , __FUNCTION__);
336- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
337- }
338- ZE2UR_CALL (
339- UrPlatform->ZeExternalSemaphoreExt .zexDeviceReleaseExternalSemaphoreExp ,
340- ((ze_intel_external_semaphore_exp_handle_t )hExternalSemaphore));
341-
342- return UR_RESULT_SUCCESS;
343- }
344-
345134ur_result_t urBindlessImagesWaitExternalSemaphoreExp (
346135 ur_queue_handle_t hQueue, ur_exp_external_semaphore_handle_t hSemaphore,
347136 bool hasValue, uint64_t waitValue, uint32_t numEventsInWaitList,
0 commit comments