Skip to content

Commit 487f4f8

Browse files
committed
[Bindless][Exp] Windows & DX12 interop. Semaphores can take values.
The interop import API has been adapted to cater to multiple external memory and semaphore handle types. This enables memory and semaphores to be imported by single functions irregardless of what the underlying handle type is. The following APIs have been removed: - `ImportExternalOpaqueFDExp` - `ImportExternalSemaphoreOpaqueFDExp` The following APIs have been added: - `ImportExternalMemoryExp` - `ImportExternalSemaphoreExp` The following enums have been added: - `exp_external_mem_type_t` - `exp_external_semaphore_type_t` Support has also been added to import DirectX 12 memory and fences. Semaphore operations (wait/signal) can now take values which set the semaphore state to the value passed by the user.
1 parent ba369ea commit 487f4f8

25 files changed

+867
-452
lines changed

include/ur_api.h

Lines changed: 250 additions & 204 deletions
Large diffs are not rendered by default.

include/ur_ddi.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1604,11 +1604,12 @@ typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesMipmapFreeExp_t)(
16041604
ur_exp_image_mem_handle_t);
16051605

16061606
///////////////////////////////////////////////////////////////////////////////
1607-
/// @brief Function-pointer for urBindlessImagesImportOpaqueFDExp
1608-
typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesImportOpaqueFDExp_t)(
1607+
/// @brief Function-pointer for urBindlessImagesImportExternalMemoryExp
1608+
typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesImportExternalMemoryExp_t)(
16091609
ur_context_handle_t,
16101610
ur_device_handle_t,
16111611
size_t,
1612+
ur_exp_external_mem_type_t,
16121613
ur_exp_interop_mem_desc_t *,
16131614
ur_exp_interop_mem_handle_t *);
16141615

@@ -1630,10 +1631,11 @@ typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesReleaseInteropExp_t)(
16301631
ur_exp_interop_mem_handle_t);
16311632

16321633
///////////////////////////////////////////////////////////////////////////////
1633-
/// @brief Function-pointer for urBindlessImagesImportExternalSemaphoreOpaqueFDExp
1634-
typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesImportExternalSemaphoreOpaqueFDExp_t)(
1634+
/// @brief Function-pointer for urBindlessImagesImportExternalSemaphoreExp
1635+
typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesImportExternalSemaphoreExp_t)(
16351636
ur_context_handle_t,
16361637
ur_device_handle_t,
1638+
ur_exp_external_semaphore_type_t,
16371639
ur_exp_interop_semaphore_desc_t *,
16381640
ur_exp_interop_semaphore_handle_t *);
16391641

