@@ -1591,9 +1591,9 @@ The device aspect descriptors for these queries are:
1591
1591
[frame="none",options="header"]
1592
1592
|======================
1593
1593
|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
1595
1595
importing 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
1597
1597
supports importing external semaphore resources.
1598
1598
|======================
1599
1599
@@ -1687,35 +1687,35 @@ resource type.
1687
1687
```cpp
1688
1688
namespace sycl::ext::oneapi::experimental {
1689
1689
1690
- struct interop_mem_handle {
1690
+ struct external_mem {
1691
1691
using raw_handle_type = /* Implementation defined */;
1692
1692
raw_handle_type raw_handle;
1693
1693
};
1694
1694
1695
1695
template <typename ResourceType>
1696
- interop_mem_handle import_external_memory(
1696
+ external_mem import_external_memory(
1697
1697
external_mem_descriptor<ResourceType> externalMemDescriptor,
1698
1698
const sycl::device &syclDevice,
1699
1699
const sycl::context &syclContext);
1700
1700
1701
1701
template <typename ResourceType>
1702
- interop_mem_handle import_external_memory(
1702
+ external_mem import_external_memory(
1703
1703
external_mem_descriptor<ResourceType> externalMemDescriptor,
1704
1704
const sycl::queue &syclQueue);
1705
1705
1706
1706
image_mem_handle map_external_image_memory(
1707
- interop_mem_handle interopMemHandle ,
1707
+ external_mem externalMemHandle ,
1708
1708
const image_descriptor &imageDescriptor,
1709
1709
const sycl::device &syclDevice,
1710
1710
const sycl::context &syclContext);
1711
1711
image_mem_handle map_external_image_memory(
1712
- interop_mem_handle interopMemHandle ,
1712
+ external_mem externalMemHandle ,
1713
1713
const image_descriptor &imageDescriptor,
1714
1714
const sycl::queue &syclQueue);
1715
1715
}
1716
1716
```
1717
1717
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
1719
1719
is an `image_mem_handle`. This can be used to construct images in the same way
1720
1720
as memory allocated through `alloc_image_mem`. The `ext_oneapi_copy` operations
1721
1721
also work with imported memory mapped to `image_mem_handle` types.
@@ -1734,16 +1734,16 @@ behaviour.
1734
1734
Once a user has finished operating on imported memory, they must ensure that
1735
1735
they destroy the imported memory handle through `release_external_memory`.
1736
1736
1737
- `release_external_memory` can only accept `interop_mem_handles` that were
1737
+ `release_external_memory` can only accept `external_mem` objects that were
1738
1738
created through `import_external_memory`.
1739
1739
1740
1740
```cpp
1741
1741
namespace sycl::ext::oneapi::experimental {
1742
1742
1743
- void release_external_memory(interop_mem_handle interopMem ,
1743
+ void release_external_memory(external_mem externalMem ,
1744
1744
const sycl::device &syclDevice,
1745
1745
const sycl::context &syclContext);
1746
- void release_external_memory(interop_mem_handle interopMem ,
1746
+ void release_external_memory(external_mem externalMem ,
1747
1747
const sycl::queue &syclQueue);
1748
1748
}
1749
1749
```
@@ -1807,27 +1807,27 @@ compatible with the `resource_fd` resource type.
1807
1807
```cpp
1808
1808
namespace sycl::ext::oneapi::experimental {
1809
1809
1810
- struct interop_semaphore_handle {
1810
+ struct external_semaphore {
1811
1811
using raw_handle_type = /* Implementation defined */;
1812
1812
raw_handle_type raw_handle;
1813
1813
};
1814
1814
1815
1815
template <typename ResourceType>
1816
- interop_semaphore_handle import_external_semaphore(
1816
+ external_semaphore import_external_semaphore(
1817
1817
external_semaphore_descriptor<ResourceType>
1818
1818
externalSemaphoreDescriptor,
1819
1819
const sycl::device &syclDevice,
1820
1820
const sycl::context &syclContext);
1821
1821
1822
1822
template <typename ResourceType>
1823
- interop_semaphore_handle import_external_semaphore(
1823
+ external_semaphore import_external_semaphore(
1824
1824
external_semaphore_descriptor<ResourceType>
1825
1825
externalSemaphoreDescriptor,
1826
1826
const sycl::queue &syclQueue);
1827
1827
}
1828
1828
```
1829
1829
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
1831
1831
group, to either wait until the semaphore signalled, or signal the semaphore.
1832
1832
1833
1833
If the type of semaphore imported supports setting the state of discrete
@@ -1843,77 +1843,77 @@ namespace sycl {
1843
1843
class handler {
1844
1844
public:
1845
1845
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 );
1848
1848
1849
1849
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 ,
1852
1852
uint64_t wait_value);
1853
1853
1854
1854
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 );
1857
1857
1858
1858
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 ,
1861
1861
uint64_t signal_value);
1862
1862
};
1863
1863
1864
1864
class queue {
1865
1865
public:
1866
1866
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 );
1869
1869
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 ,
1872
1872
event DepEvent);
1873
1873
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 ,
1876
1876
const std::vector<event> &DepEvents);
1877
1877
1878
1878
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 ,
1881
1881
uint64_t wait_value);
1882
1882
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 ,
1885
1885
uint64_t wait_value,
1886
1886
event DepEvent);
1887
1887
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 ,
1890
1890
uint64_t wait_value,
1891
1891
const std::vector<event> &DepEvents);
1892
1892
1893
1893
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 );
1896
1896
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 ,
1899
1899
event DepEvent);
1900
1900
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 ,
1903
1903
const std::vector<event> &DepEvents);
1904
1904
1905
1905
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 ,
1908
1908
uint64_t signal_value);
1909
1909
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 ,
1912
1912
uint64_t signal_value,
1913
1913
event DepEvent);
1914
1914
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 ,
1917
1917
uint64_t signal_value,
1918
1918
const std::vector<event> &DepEvents);
1919
1919
};
@@ -1952,11 +1952,11 @@ access the external semaphore once they are no longer required through
1952
1952
```cpp
1953
1953
namespace sycl::ext::oneapi::experimental {
1954
1954
1955
- void release_external_semaphore(interop_semaphore_handle semaphoreHandle,
1955
+ void release_external_semaphore(external_semaphore semaphoreHandle,
1956
1956
const sycl::device &syclDevice,
1957
1957
const sycl::context &syclContext);
1958
1958
1959
- void release_external_semaphore(interop_semaphore_handle semaphoreHandle,
1959
+ void release_external_semaphore(external_semaphore semaphoreHandle,
1960
1960
const sycl::queue &syclQueue);
1961
1961
1962
1962
}
@@ -2547,34 +2547,34 @@ sycl::ext::oneapi::experimental::external_semaphore_descriptor<
2547
2547
2548
2548
try {
2549
2549
// 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 =
2552
2552
sycl::ext::oneapi::experimental::import_external_semaphore(
2553
2553
wait_external_semaphore_desc, queue);
2554
2554
2555
- sycl::ext::oneapi::experimental::interop_semaphore_handle
2556
- done_interop_semaphore_handle =
2555
+ sycl::ext::oneapi::experimental::external_semaphore
2556
+ done_external_semaphore =
2557
2557
sycl::ext::oneapi::experimental::import_external_semaphore(
2558
2558
done_external_semaphore_desc, queue);
2559
2559
2560
2560
// 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 =
2563
2563
sycl::ext::oneapi::experimental::import_external_memory(
2564
2564
input_ext_mem_desc, queue);
2565
2565
2566
- sycl::ext::oneapi::experimental::interop_mem_handle
2567
- output_interop_mem_handle =
2566
+ sycl::ext::oneapi::experimental::external_mem
2567
+ output_external_mem =
2568
2568
sycl::ext::oneapi::experimental::import_external_memory(
2569
2569
output_ext_mem_desc, queue);
2570
2570
2571
2571
// Extension: map imported external memory to image memory
2572
2572
sycl::ext::oneapi::experimental::image_mem_handle input_mapped_mem_handle =
2573
2573
sycl::ext::oneapi::experimental::map_external_image_memory(
2574
- input_interop_mem_handle , desc, queue);
2574
+ input_external_mem , desc, queue);
2575
2575
sycl::ext::oneapi::experimental::image_mem_handle output_mapped_mem_handle =
2576
2576
sycl::ext::oneapi::experimental::map_external_image_memory(
2577
- output_interop_mem_handle , desc, queue);
2577
+ output_external_mem , desc, queue);
2578
2578
2579
2579
// Extension: create images from mapped memory and return the handles
2580
2580
sycl::ext::oneapi::experimental::unsampled_image_handle img_input =
@@ -2585,7 +2585,7 @@ try {
2585
2585
output_mapped_mem_handle, desc, queue);
2586
2586
2587
2587
// 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 )
2589
2589
2590
2590
// Submit our kernel that depends on imported "wait_semaphore_file_descriptor"
2591
2591
q.submit([&](sycl::handler &cgh) {
@@ -2610,7 +2610,7 @@ try {
2610
2610
});
2611
2611
2612
2612
// 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 )
2614
2614
2615
2615
// The external API can now use the semaphore it exported to
2616
2616
// "done_semaphore_file_descriptor" to schedule its own command submissions
@@ -2619,13 +2619,13 @@ try {
2619
2619
2620
2620
// Extension: destroy all external resources
2621
2621
sycl::ext::oneapi::experimental::release_external_memory(
2622
- input_interop_mem_handle , queue);
2622
+ input_external_mem , queue);
2623
2623
sycl::ext::oneapi::experimental::release_external_memory(
2624
- output_interop_mem_handle , queue);
2624
+ output_external_mem , queue);
2625
2625
sycl::ext::oneapi::experimental::release_external_semaphore(
2626
- wait_interop_semaphore_handle , queue);
2626
+ wait_external_semaphore , queue);
2627
2627
sycl::ext::oneapi::experimental::release_external_semaphore(
2628
- done_interop_semaphore_handle , queue);
2628
+ done_external_semaphore , queue);
2629
2629
sycl::ext::oneapi::experimental::destroy_image_handle(img_input, queue);
2630
2630
sycl::ext::oneapi::experimental::destroy_image_handle(img_output, queue);
2631
2631
} catch (sycl::exception e) {
@@ -2859,4 +2859,11 @@ These features still need to be handled:
2859
2859
3D USM images as they are not supported on any platform.
2860
2860
- Refine the description of `ext_oneapi_bindless_images` aspect
2861
2861
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`.
2862
2869
|======================
0 commit comments