|
11 | 11 | #include "loader/ze_loader.h" |
12 | 12 | #include "ze_api.h" |
13 | 13 | #include "zes_api.h" |
| 14 | +#include "zer_api.h" |
14 | 15 |
|
15 | 16 | #include <fstream> |
16 | 17 |
|
@@ -2287,4 +2288,123 @@ TEST_F(DriverOrderingTest, |
2287 | 2288 | } |
2288 | 2289 | } |
2289 | 2290 |
|
| 2291 | + TEST( |
| 2292 | + RuntimeApiLoaderDriverInteraction, |
| 2293 | + GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully) |
| 2294 | + { |
| 2295 | + uint32_t pInitDriversCount = 0; |
| 2296 | + ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC}; |
| 2297 | + desc.flags = UINT32_MAX; |
| 2298 | + desc.pNext = nullptr; |
| 2299 | + putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1")); |
| 2300 | + putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=0")); |
| 2301 | + std::vector<ze_driver_handle_t> drivers; |
| 2302 | + EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, nullptr, &desc)); |
| 2303 | + drivers.resize(pInitDriversCount); |
| 2304 | + EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, drivers.data(), &desc)); |
| 2305 | + EXPECT_GT(pInitDriversCount, 0); |
| 2306 | + |
| 2307 | + const char *errorString = nullptr; |
| 2308 | + uint32_t deviceId = 0; |
| 2309 | + |
| 2310 | + ze_result_t result = zerGetLastErrorDescription(&errorString); |
| 2311 | + EXPECT_EQ(ZE_RESULT_SUCCESS, result); |
| 2312 | + EXPECT_TRUE(compare_env("zerGetLastErrorDescription", "1")); |
| 2313 | + |
| 2314 | + deviceId = zerTranslateDeviceHandleToIdentifier(nullptr); |
| 2315 | + EXPECT_TRUE(compare_env("zerTranslateDeviceHandleToIdentifier", "1")); |
| 2316 | + |
| 2317 | + ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId); |
| 2318 | + EXPECT_TRUE(compare_env("zerTranslateIdentifierToDeviceHandle", "1")); |
| 2319 | + (void)translatedDevice; |
| 2320 | + |
| 2321 | + ze_context_handle_t defaultContext = zerGetDefaultContext(); |
| 2322 | + EXPECT_TRUE(compare_env("zerGetDefaultContext", "1")); |
| 2323 | + (void)defaultContext; |
| 2324 | + } |
| 2325 | + |
| 2326 | + TEST( |
| 2327 | + RuntimeApiLoaderDriverInteraction, |
| 2328 | + GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully) |
| 2329 | + { |
| 2330 | + uint32_t pInitDriversCount = 0; |
| 2331 | + ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC}; |
| 2332 | + desc.flags = UINT32_MAX; |
| 2333 | + desc.pNext = nullptr; |
| 2334 | + putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1")); |
| 2335 | + putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=1")); |
| 2336 | + std::vector<ze_driver_handle_t> drivers; |
| 2337 | + EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, nullptr, &desc)); |
| 2338 | + drivers.resize(pInitDriversCount); |
| 2339 | + EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, drivers.data(), &desc)); |
| 2340 | + EXPECT_GT(pInitDriversCount, 0); |
| 2341 | + |
| 2342 | + const char *errorString = nullptr; |
| 2343 | + uint32_t deviceId = 0; |
| 2344 | + |
| 2345 | + ze_result_t result = zerGetLastErrorDescription(&errorString); |
| 2346 | + EXPECT_EQ(ZE_RESULT_SUCCESS, result); |
| 2347 | + EXPECT_TRUE(compare_env("zerGetLastErrorDescription", "1")); |
| 2348 | + |
| 2349 | + deviceId = zerTranslateDeviceHandleToIdentifier(nullptr); |
| 2350 | + EXPECT_TRUE(compare_env("zerTranslateDeviceHandleToIdentifier", "1")); |
| 2351 | + |
| 2352 | + ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId); |
| 2353 | + EXPECT_TRUE(compare_env("zerTranslateIdentifierToDeviceHandle", "1")); |
| 2354 | + (void)translatedDevice; |
| 2355 | + |
| 2356 | + ze_context_handle_t defaultContext = zerGetDefaultContext(); |
| 2357 | + EXPECT_TRUE(compare_env("zerGetDefaultContext", "1")); |
| 2358 | + (void)defaultContext; |
| 2359 | + } |
| 2360 | + |
| 2361 | + |
| 2362 | + TEST( |
| 2363 | + RuntimeApiLoaderDriverInteraction, |
| 2364 | + GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisThenExpectErrorUninitialized) |
| 2365 | + { |
| 2366 | + uint32_t pInitDriversCount = 0; |
| 2367 | + ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC}; |
| 2368 | + desc.flags = UINT32_MAX; |
| 2369 | + desc.pNext = nullptr; |
| 2370 | + putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1")); |
| 2371 | + putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=0")); |
| 2372 | + putenv_safe(const_cast<char *>("ZEL_TEST_DDI_HANDLES_EXT_VERSION=1_0")); |
| 2373 | + std::vector<ze_driver_handle_t> drivers; |
| 2374 | + EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, nullptr, &desc)); |
| 2375 | + drivers.resize(pInitDriversCount); |
| 2376 | + EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, drivers.data(), &desc)); |
| 2377 | + EXPECT_GT(pInitDriversCount, 0); |
| 2378 | + |
| 2379 | + uint32_t deviceId = 0; |
| 2380 | + |
| 2381 | + const char *errorDesc = nullptr; |
| 2382 | + ze_result_t errorDescResult{}; |
| 2383 | + |
| 2384 | + deviceId = zerTranslateDeviceHandleToIdentifier(nullptr); |
| 2385 | + EXPECT_EQ(UINT32_MAX, deviceId); |
| 2386 | + |
| 2387 | + errorDescResult = zerGetLastErrorDescription(&errorDesc); |
| 2388 | + EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult); |
| 2389 | + EXPECT_NE(errorDesc, nullptr); |
| 2390 | + EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED")); |
| 2391 | + |
| 2392 | + ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId); |
| 2393 | + EXPECT_EQ(nullptr, translatedDevice); |
| 2394 | + |
| 2395 | + errorDescResult = zerGetLastErrorDescription(&errorDesc); |
| 2396 | + EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult); |
| 2397 | + EXPECT_NE(errorDesc, nullptr); |
| 2398 | + EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED")); |
| 2399 | + |
| 2400 | + ze_context_handle_t defaultContext = zerGetDefaultContext(); |
| 2401 | + EXPECT_EQ(nullptr, defaultContext); |
| 2402 | + |
| 2403 | + errorDescResult = zerGetLastErrorDescription(&errorDesc); |
| 2404 | + EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult); |
| 2405 | + EXPECT_NE(errorDesc, nullptr); |
| 2406 | + EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED")); |
| 2407 | + } |
| 2408 | + |
| 2409 | + |
2290 | 2410 | } // namespace |
0 commit comments