@@ -1649,6 +1651,8 @@ typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesDestroyExternalSemaphoreExp_
16491651
typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesWaitExternalSemaphoreExp_t)(
16501652
ur_queue_handle_t,
16511653
ur_exp_interop_semaphore_handle_t,
1654+
bool,
1655+
uint64_t,
16521656
uint32_t,
16531657
const ur_event_handle_t *,
16541658
ur_event_handle_t *);
@@ -1658,6 +1662,8 @@ typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesWaitExternalSemaphoreExp_t)(
16581662
typedef ur_result_t(UR_APICALL *ur_pfnBindlessImagesSignalExternalSemaphoreExp_t)(
16591663
ur_queue_handle_t,
16601664
ur_exp_interop_semaphore_handle_t,
1665+
bool,
1666+
uint64_t,
16611667
uint32_t,
16621668
const ur_event_handle_t *,
16631669
ur_event_handle_t *);
@@ -1675,10 +1681,10 @@ typedef struct ur_bindless_images_exp_dditable_t {
16751681
ur_pfnBindlessImagesImageGetInfoExp_t pfnImageGetInfoExp;
16761682
ur_pfnBindlessImagesMipmapGetLevelExp_t pfnMipmapGetLevelExp;
16771683
ur_pfnBindlessImagesMipmapFreeExp_t pfnMipmapFreeExp;
1678-
ur_pfnBindlessImagesImportOpaqueFDExp_t pfnImportOpaqueFDExp;
1684+
ur_pfnBindlessImagesImportExternalMemoryExp_t pfnImportExternalMemoryExp;
16791685
ur_pfnBindlessImagesMapExternalArrayExp_t pfnMapExternalArrayExp;
16801686
ur_pfnBindlessImagesReleaseInteropExp_t pfnReleaseInteropExp;
1681-
ur_pfnBindlessImagesImportExternalSemaphoreOpaqueFDExp_t pfnImportExternalSemaphoreOpaqueFDExp;
1687+
ur_pfnBindlessImagesImportExternalSemaphoreExp_t pfnImportExternalSemaphoreExp;
16821688
ur_pfnBindlessImagesDestroyExternalSemaphoreExp_t pfnDestroyExternalSemaphoreExp;
16831689
ur_pfnBindlessImagesWaitExternalSemaphoreExp_t pfnWaitExternalSemaphoreExp;
16841690
ur_pfnBindlessImagesSignalExternalSemaphoreExp_t pfnSignalExternalSemaphoreExp;

include/ur_print.h

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,22 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintExpImageCopyFlags(enum ur_exp_image_c
890890
/// - `buff_size < out_size`
891891
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpSamplerCubemapFilterMode(enum ur_exp_sampler_cubemap_filter_mode_t value, char *buffer, const size_t buff_size, size_t *out_size);
892892

893+
///////////////////////////////////////////////////////////////////////////////
894+
/// @brief Print ur_exp_external_mem_type_t enum
895+
/// @returns
896+
/// - ::UR_RESULT_SUCCESS
897+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
898+
/// - `buff_size < out_size`
899+
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpExternalMemType(enum ur_exp_external_mem_type_t value, char *buffer, const size_t buff_size, size_t *out_size);
900+
901+
///////////////////////////////////////////////////////////////////////////////
902+
/// @brief Print ur_exp_external_semaphore_type_t enum
903+
/// @returns
904+
/// - ::UR_RESULT_SUCCESS
905+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
906+
/// - `buff_size < out_size`
907+
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpExternalSemaphoreType(enum ur_exp_external_semaphore_type_t value, char *buffer, const size_t buff_size, size_t *out_size);
908+
893909
///////////////////////////////////////////////////////////////////////////////
894910
/// @brief Print ur_exp_file_descriptor_t struct
895911
/// @returns
@@ -2075,12 +2091,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesMipmapGetLevelExpParams
20752091
UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesMipmapFreeExpParams(const struct ur_bindless_images_mipmap_free_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size);
20762092

20772093
///////////////////////////////////////////////////////////////////////////////
2078-
/// @brief Print ur_bindless_images_import_opaque_fd_exp_params_t struct
2094+
/// @brief Print ur_bindless_images_import_external_memory_exp_params_t struct
20792095
/// @returns
20802096
/// - ::UR_RESULT_SUCCESS
20812097
/// - ::UR_RESULT_ERROR_INVALID_SIZE
20822098
/// - `buff_size < out_size`
2083-
UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesImportOpaqueFdExpParams(const struct ur_bindless_images_import_opaque_fd_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size);
2099+
UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesImportExternalMemoryExpParams(const struct ur_bindless_images_import_external_memory_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size);
20842100

20852101
///////////////////////////////////////////////////////////////////////////////
20862102
/// @brief Print ur_bindless_images_map_external_array_exp_params_t struct
@@ -2099,12 +2115,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesMapExternalArrayExpPara
20992115
UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesReleaseInteropExpParams(const struct ur_bindless_images_release_interop_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size);
21002116

21012117
///////////////////////////////////////////////////////////////////////////////
2102-
/// @brief Print ur_bindless_images_import_external_semaphore_opaque_fd_exp_params_t struct
2118+
/// @brief Print ur_bindless_images_import_external_semaphore_exp_params_t struct
21032119
/// @returns
21042120
/// - ::UR_RESULT_SUCCESS
21052121
/// - ::UR_RESULT_ERROR_INVALID_SIZE
21062122
/// - `buff_size < out_size`
2107-
UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesImportExternalSemaphoreOpaqueFdExpParams(const struct ur_bindless_images_import_external_semaphore_opaque_fd_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size);
2123+
UR_APIEXPORT ur_result_t UR_APICALL urPrintBindlessImagesImportExternalSemaphoreExpParams(const struct ur_bindless_images_import_external_semaphore_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size);
21082124

21092125
///////////////////////////////////////////////////////////////////////////////
21102126
/// @brief Print ur_bindless_images_destroy_external_semaphore_exp_params_t struct

include/ur_print.hpp

Lines changed: 88 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,8 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_map_flag_t value);
326326
inline std::ostream &operator<<(std::ostream &os, enum ur_usm_migration_flag_t value);
327327
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_image_copy_flag_t value);
328328
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_filter_mode_t value);
329+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_external_mem_type_t value);
330+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_external_semaphore_type_t value);
329331
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_file_descriptor_t params);
330332
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_win32_handle_t params);
331333
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_sampler_mip_properties_t params);
@@ -743,18 +745,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_function_t value) {
743745
case UR_FUNCTION_BINDLESS_IMAGES_MIPMAP_FREE_EXP:
744746
os << "UR_FUNCTION_BINDLESS_IMAGES_MIPMAP_FREE_EXP";
745747
break;
746-
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_OPAQUE_FD_EXP:
747-
os << "UR_FUNCTION_BINDLESS_IMAGES_IMPORT_OPAQUE_FD_EXP";
748-
break;
749748
case UR_FUNCTION_BINDLESS_IMAGES_MAP_EXTERNAL_ARRAY_EXP:
750749
os << "UR_FUNCTION_BINDLESS_IMAGES_MAP_EXTERNAL_ARRAY_EXP";
751750
break;
752751
case UR_FUNCTION_BINDLESS_IMAGES_RELEASE_INTEROP_EXP:
753752
os << "UR_FUNCTION_BINDLESS_IMAGES_RELEASE_INTEROP_EXP";
754753
break;
755-
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXP:
756-
os << "UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXP";
757-
break;
758754
case UR_FUNCTION_BINDLESS_IMAGES_DESTROY_EXTERNAL_SEMAPHORE_EXP:
759755
os << "UR_FUNCTION_BINDLESS_IMAGES_DESTROY_EXTERNAL_SEMAPHORE_EXP";
760756
break;
@@ -932,6 +928,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_function_t value) {
932928
case UR_FUNCTION_KERNEL_GET_SUGGESTED_LOCAL_WORK_SIZE:
933929
os << "UR_FUNCTION_KERNEL_GET_SUGGESTED_LOCAL_WORK_SIZE";
934930
break;
931+
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_MEMORY_EXP:
932+
os << "UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_MEMORY_EXP";
933+
break;
934+
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_EXP:
935+
os << "UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_EXP";
936+
break;
935937
default:
936938
os << "unknown enumerator";
937939
break;
@@ -9313,6 +9315,48 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_fi
93139315
return os;
93149316
}
93159317
///////////////////////////////////////////////////////////////////////////////
9318+
/// @brief Print operator for the ur_exp_external_mem_type_t type
9319+
/// @returns
9320+
/// std::ostream &
9321+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_external_mem_type_t value) {
9322+
switch (value) {
9323+
case UR_EXP_EXTERNAL_MEM_TYPE_OPAQUE_FD:
9324+
os << "UR_EXP_EXTERNAL_MEM_TYPE_OPAQUE_FD";
9325+
break;
9326+
case UR_EXP_EXTERNAL_MEM_TYPE_WIN32_NT:
9327+
os << "UR_EXP_EXTERNAL_MEM_TYPE_WIN32_NT";
9328+
break;
9329+
case UR_EXP_EXTERNAL_MEM_TYPE_WIN32_NT_DX12_RESOURCE:
9330+
os << "UR_EXP_EXTERNAL_MEM_TYPE_WIN32_NT_DX12_RESOURCE";
9331+
break;
9332+
default:
9333+
os << "unknown enumerator";
9334+
break;
9335+
}
9336+
return os;
9337+
}
9338+
///////////////////////////////////////////////////////////////////////////////
9339+
/// @brief Print operator for the ur_exp_external_semaphore_type_t type
9340+
/// @returns
9341+
/// std::ostream &
9342+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_external_semaphore_type_t value) {
9343+
switch (value) {
9344+
case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD:
9345+
os << "UR_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD";
9346+
break;
9347+
case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT:
9348+
os << "UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT";
9349+
break;
9350+
case UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE:
9351+
os << "UR_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE";
9352+
break;
9353+
default:
9354+
os << "unknown enumerator";
9355+
break;
9356+
}
9357+
return os;
9358+
}
9359+
///////////////////////////////////////////////////////////////////////////////
93169360
/// @brief Print operator for the ur_exp_file_descriptor_t type
93179361
/// @returns
93189362
/// std::ostream &
@@ -14760,10 +14804,10 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
1476014804
}
1476114805

