Windows: load gmm lib via LoadLibrary

Resolves: NEO-4144

Change-Id: Iae9d170a43872a93d36e84e93709a23951b4ac35
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2020-01-14 16:25:30 +01:00
committed by sys_ocldev
parent 236ac104bb
commit 78187655eb
5 changed files with 50 additions and 3 deletions

View File

@ -16,6 +16,7 @@ set(NEO_CORE_OS_INTERFACE_WINDOWS
${CMAKE_CURRENT_SOURCE_DIR}/debug_registry_reader.h
${CMAKE_CURRENT_SOURCE_DIR}/gdi_interface.cpp
${CMAKE_CURRENT_SOURCE_DIR}/gdi_interface.h
${CMAKE_CURRENT_SOURCE_DIR}/gmm_interface.cpp
${CMAKE_CURRENT_SOURCE_DIR}/kmdaf_listener${KMDAF_FILE_SUFFIX}.cpp
${CMAKE_CURRENT_SOURCE_DIR}/kmdaf_listener.h
${CMAKE_CURRENT_SOURCE_DIR}/os_inc.h

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "core/gmm_helper/gmm_lib.h"
#include "core/helpers/debug_helpers.h"
#include "core/os_interface/os_library.h"
#include <memory>
using namespace NEO;
static std::unique_ptr<OsLibrary> gmmLib;
GMM_STATUS GMM_STDCALL InitializeGmm(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs) {
if (!gmmLib) {
gmmLib.reset(OsLibrary::load(GMM_UMD_DLL));
UNRECOVERABLE_IF(!gmmLib);
}
auto initGmmFunc = reinterpret_cast<decltype(&InitializeGmm)>(gmmLib->getProcAddress(GMM_ADAPTER_INIT_NAME));
UNRECOVERABLE_IF(!initGmmFunc);
return initGmmFunc(pInArgs, pOutArgs);
}
void GMM_STDCALL GmmAdapterDestroy(GMM_INIT_OUT_ARGS *pInArgs) {
auto destroyGmmFunc = reinterpret_cast<decltype(&GmmAdapterDestroy)>(gmmLib->getProcAddress(GMM_ADAPTER_DESTROY_NAME));
UNRECOVERABLE_IF(!destroyGmmFunc);
destroyGmmFunc(pInArgs);
}

View File

@ -153,7 +153,7 @@ if(${GENERATE_EXECUTABLE})
add_subdirectory(dll)
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${NEO_STATIC_LIB_NAME} ${IGDRCL_EXTRA_LIBS} ${GMM_LINK_NAME})
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${NEO_STATIC_LIB_NAME} ${IGDRCL_EXTRA_LIBS})
target_include_directories(${NEO_DYNAMIC_LIB_NAME} BEFORE PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
@ -162,7 +162,12 @@ if(${GENERATE_EXECUTABLE})
if(WIN32)
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} dxgi)
add_dependencies(${NEO_DYNAMIC_LIB_NAME} ${GMM_TARGET_NAME})
target_sources(${NEO_DYNAMIC_LIB_NAME} PRIVATE
${NEO_SOURCE_DIR}/core/os_interface/windows/gmm_interface.cpp
)
else()
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${GMM_LINK_NAME})
target_include_directories(${NEO_DYNAMIC_LIB_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/dll/linux/devices${BRANCH_DIR_SUFFIX}
)

View File

@ -65,8 +65,15 @@ add_subdirectories()
target_link_libraries(igdrcl_aub_tests igdrcl_mocks)
target_link_libraries(igdrcl_aub_tests ${NEO_MOCKABLE_LIB_NAME})
target_link_libraries(igdrcl_aub_tests igdrcl_mocks)
target_link_libraries(igdrcl_aub_tests gmock-gtest ${IGDRCL_EXTRA_LIBS} ${GMM_LINK_NAME})
target_link_libraries(igdrcl_aub_tests gmock-gtest ${IGDRCL_EXTRA_LIBS})
if(UNIX)
target_link_libraries(igdrcl_aub_tests ${GMM_LINK_NAME})
else()
add_dependencies(igdrcl_aub_tests ${GMM_TARGET_NAME})
target_sources(igdrcl_aub_tests PRIVATE
${NEO_SOURCE_DIR}/core/os_interface/windows/gmm_interface.cpp
)
endif()
target_include_directories(igdrcl_aub_tests BEFORE PRIVATE ${NEO_SOURCE_DIR}/core/unit_tests/test_macros${BRANCH_DIR_SUFFIX})
macro(macro_for_each_test_config)

View File

@ -456,6 +456,8 @@ int main(int argc, char **argv) {
#endif
if (useMockGmm) {
GmmHelper::createGmmContextWrapperFunc = GmmClientContextBase::create<MockGmmClientContext>;
} else {
InitializeGmm(nullptr, nullptr);
}
initializeTestHelpers();