From c454e0d33e0a4c731ba2e2d4eb220c7b1210739e Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Tue, 14 Nov 2023 15:07:54 +0000 Subject: [PATCH] fix: handle not exisiting wsl compute helper library https://github.com/intel/compute-runtime/issues/688 Signed-off-by: Mateusz Jablonski --- .../windows/wddm/create_um_km_data_translator.cpp | 8 +++++--- .../windows/um_km_data_translator_tests.cpp | 13 +++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/shared/source/os_interface/windows/wddm/create_um_km_data_translator.cpp b/shared/source/os_interface/windows/wddm/create_um_km_data_translator.cpp index df5cfdb6da..eaa2a031b4 100644 --- a/shared/source/os_interface/windows/wddm/create_um_km_data_translator.cpp +++ b/shared/source/os_interface/windows/wddm/create_um_km_data_translator.cpp @@ -282,10 +282,12 @@ std::unique_ptr createUmKmDataTranslator(const Gdi &gdi, D3D path.append(Os::fileSeparator); path.append(wslComputeHelperLibNameToLoad); } - return std::make_unique(std::unique_ptr(OsLibrary::load(path))); - } else { - return std::make_unique(); + std::unique_ptr lib{OsLibrary::load(path)}; + if ((nullptr != lib) && (lib->isLoaded())) { + return std::make_unique(std::move(lib)); + } } + return std::make_unique(); } } // namespace NEO diff --git a/shared/test/unit_test/os_interface/windows/um_km_data_translator_tests.cpp b/shared/test/unit_test/os_interface/windows/um_km_data_translator_tests.cpp index a4dc03e980..67332b0464 100644 --- a/shared/test/unit_test/os_interface/windows/um_km_data_translator_tests.cpp +++ b/shared/test/unit_test/os_interface/windows/um_km_data_translator_tests.cpp @@ -216,6 +216,19 @@ TEST(UmKmDataTranslator, givenToggledDebugKeyWhenCreatingDefaultTranslatorThenTr EXPECT_TRUE(translator->enabled()); } +TEST(UmKmDataTranslator, givenToggledDebugKeyAndNotExistingLibWhenCreatingDefaultTranslatorThenTranslationIsDisabled) { + DebugManagerStateRestore debugSettingsRestore; + + NEO::DebugManager.flags.UseUmKmDataTranslator.set(true); + NEO::wslComputeHelperLibNameToLoad = "dummyLib"; + NEO::Gdi gdi; + auto handle = validHandle; + gdi.queryAdapterInfo.mFunc = QueryAdapterInfoMock::queryadapterinfo; + + auto translator = NEO::createUmKmDataTranslator(gdi, handle); + EXPECT_FALSE(translator->enabled()); +} + TEST(WslUmKmDataTranslator, whenQueryingForTranslationThenQueryIsForwardedToWslComputeHelper) { DebugManagerStateRestore debugSettingsRestore;