From 34e2e4fd6e1dc5376c06d6ff6b3d2822ee5f5147 Mon Sep 17 00:00:00 2001 From: Bartosz Dunajski Date: Wed, 13 Nov 2024 10:10:58 +0000 Subject: [PATCH] feature: expose new CB Event APIs Related-To: NEO-11925 Signed-off-by: Bartosz Dunajski --- .../api/driver_experimental/public/zex_common.h | 6 +++--- .../source/driver/driver_handle_imp_helper.cpp | 2 ++ .../driver/extension_function_address.cpp | 5 +++++ .../sources/cmdlist/test_in_order_cmdlist_1.cpp | 4 ++++ .../unit_tests/sources/driver/test_driver.cpp | 17 +++++++++++++++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/level_zero/api/driver_experimental/public/zex_common.h b/level_zero/api/driver_experimental/public/zex_common.h index 05972d0282..182770f43b 100644 --- a/level_zero/api/driver_experimental/public/zex_common.h +++ b/level_zero/api/driver_experimental/public/zex_common.h @@ -146,10 +146,10 @@ typedef struct _ze_intel_device_media_exp_properties_t { uint32_t numDecoderCores; ///< [out] number of decoder cores } ze_intel_device_media_exp_properties_t; -#ifndef ZEX_COUNTER_BASED_EVENT_NAME +#ifndef ZEX_COUNTER_BASED_EVENT_EXT_NAME /// @brief Counter Based Event Extension Name -#define ZEX_COUNTER_BASED_EVENT_NAME "ZEX_counter_based_event" -#endif // ZEX_COUNTER_BASED_EVENT_NAME +#define ZEX_COUNTER_BASED_EVENT_EXT_NAME "ZEX_counter_based_event" +#endif // ZEX_COUNTER_BASED_EVENT_EXT_NAME /////////////////////////////////////////////////////////////////////////////// /// @brief Counter Based Event Extension Version(s) 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 97902f6105..2b02566580 100644 --- a/level_zero/core/source/driver/driver_handle_imp_helper.cpp +++ b/level_zero/core/source/driver/driver_handle_imp_helper.cpp @@ -5,6 +5,7 @@ * */ +#include "level_zero/api/driver_experimental/public/zex_common.h" #include "level_zero/core/source/driver/driver_handle_imp.h" #include "level_zero/include/ze_intel_gpu.h" @@ -35,6 +36,7 @@ const std::vector> DriverHandleImp::extensionsS // Driver experimental extensions {ZE_INTEL_DEVICE_MODULE_DP_PROPERTIES_EXP_NAME, ZE_INTEL_DEVICE_MODULE_DP_PROPERTIES_EXP_VERSION_CURRENT}, {ZE_EVENT_POOL_COUNTER_BASED_EXP_NAME, ZE_EVENT_POOL_COUNTER_BASED_EXP_VERSION_CURRENT}, + {ZEX_COUNTER_BASED_EVENT_EXT_NAME, ZEX_COUNTER_BASED_EVENT_VERSION_1_0}, {ZE_INTEL_COMMAND_LIST_MEMORY_SYNC, ZE_INTEL_COMMAND_LIST_MEMORY_SYNC_EXP_VERSION_CURRENT}, {ZEX_INTEL_EVENT_SYNC_MODE_EXP_NAME, ZEX_INTEL_EVENT_SYNC_MODE_EXP_VERSION_CURRENT}, {ZE_INTEL_GET_DRIVER_VERSION_STRING_EXP_NAME, ZE_INTEL_GET_DRIVER_VERSION_STRING_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 1207da5249..4e5d13a5d7 100644 --- a/level_zero/core/source/driver/extension_function_address.cpp +++ b/level_zero/core/source/driver/extension_function_address.cpp @@ -42,6 +42,11 @@ void *ExtensionFunctionAddressHelper::getExtensionFunctionAddress(const std::str RETURN_FUNC_PTR_IF_EXIST(zexCounterBasedEventCreate); RETURN_FUNC_PTR_IF_EXIST(zexEventGetDeviceAddress); + RETURN_FUNC_PTR_IF_EXIST(zexCounterBasedEventCreate2); + RETURN_FUNC_PTR_IF_EXIST(zexCounterBasedEventGetIpcHandle); + RETURN_FUNC_PTR_IF_EXIST(zexCounterBasedEventOpenIpcHandle); + RETURN_FUNC_PTR_IF_EXIST(zexCounterBasedEventCloseIpcHandle); + RETURN_FUNC_PTR_IF_EXIST(zeMemGetPitchFor2dImage); RETURN_FUNC_PTR_IF_EXIST(zeImageGetDeviceOffsetExp); RETURN_FUNC_PTR_IF_EXIST(zetIntelDeviceGetConcurrentMetricGroupsExp); diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp index 8bb3b766f5..3bfcc47b33 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp @@ -50,6 +50,10 @@ HWTEST2_F(InOrderCmdListTests, givenDriverHandleWhenAskingForExtensionsThenRetur EXPECT_NE(it, extensionProperties.end()); EXPECT_EQ((*it).version, ZE_EVENT_POOL_COUNTER_BASED_EXP_VERSION_CURRENT); + it = std::find_if(extensionProperties.begin(), extensionProperties.end(), [](const auto &extension) { return (strcmp(extension.name, ZEX_COUNTER_BASED_EVENT_EXT_NAME) == 0); }); + EXPECT_NE(it, extensionProperties.end()); + EXPECT_EQ((*it).version, ZEX_COUNTER_BASED_EVENT_VERSION_1_0); + it = std::find_if(extensionProperties.begin(), extensionProperties.end(), [](const auto &extension) { return (strcmp(extension.name, ZE_INTEL_COMMAND_LIST_MEMORY_SYNC) == 0); }); EXPECT_NE(it, extensionProperties.end()); EXPECT_EQ((*it).version, ZE_INTEL_COMMAND_LIST_MEMORY_SYNC_EXP_VERSION_CURRENT); diff --git a/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp b/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp index 52a46ef5d0..c4ec1bfa25 100644 --- a/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp +++ b/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp @@ -1328,6 +1328,11 @@ TEST_F(DriverExperimentalApiTest, whenRetrievingApiFunctionThenExpectProperPoint decltype(&zexIntelAllocateNetworkInterrupt) expectedIntelAllocateNetworkInterrupt = L0::zexIntelAllocateNetworkInterrupt; decltype(&zexIntelReleaseNetworkInterrupt) expectedIntelReleaseNetworkInterrupt = L0::zexIntelReleaseNetworkInterrupt; + decltype(&zexCounterBasedEventCreate2) expectedCounterBasedEventCreate2 = L0::zexCounterBasedEventCreate2; + decltype(&zexCounterBasedEventGetIpcHandle) expectedCounterBasedEventGetIpcHandle = L0::zexCounterBasedEventGetIpcHandle; + decltype(&zexCounterBasedEventOpenIpcHandle) expectedCounterBasedEventOpenIpcHandle = L0::zexCounterBasedEventOpenIpcHandle; + decltype(&zexCounterBasedEventCloseIpcHandle) expectedCounterBasedEventCloseIpcHandle = L0::zexCounterBasedEventCloseIpcHandle; + void *funPtr = nullptr; EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGetExtensionFunctionAddress(driverHandle, "zexDriverImportExternalPointer", &funPtr)); @@ -1356,6 +1361,18 @@ TEST_F(DriverExperimentalApiTest, whenRetrievingApiFunctionThenExpectProperPoint EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGetExtensionFunctionAddress(driverHandle, "zexIntelReleaseNetworkInterrupt", &funPtr)); EXPECT_EQ(expectedIntelReleaseNetworkInterrupt, reinterpret_cast(funPtr)); + + EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGetExtensionFunctionAddress(driverHandle, "zexCounterBasedEventCreate2", &funPtr)); + EXPECT_EQ(expectedCounterBasedEventCreate2, reinterpret_cast(funPtr)); + + EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGetExtensionFunctionAddress(driverHandle, "zexCounterBasedEventGetIpcHandle", &funPtr)); + EXPECT_EQ(expectedCounterBasedEventGetIpcHandle, reinterpret_cast(funPtr)); + + EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGetExtensionFunctionAddress(driverHandle, "zexCounterBasedEventOpenIpcHandle", &funPtr)); + EXPECT_EQ(expectedCounterBasedEventOpenIpcHandle, reinterpret_cast(funPtr)); + + EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGetExtensionFunctionAddress(driverHandle, "zexCounterBasedEventCloseIpcHandle", &funPtr)); + EXPECT_EQ(expectedCounterBasedEventCloseIpcHandle, reinterpret_cast(funPtr)); } TEST_F(DriverExperimentalApiTest, givenHostPointerApiExistWhenImportingPtrThenExpectProperBehavior) {