@@ -1290,31 +1290,38 @@ inline void import_external_semaphore(external_sem_wrapper **extSem,
1290
1290
// / parameters.
1291
1291
// / \param [in] numExtSems Number of external semaphores to signal.
1292
1292
// / \param [in] q_ptr The queue used to signal the external semaphore resource.
1293
- inline void signal_external_semaphore (external_sem_wrapper **extSem,
1293
+ inline void signal_external_semaphores (external_sem_wrapper **extSem,
1294
1294
external_sem_params *semSignalParams,
1295
1295
unsigned int numExtSems,
1296
1296
queue_ptr q_ptr = &get_default_queue ()) {
1297
1297
for (int i = 0 ; i < numExtSems; i++) {
1298
1298
auto extSemType = extSem[i]->get_handle_type ();
1299
+ switch (extSemType) {
1299
1300
#ifdef _WIN32
1300
- if (extSemType == sycl::ext::oneapi::experimental::
1301
- external_semaphore_handle_type::win32_nt_dx12_fence) {
1302
- q_ptr->ext_oneapi_signal_external_semaphore (
1301
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1302
+ win32_nt_dx12_fence:
1303
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1304
+ timeline_win32_nt_handle:
1305
+ #else // _WIN32
1306
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1307
+ timeline_fd:
1308
+ #endif // _WIN32
1309
+ q_ptr->ext_oneapi_signal_external_semaphores (
1303
1310
extSem[i]->get (), semSignalParams[i].get_value ());
1304
- } else if (extSemType ==
1305
- sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1306
- win32_nt_handle) {
1307
- q_ptr->ext_oneapi_signal_external_semaphore (extSem[i]->get ());
1308
- }
1309
- #else
1310
- if (extSemType == sycl::ext::oneapi::experimental::
1311
- external_semaphore_handle_type::opaque_fd) {
1312
- q_ptr->ext_oneapi_signal_external_semaphore (extSem[i]->get ());
1313
- }
1311
+ break ;
1312
+ #ifdef _WIN32
1313
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1314
+ win32_nt_handle:
1315
+ #else // _WIN32
1316
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1317
+ opaque_fd:
1314
1318
#endif // _WIN32
1315
- else {
1319
+ q_ptr->ext_oneapi_signal_external_semaphores (extSem[i]->get ());
1320
+ break ;
1321
+ default :
1316
1322
throw std::runtime_error (
1317
1323
" Unsupported external semaphore resource handle type!" );
1324
+ break ;
1318
1325
}
1319
1326
}
1320
1327
}
@@ -1324,31 +1331,38 @@ inline void signal_external_semaphore(external_sem_wrapper **extSem,
1324
1331
// / \param [in] semWaitParams Pointer to the external semaphore wait parameters.
1325
1332
// / \param [in] numExtSems Number of external semaphores to wait.
1326
1333
// / \param [in] q_ptr The queue used to wait on the external semaphore resource.
1327
- inline void wait_external_semaphore (external_sem_wrapper **extSem,
1334
+ inline void wait_external_semaphores (external_sem_wrapper **extSem,
1328
1335
external_sem_params *semWaitParams,
1329
1336
unsigned int numExtSems,
1330
1337
queue_ptr q_ptr = &get_default_queue ()) {
1331
1338
for (int i = 0 ; i < numExtSems; i++) {
1332
1339
auto extSemType = extSem[i]->get_handle_type ();
1340
+ switch (extSemType) {
1333
1341
#ifdef _WIN32
1334
- if (extSemType == sycl::ext::oneapi::experimental::
1335
- external_semaphore_handle_type::win32_nt_dx12_fence) {
1336
- q_ptr->ext_oneapi_wait_external_semaphore (extSem[i]->get (),
1337
- semWaitParams[i].get_value ());
1338
- } else if (extSemType ==
1339
- sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1340
- win32_nt_handle) {
1341
- q_ptr->ext_oneapi_wait_external_semaphore (extSem[i]->get ());
1342
- }
1343
- #else
1344
- if (extSemType == sycl::ext::oneapi::experimental::
1345
- external_semaphore_handle_type::opaque_fd) {
1346
- q_ptr->ext_oneapi_wait_external_semaphore (extSem[i]->get ());
1347
- }
1342
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1343
+ win32_nt_dx12_fence:
1344
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1345
+ timeline_win32_nt_handle:
1346
+ #else // _WIN32
1347
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1348
+ timeline_fd:
1348
1349
#endif // _WIN32
1349
- else {
1350
+ q_ptr->ext_oneapi_wait_external_semaphores (
1351
+ extSem[i]->get (), semWaitParams[i].get_value ());
1352
+ break ;
1353
+ #ifdef _WIN32
1354
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1355
+ win32_nt_handle:
1356
+ #else // _WIN32
1357
+ case sycl::ext::oneapi::experimental::external_semaphore_handle_type::
1358
+ opaque_fd:
1359
+ #endif // _WIN32
1360
+ q_ptr->ext_oneapi_wait_external_semaphores (extSem[i]->get ());
1361
+ break ;
1362
+ default :
1350
1363
throw std::runtime_error (
1351
1364
" Unsupported external semaphore resource handle type!" );
1365
+ break ;
1352
1366
}
1353
1367
}
1354
1368
}
0 commit comments