@@ -1358,126 +1358,60 @@ ur_result_t urBindlessImagesImportExternalSemaphoreExp(
13581358 " {} function not supported!" , __FUNCTION__);
13591359 return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
13601360 }
1361- if (UrPlatform->ZeExternalSemaphoreExt .LoaderExtension ) {
1362- ze_external_semaphore_ext_desc_t SemDesc = {
1363- ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_EXT_DESC, nullptr ,
1364- ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_FD};
1365- ze_external_semaphore_ext_handle_t ExtSemaphoreHandle;
1366- ze_external_semaphore_fd_ext_desc_t FDExpDesc = {
1367- ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXT_DESC, nullptr , 0 };
1368- ze_external_semaphore_win32_ext_desc_t Win32ExpDesc = {
1369- ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC, nullptr , nullptr ,
1370- nullptr };
1371- void *pNext = const_cast <void *>(pExternalSemaphoreDesc->pNext );
1372- while (pNext != nullptr ) {
1373- const ur_base_desc_t *BaseDesc =
1374- static_cast <const ur_base_desc_t *>(pNext);
1375- if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR) {
1376- auto FileDescriptor =
1377- static_cast <const ur_exp_file_descriptor_t *>(pNext);
1378- FDExpDesc.fd = FileDescriptor->fd ;
1379- SemDesc.pNext = &FDExpDesc;
1380- switch (semHandleType) {
1381- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD:
1382- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_FD;
1383- break ;
1384- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_FD:
1385- SemDesc.flags =
1386- ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_VK_TIMELINE_SEMAPHORE_FD;
1387- break ;
1388- default :
1389- return UR_RESULT_ERROR_INVALID_VALUE;
1390- }
1391- } else if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE) {
1392- SemDesc.pNext = &Win32ExpDesc;
1393- auto Win32Handle = static_cast <const ur_exp_win32_handle_t *>(pNext);
1394- switch (semHandleType) {
1395- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT:
1396- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32;
1397- break ;
1398- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE:
1399- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_D3D12_FENCE;
1400- break ;
1401- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_WIN32_NT:
1402- SemDesc.flags =
1403- ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_VK_TIMELINE_SEMAPHORE_WIN32;
1404- break ;
1405- default :
1406- return UR_RESULT_ERROR_INVALID_VALUE;
1407- }
1408- Win32ExpDesc.handle = Win32Handle->handle ;
1361+ ze_external_semaphore_ext_desc_t SemDesc = {
1362+ ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_EXT_DESC, nullptr ,
1363+ ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_FD};
1364+ ze_external_semaphore_ext_handle_t ExtSemaphoreHandle;
1365+ ze_external_semaphore_fd_ext_desc_t FDExpDesc = {
1366+ ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXT_DESC, nullptr , 0 };
1367+ ze_external_semaphore_win32_ext_desc_t Win32ExpDesc = {
1368+ ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC, nullptr , nullptr ,
1369+ nullptr };
1370+ void *pNext = const_cast <void *>(pExternalSemaphoreDesc->pNext );
1371+ while (pNext != nullptr ) {
1372+ const ur_base_desc_t *BaseDesc = static_cast <const ur_base_desc_t *>(pNext);
1373+ if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR) {
1374+ auto FileDescriptor =
1375+ static_cast <const ur_exp_file_descriptor_t *>(pNext);
1376+ FDExpDesc.fd = FileDescriptor->fd ;
1377+ SemDesc.pNext = &FDExpDesc;
1378+ switch (semHandleType) {
1379+ case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD:
1380+ SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_FD;
1381+ break ;
1382+ case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_FD:
1383+ SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_VK_TIMELINE_SEMAPHORE_FD;
1384+ break ;
1385+ default :
1386+ return UR_RESULT_ERROR_INVALID_VALUE;
14091387 }
1410- pNext = const_cast <void *>(BaseDesc->pNext );
1411- }
1412- ZE2UR_CALL (UrPlatform->ZeExternalSemaphoreExt .zexImportExternalSemaphoreExp ,
1413- (hDevice->ZeDevice , &SemDesc, &ExtSemaphoreHandle));
1414- *phExternalSemaphoreHandle =
1415- (ur_exp_external_semaphore_handle_t )ExtSemaphoreHandle;
1416-
1417- } else {
1418- ze_intel_external_semaphore_exp_desc_t SemDesc = {
1419- ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_EXP_DESC, nullptr ,
1420- ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD};
1421- ze_intel_external_semaphore_exp_handle_t ExtSemaphoreHandle;
1422- ze_intel_external_semaphore_desc_fd_exp_desc_t FDExpDesc = {
1423- ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXP_DESC, nullptr , 0 };
1424- _ze_intel_external_semaphore_win32_exp_desc_t Win32ExpDesc = {
1425- ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC, nullptr ,
1426- nullptr , nullptr };
1427- void *pNext = const_cast <void *>(pExternalSemaphoreDesc->pNext );
1428- while (pNext != nullptr ) {
1429- const ur_base_desc_t *BaseDesc =
1430- static_cast <const ur_base_desc_t *>(pNext);
1431- if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR) {
1432- auto FileDescriptor =
1433- static_cast <const ur_exp_file_descriptor_t *>(pNext);
1434- FDExpDesc.fd = FileDescriptor->fd ;
1435- SemDesc.pNext = &FDExpDesc;
1436- switch (semHandleType) {
1437- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD:
1438- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD;
1439- break ;
1440- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_FD:
1441- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_FD;
1442- break ;
1443- default :
1444- return UR_RESULT_ERROR_INVALID_VALUE;
1445- }
1446- } else if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE) {
1447- SemDesc.pNext = &Win32ExpDesc;
1448- auto Win32Handle = static_cast <const ur_exp_win32_handle_t *>(pNext);
1449- switch (semHandleType) {
1450- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT:
1451- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32;
1452- break ;
1453- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE:
1454- SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D12_FENCE;
1455- break ;
1456- case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_WIN32_NT:
1457- SemDesc.flags =
1458- ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_WIN32;
1459- break ;
1460- default :
1461- return UR_RESULT_ERROR_INVALID_VALUE;
1462- }
1463- Win32ExpDesc.handle = Win32Handle->handle ;
1388+ } else if (BaseDesc->stype == UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE) {
1389+ SemDesc.pNext = &Win32ExpDesc;
1390+ auto Win32Handle = static_cast <const ur_exp_win32_handle_t *>(pNext);
1391+ switch (semHandleType) {
1392+ case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT:
1393+ SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32;
1394+ break ;
1395+ case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE:
1396+ SemDesc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_D3D12_FENCE;
1397+ break ;
1398+ case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_TIMELINE_WIN32_NT:
1399+ SemDesc.flags =
1400+ ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_VK_TIMELINE_SEMAPHORE_WIN32;
1401+ break ;
1402+ default :
1403+ return UR_RESULT_ERROR_INVALID_VALUE;
14641404 }
1465- pNext = const_cast < void *>(BaseDesc-> pNext ) ;
1405+ Win32ExpDesc. handle = Win32Handle-> handle ;
14661406 }
1467-
1468- ze_device_handle_t translatedDevice;
1469- ZE2UR_CALL (zelLoaderTranslateHandle, (ZEL_HANDLE_DEVICE, hDevice->ZeDevice ,
1470- (void **)&translatedDevice));
1471- // If the L0 loader is not aware of the extension, the handles need to be
1472- // translated
1473- ZE2UR_CALL (
1474- UrPlatform->ZeExternalSemaphoreExt .zexExpImportExternalSemaphoreExp ,
1475- (translatedDevice, &SemDesc, &ExtSemaphoreHandle));
1476-
1477- *phExternalSemaphoreHandle =
1478- (ur_exp_external_semaphore_handle_t )ExtSemaphoreHandle;
1407+ pNext = const_cast <void *>(BaseDesc->pNext );
14791408 }
14801409
1410+ ZE2UR_CALL (UrPlatform->ZeExternalSemaphoreExt .zexImportExternalSemaphoreExp ,
1411+ (hDevice->ZeDevice , &SemDesc, &ExtSemaphoreHandle));
1412+ *phExternalSemaphoreHandle =
1413+ (ur_exp_external_semaphore_handle_t )ExtSemaphoreHandle;
1414+
14811415 return UR_RESULT_SUCCESS;
14821416}
14831417
@@ -1490,15 +1424,9 @@ ur_result_t urBindlessImagesReleaseExternalSemaphoreExp(
14901424 " {} function not supported!" , __FUNCTION__);
14911425 return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
14921426 }
1493- if (UrPlatform->ZeExternalSemaphoreExt .LoaderExtension ) {
1494- ZE2UR_CALL (
1495- UrPlatform->ZeExternalSemaphoreExt .zexDeviceReleaseExternalSemaphoreExp ,
1496- ((ze_external_semaphore_ext_handle_t )hExternalSemaphore));
1497- } else {
1498- ZE2UR_CALL (UrPlatform->ZeExternalSemaphoreExt
1499- .zexExpDeviceReleaseExternalSemaphoreExp ,
1500- ((ze_intel_external_semaphore_exp_handle_t )hExternalSemaphore));
1501- }
1427+ ZE2UR_CALL (
1428+ UrPlatform->ZeExternalSemaphoreExt .zexDeviceReleaseExternalSemaphoreExp ,
1429+ ((ze_external_semaphore_ext_handle_t )hExternalSemaphore));
15021430
15031431 return UR_RESULT_SUCCESS;
15041432}
0 commit comments