1476214806
///////////////////////////////////////////////////////////////////////////////
14763-
/// @brief Print operator for the ur_bindless_images_import_opaque_fd_exp_params_t type
14807+
/// @brief Print operator for the ur_bindless_images_import_external_memory_exp_params_t type
1476414808
/// @returns
1476514809
/// std::ostream &
14766-
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_bindless_images_import_opaque_fd_exp_params_t *params) {
14810+
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_bindless_images_import_external_memory_exp_params_t *params) {
1476714811

1476814812
os << ".hContext = ";
1476914813

@@ -14781,6 +14825,11 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
1478114825

1478214826
os << *(params->psize);
1478314827

14828+
os << ", ";
14829+
os << ".memHandleType = ";
14830+
14831+
os << *(params->pmemHandleType);
14832+
1478414833
os << ", ";
1478514834
os << ".pInteropMemDesc = ";
1478614835

@@ -14867,10 +14916,10 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
1486714916
}
1486814917

1486914918
///////////////////////////////////////////////////////////////////////////////
14870-
/// @brief Print operator for the ur_bindless_images_import_external_semaphore_opaque_fd_exp_params_t type
14919+
/// @brief Print operator for the ur_bindless_images_import_external_semaphore_exp_params_t type
1487114920
/// @returns
1487214921
/// std::ostream &
14873-
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_bindless_images_import_external_semaphore_opaque_fd_exp_params_t *params) {
14922+
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_bindless_images_import_external_semaphore_exp_params_t *params) {
1487414923

1487514924
os << ".hContext = ";
1487614925

@@ -14883,6 +14932,11 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
1488314932
ur::details::printPtr(os,
1488414933
*(params->phDevice));
1488514934

14935+
os << ", ";
14936+
os << ".semHandleType = ";
14937+
14938+
os << *(params->psemHandleType);
14939+
1488614940
os << ", ";
1488714941
os << ".pInteropSemaphoreDesc = ";
1488814942

@@ -14941,6 +14995,16 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
1494114995
ur::details::printPtr(os,
1494214996
*(params->phSemaphore));
1494314997

14998+
os << ", ";
14999+
os << ".hasWaitValue = ";
15000+
15001+
os << *(params->phasWaitValue);
15002+
15003+
os << ", ";
15004+
os << ".waitValue = ";
15005+
15006+
os << *(params->pwaitValue);
15007+
1494415008
os << ", ";
1494515009
os << ".numEventsInWaitList = ";
1494615010

@@ -14984,6 +15048,16 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
1498415048
ur::details::printPtr(os,
1498515049
*(params->phSemaphore));
1498615050

15051+
os << ", ";
15052+
os << ".hasSignalValue = ";
15053+
15054+
os << *(params->phasSignalValue);
15055+
15056+
os << ", ";
15057+
os << ".signalValue = ";
15058+
15059+
os << *(params->psignalValue);
15060+
1498715061
os << ", ";
1498815062
os << ".numEventsInWaitList = ";
1498915063

@@ -17417,17 +17491,17 @@ inline ur_result_t UR_APICALL printFunctionParams(std::ostream &os, ur_function_
1741717491
case UR_FUNCTION_BINDLESS_IMAGES_MIPMAP_FREE_EXP: {
1741817492
os << (const struct ur_bindless_images_mipmap_free_exp_params_t *)params;
1741917493
} break;
17420-
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_OPAQUE_FD_EXP: {
17421-
os << (const struct ur_bindless_images_import_opaque_fd_exp_params_t *)params;
17494+
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_MEMORY_EXP: {
17495+
os << (const struct ur_bindless_images_import_external_memory_exp_params_t *)params;
1742217496
} break;
1742317497
case UR_FUNCTION_BINDLESS_IMAGES_MAP_EXTERNAL_ARRAY_EXP: {
1742417498
os << (const struct ur_bindless_images_map_external_array_exp_params_t *)params;
1742517499
} break;
1742617500
case UR_FUNCTION_BINDLESS_IMAGES_RELEASE_INTEROP_EXP: {
1742717501
os << (const struct ur_bindless_images_release_interop_exp_params_t *)params;
1742817502
} break;
17429-
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXP: {
17430-
os << (const struct ur_bindless_images_import_external_semaphore_opaque_fd_exp_params_t *)params;
17503+
case UR_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_EXP: {
17504+
os << (const struct ur_bindless_images_import_external_semaphore_exp_params_t *)params;
1743117505
} break;
1743217506
case UR_FUNCTION_BINDLESS_IMAGES_DESTROY_EXTERNAL_SEMAPHORE_EXP: {
1743317507
os << (const struct ur_bindless_images_destroy_external_semaphore_exp_params_t *)params;

scripts/core/EXP-BINDLESS-IMAGES.rst

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,16 @@ Enums
112112
* ${X}_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS
113113
* ${X}_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED
114114

115+
* ${x}_exp_external_mem_type_t
116+
* ${X}_EXP_EXTERNAL_MEM_TYPE_OPAQUE_FD
117+
* ${X}_EXP_EXTERNAL_MEM_TYPE_WIN32_NT
118+
* ${X}_EXP_EXTERNAL_MEM_TYPE_WIN32_NT_DX12_RESOURCE
119+
120+
* ${x}_exp_external_semaphore_type_t
121+
* ${X}_EXP_EXTERNAL_SEMAPHORE_TYPE_OPAQUE_FD
122+
* ${X}_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT
123+
* ${X}_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE
124+
115125
* ${x}_function_t
116126
* ${X}_FUNCTION_USM_PITCHED_ALLOC_EXP
117127
* ${X}_FUNCTION_BINDLESS_IMAGES_UNSAMPLED_IMAGE_HANDLE_DESTROY_EXP
@@ -124,10 +134,10 @@ Enums
124134
* ${X}_FUNCTION_BINDLESS_IMAGES_IMAGE_GET_INFO_EXP
125135
* ${X}_FUNCTION_BINDLESS_IMAGES_MIPMAP_GET_LEVEL_EXP
126136
* ${X}_FUNCTION_BINDLESS_IMAGES_MIPMAP_FREE_EXP
127-
* ${X}_FUNCTION_BINDLESS_IMAGES_IMPORT_OPAQUE_FD_EXP
137+
* ${X}_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_MEMORY_EXP
128138
* ${X}_FUNCTION_BINDLESS_IMAGES_MAP_EXTERNAL_ARRAY_EXP
129139
* ${X}_FUNCTION_BINDLESS_IMAGES_RELEASE_INTEROP_EXP
130-
* ${X}_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXP
140+
* ${X}_FUNCTION_BINDLESS_IMAGES_IMPORT_EXTERNAL_SEMAPHORE_EXP
131141
* ${X}_FUNCTION_BINDLESS_IMAGES_DESTROY_EXTERNAL_SEMAPHORE_EXP
132142
* ${X}_FUNCTION_BINDLESS_IMAGES_WAIT_EXTERNAL_SEMAPHORE_EXP
133143
* ${X}_FUNCTION_BINDLESS_IMAGES_SIGNAL_EXTERNAL_SEMAPHORE_EXP
@@ -167,10 +177,10 @@ Functions
167177
* ${x}BindlessImagesMipmapFreeExp
168178

169179
* Interop
170-
* ${x}BindlessImagesImportOpaqueFDExp
180+
* ${x}BindlessImagesImportExternalMemoryExp
171181
* ${x}BindlessImagesMapExternalArrayExp
172182
* ${x}BindlessImagesReleaseInteropExp
173-
* ${x}BindlessImagesImportExternalSemaphoreOpaqueFDExp
183+
* ${x}BindlessImagesImportExternalSemaphoreExp
174184
* ${x}BindlessImagesDestroyExternalSemaphoreExp
175185
* ${x}BindlessImagesWaitExternalSemaphoreExp
176186
* ${x}BindlessImagesSignalExternalSemaphoreExp
@@ -210,6 +220,23 @@ Changelog
210220
+----------+-------------------------------------------------------------+
211221
| 12.0 | Added image arrays to list of supported bindless images |
212222
+----------+-------------------------------------------------------------+
223+
| 13.0 || Interop import API has been adapted to cater to multiple |
224+
| || external memory and semaphore handle types |
225+
| || Removed the following APIs: |
226+
| || - ImportExternalOpaqueFDExp |
227+
| || - ImportExternalSemaphoreOpaqueFDExp |
228+
| || Added the following APIs: |
229+
| || - ImportExternalMemoryExp |
230+
| || - ImportExternalSemaphoreExp |
231+
| || Added the following enums: |
232+
| || - exp_external_mem_type_t |
233+
| || - exp_external_semaphore_type_t |
234+
| || Semaphore oparations now take value parameters which set |
235+
| || the state the semaphore should wait on or signal. |
236+
| || Introduced resource enums for DX12 interop: |
237+
| || - ${X}_EXP_EXTERNAL_MEM_TYPE_WIN32_NT_DX12_RESOURCE |
238+
| || - ${X}_EXP_EXTERNAL_SEMAPHORE_TYPE_WIN32_NT_DX12_FENCE |
239+
+------------------------------------------------------------------------+
213240

214241
Contributors
215242
--------------------------------------------------------------------------------

0 commit comments

Comments
 (0)