From 80168b194fb72590930adc74bad1d26566447f03 Mon Sep 17 00:00:00 2001 From: Raiyan Latif Date: Sat, 8 Mar 2025 19:30:50 +0000 Subject: [PATCH] refactor: Set external semaphore version in L0 Related-To: NEO-14295 Signed-off-by: Raiyan Latif --- .../api/core/ze_cmdlist_api_entrypoints.h | 46 +++++- .../api/core/ze_device_api_entrypoints.h | 25 ++++ .../driver_experimental/public/CMakeLists.txt | 1 - .../public/zex_cmdlist.cpp | 26 +--- .../driver_experimental/public/zex_device.cpp | 23 --- level_zero/core/source/cmdlist/cmdlist.h | 8 +- level_zero/core/source/cmdlist/cmdlist_hw.h | 8 +- level_zero/core/source/cmdlist/cmdlist_hw.inl | 8 +- .../source/cmdlist/cmdlist_hw_immediate.h | 8 +- .../source/cmdlist/cmdlist_hw_immediate.inl | 8 +- .../driver/driver_handle_imp_helper.cpp | 1 + .../driver/extension_function_address.cpp | 4 - .../source/semaphore/external_semaphore.h | 12 +- .../semaphore/external_semaphore_imp.cpp | 36 ++--- .../source/semaphore/external_semaphore_imp.h | 6 +- .../core/test/unit_tests/mocks/mock_cmdlist.h | 8 +- .../semaphore/linux/test_semaphore_linux.cpp | 14 +- .../sources/semaphore/test_semaphore.cpp | 60 ++++---- .../windows/test_semaphore_windows.cpp | 122 ++++++++-------- .../EXTERNAL_SEMAPHORE.md | 131 ------------------ level_zero/include/level_zero/ze_intel_gpu.h | 100 +------------ level_zero/include/level_zero/ze_stypes.h | 5 - 22 files changed, 222 insertions(+), 438 deletions(-) delete mode 100644 level_zero/api/driver_experimental/public/zex_device.cpp delete mode 100644 level_zero/doc/experimental_extensions/EXTERNAL_SEMAPHORE.md diff --git a/level_zero/api/core/ze_cmdlist_api_entrypoints.h b/level_zero/api/core/ze_cmdlist_api_entrypoints.h index 433164aeab..40419addb7 100644 --- a/level_zero/api/core/ze_cmdlist_api_entrypoints.h +++ b/level_zero/api/core/ze_cmdlist_api_entrypoints.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2024 Intel Corporation + * Copyright (C) 2020-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -106,6 +106,28 @@ ze_result_t zeCommandListImmediateAppendCommandListsExp( return L0::CommandList::fromHandle(hCommandListImmediate)->appendCommandLists(numCommandLists, phCommandLists, hSignalEvent, numWaitEvents, phWaitEvents); } +ze_result_t zeCommandListAppendSignalExternalSemaphoreExt( + ze_command_list_handle_t hCommandList, + uint32_t numSemaphores, + ze_external_semaphore_ext_handle_t *phSemaphores, + ze_external_semaphore_signal_params_ext_t *signalParams, + ze_event_handle_t hSignalEvent, + uint32_t numWaitEvents, + ze_event_handle_t *phWaitEvents) { + return L0::CommandList::fromHandle(hCommandList)->appendSignalExternalSemaphores(numSemaphores, phSemaphores, signalParams, hSignalEvent, numWaitEvents, phWaitEvents); +} + +ze_result_t zeCommandListAppendWaitExternalSemaphoreExt( + ze_command_list_handle_t hCommandList, + uint32_t numSemaphores, + ze_external_semaphore_ext_handle_t *phSemaphores, + ze_external_semaphore_wait_params_ext_t *waitParams, + ze_event_handle_t hSignalEvent, + uint32_t numWaitEvents, + ze_event_handle_t *phWaitEvents) { + return L0::CommandList::fromHandle(hCommandList)->appendWaitExternalSemaphores(numSemaphores, phSemaphores, waitParams, hSignalEvent, numWaitEvents, phWaitEvents); +} + } // namespace L0 extern "C" { @@ -220,4 +242,26 @@ ZE_APIEXPORT ze_result_t ZE_APICALL zeCommandListImmediateAppendCommandListsExp( numWaitEvents, phWaitEvents); } + +ZE_APIEXPORT ze_result_t ZE_APICALL zeCommandListAppendSignalExternalSemaphoreExt( + ze_command_list_handle_t hCommandList, + uint32_t numSemaphores, + ze_external_semaphore_ext_handle_t *phSemaphores, + ze_external_semaphore_signal_params_ext_t *signalParams, + ze_event_handle_t hSignalEvent, + uint32_t numWaitEvents, + ze_event_handle_t *phWaitEvents) { + return L0::CommandList::fromHandle(hCommandList)->appendSignalExternalSemaphores(numSemaphores, phSemaphores, signalParams, hSignalEvent, numWaitEvents, phWaitEvents); +} + +ZE_APIEXPORT ze_result_t ZE_APICALL zeCommandListAppendWaitExternalSemaphoreExt( + ze_command_list_handle_t hCommandList, + uint32_t numSemaphores, + ze_external_semaphore_ext_handle_t *phSemaphores, + ze_external_semaphore_wait_params_ext_t *waitParams, + ze_event_handle_t hSignalEvent, + uint32_t numWaitEvents, + ze_event_handle_t *phWaitEvents) { + return L0::CommandList::fromHandle(hCommandList)->appendWaitExternalSemaphores(numSemaphores, phSemaphores, waitParams, hSignalEvent, numWaitEvents, phWaitEvents); +} } \ No newline at end of file diff --git a/level_zero/api/core/ze_device_api_entrypoints.h b/level_zero/api/core/ze_device_api_entrypoints.h index f68dda6a5b..5ea30718dc 100644 --- a/level_zero/api/core/ze_device_api_entrypoints.h +++ b/level_zero/api/core/ze_device_api_entrypoints.h @@ -10,6 +10,7 @@ #include "level_zero/core/source/device/device.h" #include "level_zero/core/source/driver/driver.h" #include "level_zero/core/source/driver/driver_handle.h" +#include "level_zero/core/source/semaphore/external_semaphore_imp.h" #include #include @@ -138,6 +139,18 @@ ze_result_t zeDeviceGetRootDevice( return L0::Device::fromHandle(hDevice)->getRootDevice(phRootDevice); } +ze_result_t zeDeviceImportExternalSemaphoreExt( + ze_device_handle_t hDevice, + const ze_external_semaphore_ext_desc_t *desc, + ze_external_semaphore_ext_handle_t *phSemaphore) { + return L0::ExternalSemaphore::importExternalSemaphore(hDevice, desc, phSemaphore); +} + +ze_result_t zeDeviceReleaseExternalSemaphoreExt( + ze_external_semaphore_ext_handle_t hSemaphore) { + return L0::ExternalSemaphoreImp::fromHandle(hSemaphore)->releaseExternalSemaphore(); +} + } // namespace L0 extern "C" { @@ -295,4 +308,16 @@ ze_result_t zeDevicePciGetPropertiesExt( ze_pci_ext_properties_t *pPciProperties) { return L0::zeDevicePciGetPropertiesExt(hDevice, pPciProperties); } + +ZE_APIEXPORT ze_result_t ZE_APICALL zeDeviceImportExternalSemaphoreExt( + ze_device_handle_t hDevice, + const ze_external_semaphore_ext_desc_t *desc, + ze_external_semaphore_ext_handle_t *phSemaphore) { + return L0::ExternalSemaphore::importExternalSemaphore(hDevice, desc, phSemaphore); +} + +ZE_APIEXPORT ze_result_t ZE_APICALL zeDeviceReleaseExternalSemaphoreExt( + ze_external_semaphore_ext_handle_t hSemaphore) { + return L0::ExternalSemaphoreImp::fromHandle(hSemaphore)->releaseExternalSemaphore(); +} } diff --git a/level_zero/api/driver_experimental/public/CMakeLists.txt b/level_zero/api/driver_experimental/public/CMakeLists.txt index 4e943ef228..6328450dd4 100644 --- a/level_zero/api/driver_experimental/public/CMakeLists.txt +++ b/level_zero/api/driver_experimental/public/CMakeLists.txt @@ -9,7 +9,6 @@ target_sources(${L0_STATIC_LIB_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/zex_cmdlist.cpp ${CMAKE_CURRENT_SOURCE_DIR}/zex_context.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/zex_device.cpp ${CMAKE_CURRENT_SOURCE_DIR}/zex_driver.cpp ${CMAKE_CURRENT_SOURCE_DIR}/zex_event.cpp ${CMAKE_CURRENT_SOURCE_DIR}/zex_memory.cpp diff --git a/level_zero/api/driver_experimental/public/zex_cmdlist.cpp b/level_zero/api/driver_experimental/public/zex_cmdlist.cpp index a9a2d8b4db..80eddd7274 100644 --- a/level_zero/api/driver_experimental/public/zex_cmdlist.cpp +++ b/level_zero/api/driver_experimental/public/zex_cmdlist.cpp @@ -71,28 +71,4 @@ zexCommandListAppendWriteToMemory( return ZE_RESULT_ERROR_UNKNOWN; } } -} // namespace L0 - -ze_result_t ZE_APICALL -zeIntelCommandListAppendWaitExternalSemaphoresExp( - ze_command_list_handle_t hCmdList, - unsigned int numExternalSemaphores, - const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_wait_params_exp_t *params, - ze_event_handle_t hSignalEvent, - uint32_t numWaitEvents, - ze_event_handle_t *phWaitEvents) { - return L0::CommandList::fromHandle(hCmdList)->appendWaitExternalSemaphores(numExternalSemaphores, hSemaphores, params, hSignalEvent, numWaitEvents, phWaitEvents); -} - -ze_result_t ZE_APICALL -zeIntelCommandListAppendSignalExternalSemaphoresExp( - ze_command_list_handle_t hCmdList, - size_t numExternalSemaphores, - const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_signal_params_exp_t *params, - ze_event_handle_t hSignalEvent, - uint32_t numWaitEvents, - ze_event_handle_t *phWaitEvents) { - return L0::CommandList::fromHandle(hCmdList)->appendSignalExternalSemaphores(numExternalSemaphores, hSemaphores, params, hSignalEvent, numWaitEvents, phWaitEvents); -} +} // namespace L0 \ No newline at end of file diff --git a/level_zero/api/driver_experimental/public/zex_device.cpp b/level_zero/api/driver_experimental/public/zex_device.cpp deleted file mode 100644 index c7ee48abe7..0000000000 --- a/level_zero/api/driver_experimental/public/zex_device.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2024 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "level_zero/core/source/semaphore/external_semaphore_imp.h" -#include "level_zero/ze_intel_gpu.h" - -ze_result_t ZE_APICALL -zeIntelDeviceImportExternalSemaphoreExp( - ze_device_handle_t device, - const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc, - ze_intel_external_semaphore_exp_handle_t *phSemaphore) { - return L0::ExternalSemaphore::importExternalSemaphore(device, semaphoreDesc, phSemaphore); -} - -ze_result_t ZE_APICALL -zeIntelDeviceReleaseExternalSemaphoreExp( - ze_intel_external_semaphore_exp_handle_t hSemaphore) { - return L0::ExternalSemaphoreImp::fromHandle(hSemaphore)->releaseExternalSemaphore(); -} diff --git a/level_zero/core/source/cmdlist/cmdlist.h b/level_zero/core/source/cmdlist/cmdlist.h index ad41c8b1cd..1efb9efd74 100644 --- a/level_zero/core/source/cmdlist/cmdlist.h +++ b/level_zero/core/source/cmdlist/cmdlist.h @@ -173,11 +173,11 @@ struct CommandList : _ze_command_list_handle_t { virtual ze_result_t appendWaitOnMemory(void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData) = 0; virtual ze_result_t appendWriteToMemory(void *desc, void *ptr, uint64_t data) = 0; - virtual ze_result_t appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_wait_params_exp_t *params, ze_event_handle_t hSignalEvent, + virtual ze_result_t appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_wait_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) = 0; - virtual ze_result_t appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_signal_params_exp_t *params, ze_event_handle_t hSignalEvent, + virtual ze_result_t appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_signal_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) = 0; virtual ze_result_t hostSynchronize(uint64_t timeout) = 0; diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.h b/level_zero/core/source/cmdlist/cmdlist_hw.h index 96d7934709..7b457a15e4 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.h +++ b/level_zero/core/source/cmdlist/cmdlist_hw.h @@ -174,11 +174,11 @@ struct CommandListCoreFamily : public CommandListImp { ze_result_t appendWriteToMemory(void *desc, void *ptr, uint64_t data) override; - ze_result_t appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_wait_params_exp_t *params, ze_event_handle_t hSignalEvent, + ze_result_t appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_wait_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) override; - ze_result_t appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_signal_params_exp_t *params, ze_event_handle_t hSignalEvent, + ze_result_t appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_signal_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) override; ze_result_t appendQueryKernelTimestamps(uint32_t numEvents, ze_event_handle_t *phEvents, void *dstptr, diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 2bd3fa2863..ea7a24627f 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -3898,15 +3898,15 @@ ze_result_t CommandListCoreFamily::appendWriteToMemory(void *desc } template -ze_result_t CommandListCoreFamily::appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_wait_params_exp_t *params, ze_event_handle_t hSignalEvent, +ze_result_t CommandListCoreFamily::appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_wait_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) { return ZE_RESULT_ERROR_INVALID_ARGUMENT; } template -ze_result_t CommandListCoreFamily::appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_signal_params_exp_t *params, ze_event_handle_t hSignalEvent, +ze_result_t CommandListCoreFamily::appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_signal_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) { return ZE_RESULT_ERROR_INVALID_ARGUMENT; } diff --git a/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h b/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h index 5267f592c7..48a2a9f253 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h +++ b/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h @@ -176,11 +176,11 @@ struct CommandListCoreFamilyImmediate : public CommandListCoreFamily::appendWriteToMemory(v } template -ze_result_t CommandListCoreFamilyImmediate::appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_wait_params_exp_t *params, ze_event_handle_t hSignalEvent, +ze_result_t CommandListCoreFamilyImmediate::appendWaitExternalSemaphores(uint32_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_wait_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) { checkAvailableSpace(0, false, commonImmediateCommandSize, false); @@ -1051,8 +1051,8 @@ ze_result_t CommandListCoreFamilyImmediate::appendWaitExternalSem } template -ze_result_t CommandListCoreFamilyImmediate::appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_signal_params_exp_t *params, ze_event_handle_t hSignalEvent, +ze_result_t CommandListCoreFamilyImmediate::appendSignalExternalSemaphores(size_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_signal_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) { checkAvailableSpace(0, false, commonImmediateCommandSize, false); diff --git a/level_zero/core/source/driver/driver_handle_imp_helper.cpp b/level_zero/core/source/driver/driver_handle_imp_helper.cpp index d5aabd2037..b85fcc8647 100644 --- a/level_zero/core/source/driver/driver_handle_imp_helper.cpp +++ b/level_zero/core/source/driver/driver_handle_imp_helper.cpp @@ -35,6 +35,7 @@ const std::vector> DriverHandleImp::extensionsS {ZE_LINKAGE_INSPECTION_EXT_NAME, ZE_LINKAGE_INSPECTION_EXT_VERSION_CURRENT}, {ZE_IMMEDIATE_COMMAND_LIST_APPEND_EXP_NAME, ZE_IMMEDIATE_COMMAND_LIST_APPEND_EXP_VERSION_1_0}, {ZE_GET_KERNEL_BINARY_EXP_NAME, ZE_KERNEL_GET_BINARY_EXP_VERSION_1_0}, + {ZE_EXTERNAL_SEMAPHORES_EXTENSION_NAME, ZE_EXTERNAL_SEMAPHORE_EXT_VERSION_1_0}, // Driver experimental extensions {ZE_INTEL_DEVICE_MODULE_DP_PROPERTIES_EXP_NAME, ZE_INTEL_DEVICE_MODULE_DP_PROPERTIES_EXP_VERSION_CURRENT}, diff --git a/level_zero/core/source/driver/extension_function_address.cpp b/level_zero/core/source/driver/extension_function_address.cpp index baaac9b55d..c3111e6943 100644 --- a/level_zero/core/source/driver/extension_function_address.cpp +++ b/level_zero/core/source/driver/extension_function_address.cpp @@ -58,10 +58,6 @@ void *ExtensionFunctionAddressHelper::getExtensionFunctionAddress(const std::str RETURN_FUNC_PTR_IF_EXIST(zexIntelAllocateNetworkInterrupt); RETURN_FUNC_PTR_IF_EXIST(zexIntelReleaseNetworkInterrupt); - RETURN_FUNC_PTR_IF_EXIST(zeIntelDeviceImportExternalSemaphoreExp); - RETURN_FUNC_PTR_IF_EXIST(zeIntelCommandListAppendWaitExternalSemaphoresExp); - RETURN_FUNC_PTR_IF_EXIST(zeIntelCommandListAppendSignalExternalSemaphoresExp); - RETURN_FUNC_PTR_IF_EXIST(zeIntelDeviceReleaseExternalSemaphoreExp); RETURN_FUNC_PTR_IF_EXIST(zetIntelCommandListAppendMarkerExp); RETURN_FUNC_PTR_IF_EXIST(zetIntelMetricTracerCreateExp); RETURN_FUNC_PTR_IF_EXIST(zetIntelMetricTracerDestroyExp); diff --git a/level_zero/core/source/semaphore/external_semaphore.h b/level_zero/core/source/semaphore/external_semaphore.h index 26fd46c7d9..ba38e1f41f 100644 --- a/level_zero/core/source/semaphore/external_semaphore.h +++ b/level_zero/core/source/semaphore/external_semaphore.h @@ -19,23 +19,23 @@ #include #include -struct _ze_intel_external_semaphore_exp_handle_t { +struct _ze_external_semaphore_ext_handle_t { const uint64_t objMagic = objMagicValue; }; namespace L0 { -struct ExternalSemaphore : _ze_intel_external_semaphore_exp_handle_t { +struct ExternalSemaphore : _ze_external_semaphore_ext_handle_t { virtual ~ExternalSemaphore() = default; - static ze_result_t importExternalSemaphore(ze_device_handle_t device, const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc, ze_intel_external_semaphore_exp_handle_t *phSemaphore); + static ze_result_t importExternalSemaphore(ze_device_handle_t device, const ze_external_semaphore_ext_desc_t *semaphoreDesc, ze_external_semaphore_ext_handle_t *phSemaphore); virtual ze_result_t releaseExternalSemaphore() = 0; - static ExternalSemaphore *fromHandle(ze_intel_external_semaphore_exp_handle_t handle) { return static_cast(handle); } - inline ze_intel_external_semaphore_exp_handle_t toHandle() { return this; } + static ExternalSemaphore *fromHandle(ze_external_semaphore_ext_handle_t handle) { return static_cast(handle); } + inline ze_external_semaphore_ext_handle_t toHandle() { return this; } protected: - ze_intel_external_semaphore_exp_desc_t desc; + ze_external_semaphore_ext_desc_t desc; }; } // namespace L0 diff --git a/level_zero/core/source/semaphore/external_semaphore_imp.cpp b/level_zero/core/source/semaphore/external_semaphore_imp.cpp index e69d9b0328..f01f033833 100644 --- a/level_zero/core/source/semaphore/external_semaphore_imp.cpp +++ b/level_zero/core/source/semaphore/external_semaphore_imp.cpp @@ -16,7 +16,7 @@ namespace L0 { ze_result_t -ExternalSemaphore::importExternalSemaphore(ze_device_handle_t device, const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc, ze_intel_external_semaphore_exp_handle_t *phSemaphore) { +ExternalSemaphore::importExternalSemaphore(ze_device_handle_t device, const ze_external_semaphore_ext_desc_t *semaphoreDesc, ze_external_semaphore_ext_handle_t *phSemaphore) { auto externalSemaphore = new ExternalSemaphoreImp(); if (externalSemaphore == nullptr) { return ZE_RESULT_ERROR_OUT_OF_HOST_MEMORY; @@ -42,7 +42,7 @@ ExternalSemaphore::importExternalSemaphore(ze_device_handle_t device, const ze_i return result; } -ze_result_t ExternalSemaphoreImp::initialize(ze_device_handle_t device, const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc) { +ze_result_t ExternalSemaphoreImp::initialize(ze_device_handle_t device, const ze_external_semaphore_ext_desc_t *semaphoreDesc) { this->device = Device::fromHandle(device); auto deviceImp = static_cast(this->device); this->desc = semaphoreDesc; @@ -53,13 +53,13 @@ ze_result_t ExternalSemaphoreImp::initialize(ze_device_handle_t device, const ze if (semaphoreDesc->pNext != nullptr) { const ze_base_desc_t *extendedDesc = reinterpret_cast(semaphoreDesc->pNext); - if (extendedDesc->stype == ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC) { // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) - const ze_intel_external_semaphore_win32_exp_desc_t *extendedSemaphoreDesc = - reinterpret_cast(extendedDesc); + if (extendedDesc->stype == ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC) { // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + const ze_external_semaphore_win32_ext_desc_t *extendedSemaphoreDesc = + reinterpret_cast(extendedDesc); handle = extendedSemaphoreDesc->handle; - } else if (extendedDesc->stype == ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXP_DESC) { // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) - const ze_intel_external_semaphore_desc_fd_exp_desc_t *extendedSemaphoreDesc = - reinterpret_cast(extendedDesc); + } else if (extendedDesc->stype == ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXT_DESC) { // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + const ze_external_semaphore_fd_ext_desc_t *extendedSemaphoreDesc = + reinterpret_cast(extendedDesc); fd = extendedSemaphoreDesc->fd; } else { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; @@ -69,31 +69,31 @@ ze_result_t ExternalSemaphoreImp::initialize(ze_device_handle_t device, const ze } switch (semaphoreDesc->flags) { - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_FD: externalSemaphoreType = NEO::ExternalSemaphore::Type::OpaqueFd; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32: externalSemaphoreType = NEO::ExternalSemaphore::Type::OpaqueWin32; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32_KMT: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32_KMT: externalSemaphoreType = NEO::ExternalSemaphore::Type::OpaqueWin32Kmt; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D12_FENCE: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_D3D12_FENCE: externalSemaphoreType = NEO::ExternalSemaphore::Type::D3d12Fence; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D11_FENCE: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_D3D11_FENCE: externalSemaphoreType = NEO::ExternalSemaphore::Type::D3d11Fence; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_KEYED_MUTEX: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_KEYED_MUTEX: externalSemaphoreType = NEO::ExternalSemaphore::Type::KeyedMutex; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_KEYED_MUTEX_KMT: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_KEYED_MUTEX_KMT: externalSemaphoreType = NEO::ExternalSemaphore::Type::KeyedMutexKmt; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_FD: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_VK_TIMELINE_SEMAPHORE_FD: externalSemaphoreType = NEO::ExternalSemaphore::Type::TimelineSemaphoreFd; break; - case ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_WIN32: + case ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_VK_TIMELINE_SEMAPHORE_WIN32: externalSemaphoreType = NEO::ExternalSemaphore::Type::TimelineSemaphoreWin32; break; default: @@ -118,7 +118,7 @@ std::unique_ptr ExternalSemaphoreController::create return std::make_unique(); } -ze_result_t ExternalSemaphoreController::allocateProxyEvent(ze_intel_external_semaphore_exp_handle_t hExtSemaphore, ze_device_handle_t hDevice, ze_context_handle_t hContext, uint64_t fenceValue, ze_event_handle_t *phEvent, ExternalSemaphoreController::SemaphoreOperation operation) { +ze_result_t ExternalSemaphoreController::allocateProxyEvent(ze_external_semaphore_ext_handle_t hExtSemaphore, ze_device_handle_t hDevice, ze_context_handle_t hContext, uint64_t fenceValue, ze_event_handle_t *phEvent, ExternalSemaphoreController::SemaphoreOperation operation) { std::lock_guard lock(this->semControllerMutex); if (this->eventPoolsMap.find(hDevice) == this->eventPoolsMap.end()) { diff --git a/level_zero/core/source/semaphore/external_semaphore_imp.h b/level_zero/core/source/semaphore/external_semaphore_imp.h index 9980eb4161..894abafba7 100644 --- a/level_zero/core/source/semaphore/external_semaphore_imp.h +++ b/level_zero/core/source/semaphore/external_semaphore_imp.h @@ -25,14 +25,14 @@ namespace L0 { class ExternalSemaphoreImp : public ExternalSemaphore { public: - ze_result_t initialize(ze_device_handle_t device, const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc); + ze_result_t initialize(ze_device_handle_t device, const ze_external_semaphore_ext_desc_t *semaphoreDesc); ze_result_t releaseExternalSemaphore() override; std::unique_ptr neoExternalSemaphore; protected: Device *device = nullptr; - const ze_intel_external_semaphore_exp_desc_t *desc; + const ze_external_semaphore_ext_desc_t *desc; }; class ExternalSemaphoreController : NEO::NonCopyableAndNonMovableClass { @@ -81,7 +81,7 @@ class ExternalSemaphoreController : NEO::NonCopyableAndNonMovableClass { } } - ze_result_t allocateProxyEvent(ze_intel_external_semaphore_exp_handle_t hExtSemaphore, ze_device_handle_t hDevice, ze_context_handle_t hContext, uint64_t fenceValue, ze_event_handle_t *phEvent, SemaphoreOperation operation); + ze_result_t allocateProxyEvent(ze_external_semaphore_ext_handle_t hExtSemaphore, ze_device_handle_t hDevice, ze_context_handle_t hContext, uint64_t fenceValue, ze_event_handle_t *phEvent, SemaphoreOperation operation); void processProxyEvents(); std::mutex semControllerMutex; diff --git a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h index 24b8e99fb4..9acbf62b8a 100644 --- a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h +++ b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h @@ -572,12 +572,12 @@ struct MockCommandList : public CommandList { (void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData)); ADDMETHOD_NOBASE(appendWaitExternalSemaphores, ze_result_t, ZE_RESULT_SUCCESS, - (uint32_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_wait_params_exp_t *params, ze_event_handle_t hSignalEvent, + (uint32_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_wait_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents)); ADDMETHOD_NOBASE(appendSignalExternalSemaphores, ze_result_t, ZE_RESULT_SUCCESS, - (size_t numExternalSemaphores, const ze_intel_external_semaphore_exp_handle_t *hSemaphores, - const ze_intel_external_semaphore_signal_params_exp_t *params, ze_event_handle_t hSignalEvent, + (size_t numExternalSemaphores, const ze_external_semaphore_ext_handle_t *hSemaphores, + const ze_external_semaphore_signal_params_ext_t *params, ze_event_handle_t hSignalEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents)); ADDMETHOD_NOBASE(appendWriteToMemory, ze_result_t, ZE_RESULT_SUCCESS, diff --git a/level_zero/core/test/unit_tests/sources/semaphore/linux/test_semaphore_linux.cpp b/level_zero/core/test/unit_tests/sources/semaphore/linux/test_semaphore_linux.cpp index acca2ed311..6d481c44b0 100644 --- a/level_zero/core/test/unit_tests/sources/semaphore/linux/test_semaphore_linux.cpp +++ b/level_zero/core/test/unit_tests/sources/semaphore/linux/test_semaphore_linux.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -47,20 +47,20 @@ using DrmExternalSemaphoreTest = Test; HWTEST_F(DrmExternalSemaphoreTest, givenDriverModelDrmWhenImportExternalSemaphoreExpIsCalledThenUnsupportedFeatureIsReturned) { MockDeviceImp l0Device(neoDevice, neoDevice->getExecutionEnvironment()); - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; int fd = 0; - ze_intel_external_semaphore_desc_fd_exp_desc_t fdDesc = {}; + ze_external_semaphore_fd_ext_desc_t fdDesc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_FD; - fdDesc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + fdDesc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) fdDesc.fd = fd; desc.pNext = &fdDesc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device.toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device.toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); } diff --git a/level_zero/core/test/unit_tests/sources/semaphore/test_semaphore.cpp b/level_zero/core/test/unit_tests/sources/semaphore/test_semaphore.cpp index fbba8e5334..9bfa96d792 100644 --- a/level_zero/core/test/unit_tests/sources/semaphore/test_semaphore.cpp +++ b/level_zero/core/test/unit_tests/sources/semaphore/test_semaphore.cpp @@ -28,9 +28,9 @@ namespace ult { using ExternalSemaphoreTest = Test; HWTEST_F(ExternalSemaphoreTest, givenInvalidDescriptorAndImportExternalSemaphoreExpIsCalledThenInvalidArgumentsIsReturned) { ze_device_handle_t hDevice = device->toHandle(); - const ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(hDevice, &desc, &hSemaphore); + const ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; + ze_result_t result = zeDeviceImportExternalSemaphoreExt(hDevice, &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_ERROR_INVALID_ARGUMENT); } @@ -42,7 +42,7 @@ HWTEST_F(ExternalSemaphoreTest, givenValidParametersWhenReleaseExternalSemaphore HWTEST_F(ExternalSemaphoreTest, givenInvalidDescriptorWhenInitializeIsCalledThenInvalidArgumentIsReturned) { ze_device_handle_t hDevice = device->toHandle(); - const ze_intel_external_semaphore_exp_desc_t desc = {}; + const ze_external_semaphore_ext_desc_t desc = {}; auto externalSemaphoreImp = new ExternalSemaphoreImp(); ze_result_t result = externalSemaphoreImp->initialize(hDevice, &desc); EXPECT_EQ(result, ZE_RESULT_ERROR_INVALID_ARGUMENT); @@ -69,8 +69,8 @@ HWTEST2_F(ExternalSemaphoreTest, givenRegularCommandListWhenAppendWaitExternalSe MockCommandListCoreFamily cmdList; cmdList.initialize(device, NEO::EngineGroupType::renderCompute, 0u); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = reinterpret_cast(0x1); + ze_external_semaphore_wait_params_ext_t waitParams = {}; + ze_external_semaphore_ext_handle_t hSemaphore = reinterpret_cast(0x1); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_ERROR_INVALID_ARGUMENT); } @@ -79,8 +79,8 @@ HWTEST2_F(ExternalSemaphoreTest, givenRegularCommandListWhenAppendSignalExternal MockCommandListCoreFamily cmdList; cmdList.initialize(device, NEO::EngineGroupType::renderCompute, 0u); - ze_intel_external_semaphore_signal_params_exp_t signalParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = reinterpret_cast(0x1); + ze_external_semaphore_signal_params_ext_t signalParams = {}; + ze_external_semaphore_ext_handle_t hSemaphore = reinterpret_cast(0x1); ze_result_t result = cmdList.appendSignalExternalSemaphores(1, &hSemaphore, &signalParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_ERROR_INVALID_ARGUMENT); } @@ -142,10 +142,10 @@ HWTEST2_F(ExternalSemaphoreTest, givenImmediateCommandListWhenAppendSignalExtern cmdList.initialize(l0Device.get(), NEO::EngineGroupType::renderCompute, 0u); cmdList.setCmdListContext(context); - ze_intel_external_semaphore_signal_params_exp_t signalParams = {}; + ze_external_semaphore_signal_params_ext_t signalParams = {}; signalParams.value = 1u; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendSignalExternalSemaphores(1, &hSemaphore, &signalParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 0u); @@ -174,11 +174,11 @@ HWTEST2_F(ExternalSemaphoreTest, givenAppendWaitOnEventFailsWhenAppendSignalExte cmdList.setCmdListContext(context); cmdList.failingWaitOnEvents = true; - ze_intel_external_semaphore_signal_params_exp_t signalParams = {}; + ze_external_semaphore_signal_params_ext_t signalParams = {}; signalParams.value = 1u; ze_event_handle_t event; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendSignalExternalSemaphores(1, &hSemaphore, &signalParams, nullptr, 1, &event); EXPECT_NE(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 1u); @@ -205,10 +205,10 @@ HWTEST2_F(ExternalSemaphoreTest, givenAppendSignalInternalProxyEventFailsWhenApp cmdList.setCmdListContext(context); cmdList.failingSignalEvent = true; - ze_intel_external_semaphore_signal_params_exp_t signalParams = {}; + ze_external_semaphore_signal_params_ext_t signalParams = {}; signalParams.value = 1u; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendSignalExternalSemaphores(1, &hSemaphore, &signalParams, nullptr, 0, nullptr); EXPECT_NE(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 0u); @@ -236,12 +236,12 @@ HWTEST2_F(ExternalSemaphoreTest, givenAppendSignalEventFailsWhenAppendSignalExte cmdList.setCmdListContext(context); cmdList.failOnSecondSignalEvent = true; - ze_intel_external_semaphore_signal_params_exp_t signalParams = {}; + ze_external_semaphore_signal_params_ext_t signalParams = {}; signalParams.value = 1u; ze_event_handle_t waitEvent = {}; MockEvent signalEvent; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_event_handle_t hSignalEvent = signalEvent.toHandle(); ze_result_t result = cmdList.appendSignalExternalSemaphores(1, &hSemaphore, &signalParams, hSignalEvent, 1, &waitEvent); EXPECT_NE(result, ZE_RESULT_SUCCESS); @@ -269,8 +269,8 @@ HWTEST2_F(ExternalSemaphoreTest, givenFailingMemoryManagerWhenAppendSignalExtern cmdList.initialize(l0Device.get(), NEO::EngineGroupType::renderCompute, 0u); cmdList.setCmdListContext(context); - ze_intel_external_semaphore_signal_params_exp_t signalParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_signal_params_ext_t signalParams = {}; + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendSignalExternalSemaphores(1, &hSemaphore, &signalParams, nullptr, 0, nullptr); EXPECT_NE(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 0u); @@ -297,9 +297,9 @@ HWTEST2_F(ExternalSemaphoreTest, givenImmediateCommandListWhenAppendWaitExternal cmdList.initialize(l0Device.get(), NEO::EngineGroupType::renderCompute, 0u); cmdList.setCmdListContext(context); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 1u); @@ -327,10 +327,10 @@ HWTEST2_F(ExternalSemaphoreTest, givenAppendWaitOnEventFailsWhenAppendWaitExtern cmdList.setCmdListContext(context); cmdList.failingWaitOnEvents = true; - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; ze_event_handle_t event; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 1, &event); EXPECT_NE(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 1u); @@ -357,9 +357,9 @@ HWTEST2_F(ExternalSemaphoreTest, givenAppendWaitOnInternalProxyEventFailsWhenApp cmdList.setCmdListContext(context); cmdList.failingWaitOnEvents = true; - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_NE(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 1u); @@ -387,11 +387,11 @@ HWTEST2_F(ExternalSemaphoreTest, givenAppendSignalEventFailsWhenAppendWaitExtern cmdList.setCmdListContext(context); cmdList.failingSignalEvent = true; - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; ze_event_handle_t waitEvent = {}; MockEvent signalEvent; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_event_handle_t hSignalEvent = signalEvent.toHandle(); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, hSignalEvent, 1, &waitEvent); EXPECT_NE(result, ZE_RESULT_SUCCESS); @@ -419,8 +419,8 @@ HWTEST2_F(ExternalSemaphoreTest, givenFailingMemoryManagerWhenAppendWaitExternal cmdList.initialize(l0Device.get(), NEO::EngineGroupType::renderCompute, 0u); cmdList.setCmdListContext(context); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_wait_params_ext_t waitParams = {}; + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_NE(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 0u); @@ -601,9 +601,9 @@ HWTEST2_F(ExternalSemaphoreTest, DISABLED_givenNEOExternalSemaphoreWhenAppendWai auto mockNEOExternalSemaphore = static_cast(externalSemaphore->neoExternalSemaphore.get()); EXPECT_EQ(mockNEOExternalSemaphore->getState(), NEO::ExternalSemaphore::SemaphoreState::Initial); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore = externalSemaphore->toHandle(); + ze_external_semaphore_ext_handle_t hSemaphore = externalSemaphore->toHandle(); ze_result_t result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(cmdList.appendWaitOnEventsCalledTimes, 1u); diff --git a/level_zero/core/test/unit_tests/sources/semaphore/windows/test_semaphore_windows.cpp b/level_zero/core/test/unit_tests/sources/semaphore/windows/test_semaphore_windows.cpp index a915f85c50..fad8f9904c 100644 --- a/level_zero/core/test/unit_tests/sources/semaphore/windows/test_semaphore_windows.cpp +++ b/level_zero/core/test/unit_tests/sources/semaphore/windows/test_semaphore_windows.cpp @@ -50,24 +50,24 @@ using MockDriverHandleImp = Mock; HWTEST_F(WddmExternalSemaphoreTest, DISABLED_givenValidExternalSemaphoreWhenImportExternalSemaphoreExpIsCalledThenSuccessIsReturned) { auto l0Device = std::make_unique(neoDevice, neoDevice->getExecutionEnvironment()); auto driverHandleImp = std::make_unique(); - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; l0Device->setDriverHandle(driverHandleImp.get()); - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } @@ -108,19 +108,19 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenEnqueueSignalFailsWhenExterna static_cast(l0Device->neoDevice->getExecutionEnvironment()->osEnvironment.get())->gdi.reset(mockGdi); - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); driverHandleImp->externalSemaphoreController = ExternalSemaphoreController::create(); @@ -141,7 +141,7 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenEnqueueSignalFailsWhenExterna EXPECT_EQ(neoExternalSemaphore->getState(), NEO::ExternalSemaphore::SemaphoreState::Initial); lock.unlock(); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } @@ -152,19 +152,19 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenSemaphoreSignalOperationEvent driverHandleImp->setMemoryManager(mockMemoryManager.get()); l0Device->setDriverHandle(driverHandleImp.get()); - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); driverHandleImp->externalSemaphoreController = ExternalSemaphoreController::create(); @@ -185,13 +185,13 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenSemaphoreSignalOperationEvent EXPECT_EQ(neoExternalSemaphore->getState(), NEO::ExternalSemaphore::SemaphoreState::Signaled); lock.unlock(); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenImmediateCommandListWhenAppendWaitExternalSemaphoresExpIsCalledThenSuccessIsReturned, MatchAny) { - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; auto mockMemoryManager = std::make_unique(); @@ -210,29 +210,29 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenImmediateCommandListWhenAppen commandList->setCmdListContext(context); auto &cmdList = static_cast &>(*commandList); - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenRegularCommandListWhenAppendWaitExternalSemaphoresExpIsCalledThenInvalidArgumentIsReturned, MatchAny) { - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; auto mockMemoryManager = std::make_unique(); @@ -244,23 +244,23 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenRegularCommandListWhenAppendW MockCommandListCoreFamily cmdList; cmdList.initialize(device, NEO::EngineGroupType::renderCompute, 0u); - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_EQ(result, ZE_RESULT_ERROR_INVALID_ARGUMENT); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } @@ -293,8 +293,8 @@ struct MockCommandListImmediateExtSem : public WhiteBox<::L0::CommandListCoreFam }; HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenInternalProxyEventFailsToAppendWhenAppendWaitExternalSemaphoresExpIsCalledThenErrorIsReturned, MatchAny) { - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; auto mockMemoryManager = std::make_unique(); @@ -313,29 +313,29 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenInternalProxyEventFailsToAppe cmdList.setCmdListContext(context); cmdList.failingWaitOnEvents = true; - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 0, nullptr); EXPECT_NE(result, ZE_RESULT_SUCCESS); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenWaitEventFailsToAppendWhenAppendWaitExternalSemaphoresExpIsCalledThenErrorIsReturned, MatchAny) { - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; auto mockMemoryManager = std::make_unique(); @@ -354,30 +354,30 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenWaitEventFailsToAppendWhenApp cmdList.setCmdListContext(context); cmdList.failingWaitOnEvents = true; - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; ze_event_handle_t waitEvent; result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, nullptr, 1, &waitEvent); EXPECT_NE(result, ZE_RESULT_SUCCESS); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenSignalEventFailsWhenAppendWaitExternalSemaphoresExpIsCalledThenErrorIsReturned, MatchAny) { - ze_intel_external_semaphore_exp_desc_t desc = {}; - ze_intel_external_semaphore_exp_handle_t hSemaphore; + ze_external_semaphore_ext_desc_t desc = {}; + ze_external_semaphore_ext_handle_t hSemaphore; HANDLE extSemaphoreHandle = 0; auto mockMemoryManager = std::make_unique(); @@ -396,25 +396,25 @@ HWTEST2_F(WddmExternalSemaphoreTest, DISABLED_givenSignalEventFailsWhenAppendWai cmdList.setCmdListContext(context); cmdList.failingSignalEvent = true; - ze_intel_external_semaphore_win32_exp_desc_t win32Desc = {}; + ze_external_semaphore_win32_ext_desc_t win32Desc = {}; - desc.flags = ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32; + desc.flags = ZE_EXTERNAL_SEMAPHORE_EXT_FLAG_OPAQUE_WIN32; - win32Desc.stype = ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) + win32Desc.stype = ZE_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXT_DESC; // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange) win32Desc.handle = reinterpret_cast(extSemaphoreHandle); desc.pNext = &win32Desc; - ze_result_t result = zeIntelDeviceImportExternalSemaphoreExp(l0Device->toHandle(), &desc, &hSemaphore); + ze_result_t result = zeDeviceImportExternalSemaphoreExt(l0Device->toHandle(), &desc, &hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); - ze_intel_external_semaphore_wait_params_exp_t waitParams = {}; + ze_external_semaphore_wait_params_ext_t waitParams = {}; MockEvent signalEvent; result = cmdList.appendWaitExternalSemaphores(1, &hSemaphore, &waitParams, signalEvent.toHandle(), 0, nullptr); EXPECT_NE(result, ZE_RESULT_SUCCESS); - result = zeIntelDeviceReleaseExternalSemaphoreExp(hSemaphore); + result = zeDeviceReleaseExternalSemaphoreExt(hSemaphore); EXPECT_EQ(result, ZE_RESULT_SUCCESS); } diff --git a/level_zero/doc/experimental_extensions/EXTERNAL_SEMAPHORE.md b/level_zero/doc/experimental_extensions/EXTERNAL_SEMAPHORE.md deleted file mode 100644 index ceb0839bee..0000000000 --- a/level_zero/doc/experimental_extensions/EXTERNAL_SEMAPHORE.md +++ /dev/null @@ -1,131 +0,0 @@ - - -# External Semaphore Extension - -* [Overview](#Overview) -* [Definitions](#Definitions) -* [Known Issues and Limitations](#Known-Issues-and-Limitations) - -# Overview - -Users need a solution that allows for a fully asynchronous rendering pipeline in interop applications, as the existing solutions only allow for synchronization in the host level in these scenarios. This extension provides an API that will take the external semaphores from other graphics APIs and use it to synchronize to support the interoperability. - -# Definitions - -```cpp -#define ZE_INTEL_EXTERNAL_SEMAPHORE_EXP_NAME "ZE_intel_experimental_external_semaphore" - -typedef enum _ze_intel_external_semaphore_exp_version_t { - ZE_EXTERNAL_SEMAPHORE_EXP_VERSION_1_0 = ZE_MAKE_VERSION(1, 0), ///< version 1.0 - ZE_EXTERNAL_SEMAPHORE_EXP_VERSION_CURRENT = ZE_MAKE_VERSION(1, 0), ///< latest known version - ZE_EXTERNAL_SEMAPHORE_EXP_VERSION_FORCE_UINT32 = 0x7fffffff -} ze_intel_external_semaphore_exp_version_t; - -typedef enum _ze_intel_external_semaphore_exp_flags_t { - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32_KMT, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D12_FENCE, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D11_FENCE, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_KEYED_MUTEX, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_KEYED_MUTEX_KMT, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_FD, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_WIN32 -} ze_intel_external_semaphore_exp_flags_t; - -typedef struct _ze_intel_external_semaphore_exp_desc_t { - ze_structure_type_t stype; - const void *pNext; - ze_intel_external_semaphore_exp_flags_t flags; -} ze_intel_external_semaphore_exp_desc_t; - -typedef struct _ze_intel_external_semaphore_win32_exp_desc_t { - ze_structure_type_t stype; - const void *pNext; - const char *name; -} ze_intel_external_semaphore_win32_exp_desc_t; - -typedef struct _ze_intel_external_semaphore_fd_exp_desc_t { - ze_structure_type_t stype; - const void *pNext; - int fd; -} ze_intel_external_semaphore_desc_fd_exp_desc_t; - -typedef struct _ze_intel_external_semaphore_signal_exp_params_t { - ze_structure_type_t stype; - const void *pNext; - uint64_t value; -} ze_intel_external_semaphore_signal_exp_params_t; - -typedef struct _ze_intel_external_semaphore_wait_exp_params_t { - ze_structure_type_t stype; - const void *pNext; - - uint64_t value; -} ze_intel_external_semaphore_wait_exp_params_t; -``` - -## Interfaces - -```cpp -/// @brief Import External Semaphore -/// -/// @returns -/// - ::ZE_RESULT_SUCCESS -ze_result_t ZE_APICALL -zeIntelDeviceImportExternalSemaphoreExp( - ze_device_handle_t device, ///< [in] handle of the device - const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc, ///< [in] pointer to external semaphore descriptor - ze_intel_external_semaphore_exp_handle_t *phSemaphore ///< [out] pointer to handle of the external semaphore -); - -/// @brief Wait on External Semaphores -/// -/// @returns -/// - ::ZE_RESULT_SUCCESS -ze_result_t ZE_APICALL -zeIntelCommandListAppendWaitExternalSemaphoresExp( - ze_command_list_handle_t hCmdList, ///< [in] handle of the command list - unsigned int numExternalSemaphores, ///< [in] number of external semaphores - const ze_intel_external_semaphore_exp_handle_t *phSemaphores, ///< [in] pointer to array of external semaphore handles - const ze_intel_external_semaphore_wait_params_exp_t *params, ///< [in] pointer to array of wait parameters - ze_event_handle_t hSignalEvent, ///< [in][optional] handle of the event to signal on completion - uint32_t numWaitEvents, ///< [in][optional] number of events to wait on before continuing - ze_event_handle_t *phWaitEvents ///< [in][optional][range(0, numWaitEvents)] handles of the events to wait on before continuing -); - -/// @brief Signal External Semaphores -/// -/// @returns -/// - ::ZE_RESULT_SUCCESS -ze_result_t ZE_APICALL -zeIntelCommandListAppendSignalExternalSemaphoresExp( - ze_command_list_handle_t hCmdList, ///< [in] handle of the command list - size_t numExternalSemaphores, ///< [in] number of external semaphores - const ze_intel_external_semaphore_exp_handle_t *phSemaphores, ///< [in] pointer to array of external semaphore handles - const ze_intel_external_semaphore_signal_params_exp_t *params, ///< [in] pointer to array of signal parameters - ze_event_handle_t hSignalEvent, ///< [in][optional] handle of the event to signal on completion - uint32_t numWaitEvents, ///< [in][optional] number of events to wait on before continuing - ze_event_handle_t *phWaitEvents ///< [in][optional][range(0, numWaitEvents)] handles of the events to wait on before continuing -); - -/// @brief Release External Semaphore -/// -/// @returns -/// - ::ZE_RESULT_SUCCESS -ze_result_t ZE_APICALL -zeIntelDeviceReleaseExternalSemaphoreExp( - ze_intel_external_semaphore_exp_handle_t *hSemaphore ///< [in] semaphore that is no longer used thus released by level-zero -); -``` - -## Programming example - -# Known Issues and Limitations - diff --git a/level_zero/include/level_zero/ze_intel_gpu.h b/level_zero/include/level_zero/ze_intel_gpu.h index ce65e250dc..4fd60d6427 100644 --- a/level_zero/include/level_zero/ze_intel_gpu.h +++ b/level_zero/include/level_zero/ze_intel_gpu.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2024 Intel Corporation + * Copyright (C) 2020-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -275,104 +275,6 @@ zeIntelKernelGetBinaryExp( char *pKernelBinary ///< [in,out] pointer to storage area for GEN ISA binary function ); -/////////////////////////////////////////////////////////////////////////////// -#ifndef ZE_INTEL_EXTERNAL_SEMAPHORE_EXP_NAME -/// @brief External semaphore extension name -#define ZE_INTEL_EXTERNAL_SEMAPHORE_EXP_NAME "ZE_intel_experimental_external_semaphore" -#endif // ZE_INTEL_EXTERNAL_SEMAPHORE_EXP_NAME - -typedef enum _ze_intel_external_semaphore_exp_version_t { - ZE_EXTERNAL_SEMAPHORE_EXP_VERSION_1_0 = ZE_MAKE_VERSION(1, 0), ///< version 1.0 - ZE_EXTERNAL_SEMAPHORE_EXP_VERSION_CURRENT = ZE_MAKE_VERSION(1, 0), ///< latest known version - ZE_EXTERNAL_SEMAPHORE_EXP_VERSION_FORCE_UINT32 = 0x7fffffff -} ze_intel_external_semaphore_exp_version_t; - -typedef enum _ze_intel_external_semaphore_exp_flags_t { - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_FD, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_OPAQUE_WIN32_KMT, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D12_FENCE, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_D3D11_FENCE, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_KEYED_MUTEX, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_KEYED_MUTEX_KMT, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_FD, - ZE_EXTERNAL_SEMAPHORE_EXP_FLAGS_TIMELINE_SEMAPHORE_WIN32 -} ze_intel_external_semaphore_exp_flags_t; - -typedef struct _ze_intel_external_semaphore_exp_desc_t { - ze_structure_type_t stype; ///< [in] type of this structure - const void *pNext; ///< [in] must be null or a pointer to an extension-specific - ///< structure (i.e. contains stype and pNext). When importing - ///< a semaphore, this can be a pointer to either ze_intel_external_semaphore_win32_exp_desc_t - ///< or ze_intel_external_semaphore_fd_exp_desc_t. - ze_intel_external_semaphore_exp_flags_t flags; ///< [in] External semaphore flags. Must be 0 or a valid combination of ::ze_intel_external_semaphore_exp_flags_t -} ze_intel_external_semaphore_exp_desc_t; - -typedef struct _ze_intel_external_semaphore_win32_exp_desc_t { - ze_structure_type_t stype; ///< [in] type of this structure - const void *pNext; ///< [in] must be null or a pointer to an extension-specific - ///< structure (i.e. contains stype and pNext). - void *handle; ///< [in] Win32 HANDLE for semaphore - const char *name; ///< [in] Name of the semaphore. Must be valid NULL terminated string. -} ze_intel_external_semaphore_win32_exp_desc_t; - -typedef struct _ze_intel_external_semaphore_fd_exp_desc_t { - ze_structure_type_t stype; ///< [in] type of this structure - const void *pNext; ///< [in] must be null or a pointer to an extension-specific - ///< structure (i.e. contains stype and pNext). - int fd; ///< [in] File descriptor for semaphore. Must be valid file descriptor. -} ze_intel_external_semaphore_desc_fd_exp_desc_t; - -typedef struct _ze_intel_external_semaphore_signal_params_exp_t { - ze_structure_type_t stype; ///< [in] type of this structure - const void *pNext; ///< [in] must be null or a pointer to an extension-specific - ///< structure (i.e. contains stype and pNext). - uint64_t value; /// [in] [optional] Value to signal the semaphore with -} ze_intel_external_semaphore_signal_params_exp_t; - -typedef struct _ze_intel_external_semaphore_wait_params_exp_t { - ze_structure_type_t stype; ///< [in] type of this structure - const void *pNext; ///< [in] must be null or a pointer to an extension-specific - ///< structure (i.e. contains stype and pNext). - uint64_t value; /// [in] [optional] Value to wait on the semaphore for -} ze_intel_external_semaphore_wait_params_exp_t; - -typedef struct _ze_intel_external_semaphore_exp_handle_t *ze_intel_external_semaphore_exp_handle_t; - -ZE_APIEXPORT ze_result_t ZE_APICALL -zeIntelDeviceImportExternalSemaphoreExp( - ze_device_handle_t device, ///< [in] handle of the device - const ze_intel_external_semaphore_exp_desc_t *semaphoreDesc, ///< [in] pointer to external semaphore descriptor - ze_intel_external_semaphore_exp_handle_t *phSemaphore ///< [out] pointer to handle of the external semaphore -); - -ZE_APIEXPORT ze_result_t ZE_APICALL -zeIntelCommandListAppendWaitExternalSemaphoresExp( - ze_command_list_handle_t hCmdList, ///< [in] handle of the command list - unsigned int numExternalSemaphores, ///< [in] number of external semaphores - const ze_intel_external_semaphore_exp_handle_t *phSemaphores, ///< [in] pointer to array of external semaphore handles - const ze_intel_external_semaphore_wait_params_exp_t *params, ///< [in] pointer to array of wait parameters - ze_event_handle_t hSignalEvent, ///< [in][optional] handle of the event to signal on completion - uint32_t numWaitEvents, ///< [in][optional] number of events to wait on before continuing - ze_event_handle_t *phWaitEvents ///< [in][optional][range(0, numWaitEvents)] handles of the events to wait on before continuing -); - -ZE_APIEXPORT ze_result_t ZE_APICALL -zeIntelCommandListAppendSignalExternalSemaphoresExp( - ze_command_list_handle_t hCmdList, ///< [in] handle of the command list - size_t numExternalSemaphores, ///< [in] number of external semaphores - const ze_intel_external_semaphore_exp_handle_t *phSemaphores, ///< [in] pointer to array of external semaphore handles - const ze_intel_external_semaphore_signal_params_exp_t *params, ///< [in] pointer to array of signal parameters - ze_event_handle_t hSignalEvent, ///< [in][optional] handle of the event to signal on completion - uint32_t numWaitEvents, ///< [in][optional] number of events to wait on before continuing - ze_event_handle_t *phWaitEvents ///< [in][optional][range(0, numWaitEvents)] handles of the events to wait on before continuing -); - -ZE_APIEXPORT ze_result_t ZE_APICALL -zeIntelDeviceReleaseExternalSemaphoreExp( - ze_intel_external_semaphore_exp_handle_t hSemaphore ///< [in] handle of the external semaphore -); - #if defined(__cplusplus) } // extern "C" #endif diff --git a/level_zero/include/level_zero/ze_stypes.h b/level_zero/include/level_zero/ze_stypes.h index daa863e1f5..d15be2d9fe 100644 --- a/level_zero/include/level_zero/ze_stypes.h +++ b/level_zero/include/level_zero/ze_stypes.h @@ -29,11 +29,6 @@ #define ZE_STRUCTURE_INTEL_DEVICE_MEMORY_CXL_EXP_PROPERTIES (ze_structure_type_t)0x00030019 #define ZEX_STRUCTURE_COUNTER_BASED_EVENT_DESC (ze_structure_type_t)0x0003001C #define ZEX_STRUCTURE_COUNTER_BASED_EVENT_EXTERNAL_SYNC_ALLOC_PROPERTIES (ze_structure_type_t)0x0003001D -#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_EXP_DESC (ze_structure_type_t)0x0003001E -#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WIN32_EXP_DESC (ze_structure_type_t)0x0003001F -#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_FD_EXP_DESC (ze_structure_type_t)0x00030023 -#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_EXP (ze_structure_type_t)0x00030024 -#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WAIT_PARAMS_EXP (ze_structure_type_t)0x00030025 #define ZEX_STRUCTURE_COUNTER_BASED_EVENT_EXTERNAL_STORAGE_ALLOC_PROPERTIES (ze_structure_type_t)0x00030027 // Metric structure types