@@ -1591,9 +1591,9 @@ The device aspect descriptors for these queries are:
15911591[frame="none",options="header"]
15921592|======================
15931593|Device descriptor |Description
1594- |`aspect::ext_oneapi_interop_memory_import ` | Indicates if the device supports
1594+ |`aspect::ext_oneapi_external_memory_import ` | Indicates if the device supports
15951595importing external memory resources.
1596- |`aspect::ext_oneapi_interop_semaphore_import `` | Indicates if the device
1596+ |`aspect::ext_oneapi_external_semaphore_import `` | Indicates if the device
15971597supports importing external semaphore resources.
15981598|======================
15991599
@@ -1687,35 +1687,35 @@ resource type.
16871687```cpp
16881688namespace sycl::ext::oneapi::experimental {
16891689
1690- struct interop_mem_handle {
1690+ struct external_mem {
16911691 using raw_handle_type = /* Implementation defined */;
16921692 raw_handle_type raw_handle;
16931693};
16941694
16951695template <typename ResourceType>
1696- interop_mem_handle import_external_memory(
1696+ external_mem import_external_memory(
16971697 external_mem_descriptor<ResourceType> externalMemDescriptor,
16981698 const sycl::device &syclDevice,
16991699 const sycl::context &syclContext);
17001700
17011701template <typename ResourceType>
1702- interop_mem_handle import_external_memory(
1702+ external_mem import_external_memory(
17031703 external_mem_descriptor<ResourceType> externalMemDescriptor,
17041704 const sycl::queue &syclQueue);
17051705
17061706image_mem_handle map_external_image_memory(
1707- interop_mem_handle interopMemHandle ,
1707+ external_mem externalMemHandle ,
17081708 const image_descriptor &imageDescriptor,
17091709 const sycl::device &syclDevice,
17101710 const sycl::context &syclContext);
17111711image_mem_handle map_external_image_memory(
1712- interop_mem_handle interopMemHandle ,
1712+ external_mem externalMemHandle ,
17131713 const image_descriptor &imageDescriptor,
17141714 const sycl::queue &syclQueue);
17151715}
17161716```
17171717
1718- The resulting `interop_mem_handle ` can then be mapped, where the resulting type
1718+ The resulting `external_mem ` can then be mapped, where the resulting type
17191719is an `image_mem_handle`. This can be used to construct images in the same way
17201720as memory allocated through `alloc_image_mem`. The `ext_oneapi_copy` operations
17211721also work with imported memory mapped to `image_mem_handle` types.
@@ -1734,16 +1734,16 @@ behaviour.
17341734Once a user has finished operating on imported memory, they must ensure that
17351735they destroy the imported memory handle through `release_external_memory`.
17361736
1737- `release_external_memory` can only accept `interop_mem_handles` that were
1737+ `release_external_memory` can only accept `external_mem` objects that were
17381738created through `import_external_memory`.
17391739
17401740```cpp
17411741namespace sycl::ext::oneapi::experimental {
17421742
1743- void release_external_memory(interop_mem_handle interopMem ,
1743+ void release_external_memory(external_mem externalMem ,
17441744 const sycl::device &syclDevice,
17451745 const sycl::context &syclContext);
1746- void release_external_memory(interop_mem_handle interopMem ,
1746+ void release_external_memory(external_mem externalMem ,
17471747 const sycl::queue &syclQueue);
17481748}
17491749```
@@ -1807,27 +1807,27 @@ compatible with the `resource_fd` resource type.
18071807```cpp
18081808namespace sycl::ext::oneapi::experimental {
18091809
1810- struct interop_semaphore_handle {
1810+ struct external_semaphore {
18111811 using raw_handle_type = /* Implementation defined */;
18121812 raw_handle_type raw_handle;
18131813};
18141814
18151815template <typename ResourceType>
1816- interop_semaphore_handle import_external_semaphore(
1816+ external_semaphore import_external_semaphore(
18171817 external_semaphore_descriptor<ResourceType>
18181818 externalSemaphoreDescriptor,
18191819 const sycl::device &syclDevice,
18201820 const sycl::context &syclContext);
18211821
18221822template <typename ResourceType>
1823- interop_semaphore_handle import_external_semaphore(
1823+ external_semaphore import_external_semaphore(
18241824 external_semaphore_descriptor<ResourceType>
18251825 externalSemaphoreDescriptor,
18261826 const sycl::queue &syclQueue);
18271827}
18281828```
18291829
1830- The resulting `interop_semaphore_handle ` can then be used in a SYCL command
1830+ The resulting `external_semaphore ` can then be used in a SYCL command
18311831group, to either wait until the semaphore signalled, or signal the semaphore.
18321832
18331833If the type of semaphore imported supports setting the state of discrete
@@ -1843,77 +1843,77 @@ namespace sycl {
18431843class handler {
18441844public:
18451845 void ext_oneapi_wait_external_semaphore(
1846- ext::oneapi::experimental::interop_semaphore_handle
1847- interop_semaphore_handle );
1846+ ext::oneapi::experimental::external_semaphore
1847+ external_semaphore );
18481848
18491849 void ext_oneapi_wait_external_semaphore(
1850- ext::oneapi::experimental::interop_semaphore_handle
1851- interop_semaphore_handle ,
1850+ ext::oneapi::experimental::external_semaphore
1851+ external_semaphore ,
18521852 uint64_t wait_value);
18531853
18541854 void ext_oneapi_signal_external_semaphore(
1855- ext::oneapi::experimental::interop_semaphore_handle
1856- interop_semaphore_handle );
1855+ ext::oneapi::experimental::external_semaphore
1856+ external_semaphore );
18571857
18581858 void ext_oneapi_signal_external_semaphore(
1859- ext::oneapi::experimental::interop_semaphore_handle
1860- interop_semaphore_handle ,
1859+ ext::oneapi::experimental::external_semaphore
1860+ external_semaphore ,
18611861 uint64_t signal_value);
18621862};
18631863
18641864class queue {
18651865public:
18661866 event ext_oneapi_wait_external_semaphore(
1867- ext::oneapi::experimental::interop_semaphore_handle
1868- interop_semaphore_handle );
1867+ ext::oneapi::experimental::external_semaphore
1868+ external_semaphore );
18691869 event ext_oneapi_wait_external_semaphore(
1870- ext::oneapi::experimental::interop_semaphore_handle
1871- interop_semaphore_handle ,
1870+ ext::oneapi::experimental::external_semaphore
1871+ external_semaphore ,
18721872 event DepEvent);
18731873 event ext_oneapi_wait_external_semaphore(
1874- ext::oneapi::experimental::interop_semaphore_handle
1875- interop_semaphore_handle ,
1874+ ext::oneapi::experimental::external_semaphore
1875+ external_semaphore ,
18761876 const std::vector<event> &DepEvents);
18771877
18781878 event ext_oneapi_wait_external_semaphore(
1879- ext::oneapi::experimental::interop_semaphore_handle
1880- interop_semaphore_handle ,
1879+ ext::oneapi::experimental::external_semaphore
1880+ external_semaphore ,
18811881 uint64_t wait_value);
18821882 event ext_oneapi_wait_external_semaphore(
1883- ext::oneapi::experimental::interop_semaphore_handle
1884- interop_semaphore_handle ,
1883+ ext::oneapi::experimental::external_semaphore
1884+ external_semaphore ,
18851885 uint64_t wait_value,
18861886 event DepEvent);
18871887 event ext_oneapi_wait_external_semaphore(
1888- ext::oneapi::experimental::interop_semaphore_handle
1889- interop_semaphore_handle ,
1888+ ext::oneapi::experimental::external_semaphore
1889+ external_semaphore ,
18901890 uint64_t wait_value,
18911891 const std::vector<event> &DepEvents);
18921892
18931893 event ext_oneapi_signal_external_semaphore(
1894- ext::oneapi::experimental::interop_semaphore_handle
1895- interop_semaphore_handle );
1894+ ext::oneapi::experimental::external_semaphore
1895+ external_semaphore );
18961896 event ext_oneapi_signal_external_semaphore(
1897- ext::oneapi::experimental::interop_semaphore_handle
1898- interop_semaphore_handle ,
1897+ ext::oneapi::experimental::external_semaphore
1898+ external_semaphore ,
18991899 event DepEvent);
19001900 event ext_oneapi_signal_external_semaphore(
1901- ext::oneapi::experimental::interop_semaphore_handle
1902- interop_semaphore_handle ,
1901+ ext::oneapi::experimental::external_semaphore
1902+ external_semaphore ,
19031903 const std::vector<event> &DepEvents);
19041904
19051905 event ext_oneapi_signal_external_semaphore(
1906- ext::oneapi::experimental::interop_semaphore_handle
1907- interop_semaphore_handle ,
1906+ ext::oneapi::experimental::external_semaphore
1907+ external_semaphore ,
19081908 uint64_t signal_value);
19091909 event ext_oneapi_signal_external_semaphore(
1910- ext::oneapi::experimental::interop_semaphore_handle
1911- interop_semaphore_handle ,
1910+ ext::oneapi::experimental::external_semaphore
1911+ external_semaphore ,
19121912 uint64_t signal_value,
19131913 event DepEvent);
19141914 event ext_oneapi_signal_external_semaphore(
1915- ext::oneapi::experimental::interop_semaphore_handle
1916- interop_semaphore_handle ,
1915+ ext::oneapi::experimental::external_semaphore
1916+ external_semaphore ,
19171917 uint64_t signal_value,
19181918 const std::vector<event> &DepEvents);
19191919};
@@ -1952,11 +1952,11 @@ access the external semaphore once they are no longer required through
19521952```cpp
19531953namespace sycl::ext::oneapi::experimental {
19541954
1955- void release_external_semaphore(interop_semaphore_handle semaphoreHandle,
1955+ void release_external_semaphore(external_semaphore semaphoreHandle,
19561956 const sycl::device &syclDevice,
19571957 const sycl::context &syclContext);
19581958
1959- void release_external_semaphore(interop_semaphore_handle semaphoreHandle,
1959+ void release_external_semaphore(external_semaphore semaphoreHandle,
19601960 const sycl::queue &syclQueue);
19611961
19621962}
@@ -2547,34 +2547,34 @@ sycl::ext::oneapi::experimental::external_semaphore_descriptor<
25472547
25482548try {
25492549 // Extension: import external semaphores
2550- sycl::ext::oneapi::experimental::interop_semaphore_handle
2551- wait_interop_semaphore_handle =
2550+ sycl::ext::oneapi::experimental::external_semaphore
2551+ wait_external_semaphore =
25522552 sycl::ext::oneapi::experimental::import_external_semaphore(
25532553 wait_external_semaphore_desc, queue);
25542554
2555- sycl::ext::oneapi::experimental::interop_semaphore_handle
2556- done_interop_semaphore_handle =
2555+ sycl::ext::oneapi::experimental::external_semaphore
2556+ done_external_semaphore =
25572557 sycl::ext::oneapi::experimental::import_external_semaphore(
25582558 done_external_semaphore_desc, queue);
25592559
25602560 // Extension: import external memory from descriptors
2561- sycl::ext::oneapi::experimental::interop_mem_handle
2562- input_interop_mem_handle =
2561+ sycl::ext::oneapi::experimental::external_mem
2562+ input_external_mem =
25632563 sycl::ext::oneapi::experimental::import_external_memory(
25642564 input_ext_mem_desc, queue);
25652565
2566- sycl::ext::oneapi::experimental::interop_mem_handle
2567- output_interop_mem_handle =
2566+ sycl::ext::oneapi::experimental::external_mem
2567+ output_external_mem =
25682568 sycl::ext::oneapi::experimental::import_external_memory(
25692569 output_ext_mem_desc, queue);
25702570
25712571 // Extension: map imported external memory to image memory
25722572 sycl::ext::oneapi::experimental::image_mem_handle input_mapped_mem_handle =
25732573 sycl::ext::oneapi::experimental::map_external_image_memory(
2574- input_interop_mem_handle , desc, queue);
2574+ input_external_mem , desc, queue);
25752575 sycl::ext::oneapi::experimental::image_mem_handle output_mapped_mem_handle =
25762576 sycl::ext::oneapi::experimental::map_external_image_memory(
2577- output_interop_mem_handle , desc, queue);
2577+ output_external_mem , desc, queue);
25782578
25792579 // Extension: create images from mapped memory and return the handles
25802580 sycl::ext::oneapi::experimental::unsampled_image_handle img_input =
@@ -2585,7 +2585,7 @@ try {
25852585 output_mapped_mem_handle, desc, queue);
25862586
25872587 // Extension: wait for imported semaphore
2588- q.ext_oneapi_wait_external_semaphore(wait_interop_semaphore_handle )
2588+ q.ext_oneapi_wait_external_semaphore(wait_external_semaphore )
25892589
25902590 // Submit our kernel that depends on imported "wait_semaphore_file_descriptor"
25912591 q.submit([&](sycl::handler &cgh) {
@@ -2610,7 +2610,7 @@ try {
26102610 });
26112611
26122612 // Extension: signal imported semaphore
2613- q.ext_oneapi_signal_external_semaphore(done_interop_semaphore_handle )
2613+ q.ext_oneapi_signal_external_semaphore(done_external_semaphore )
26142614
26152615 // The external API can now use the semaphore it exported to
26162616 // "done_semaphore_file_descriptor" to schedule its own command submissions
@@ -2619,13 +2619,13 @@ try {
26192619
26202620 // Extension: destroy all external resources
26212621 sycl::ext::oneapi::experimental::release_external_memory(
2622- input_interop_mem_handle , queue);
2622+ input_external_mem , queue);
26232623 sycl::ext::oneapi::experimental::release_external_memory(
2624- output_interop_mem_handle , queue);
2624+ output_external_mem , queue);
26252625 sycl::ext::oneapi::experimental::release_external_semaphore(
2626- wait_interop_semaphore_handle , queue);
2626+ wait_external_semaphore , queue);
26272627 sycl::ext::oneapi::experimental::release_external_semaphore(
2628- done_interop_semaphore_handle , queue);
2628+ done_external_semaphore , queue);
26292629 sycl::ext::oneapi::experimental::destroy_image_handle(img_input, queue);
26302630 sycl::ext::oneapi::experimental::destroy_image_handle(img_output, queue);
26312631} catch (sycl::exception e) {
@@ -2859,4 +2859,11 @@ These features still need to be handled:
28592859 3D USM images as they are not supported on any platform.
28602860 - Refine the description of `ext_oneapi_bindless_images` aspect
28612861 to indicate support for bindless image APIs.
2862+ |5.16|2024-07-24| - Renamed interop aspect queries, handles, semaphore wait and
2863+ signal functions, by replacing `interop` with `external` for
2864+ consistency with other interop related structs/funcs and
2865+ 3rd party interop API naming.
2866+ - Removed `handle` keyword from `interop_xxx_handle` to
2867+ clear up possible confusion between 3rd party interop
2868+ handles and the imported `interop_xxx_handle`.
28622869|======================
0 commit comments