diff --git a/core/gmm_helper/CMakeLists.txt b/core/gmm_helper/CMakeLists.txt index c1d5f70535..e84b5725cf 100644 --- a/core/gmm_helper/CMakeLists.txt +++ b/core/gmm_helper/CMakeLists.txt @@ -14,6 +14,7 @@ set(NEO_CORE_GMM_HELPER ${CMAKE_CURRENT_SOURCE_DIR}/gmm.h ${CMAKE_CURRENT_SOURCE_DIR}/gmm_helper.cpp ${CMAKE_CURRENT_SOURCE_DIR}/gmm_helper.h + ${CMAKE_CURRENT_SOURCE_DIR}/gmm_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/gmm_lib.h ${CMAKE_CURRENT_SOURCE_DIR}/page_table_mngr.h ${CMAKE_CURRENT_SOURCE_DIR}/page_table_mngr_impl.cpp diff --git a/core/gmm_helper/client_context/gmm_client_context_base.cpp b/core/gmm_helper/client_context/gmm_client_context_base.cpp index 958f110216..f8e080fe95 100644 --- a/core/gmm_helper/client_context/gmm_client_context_base.cpp +++ b/core/gmm_helper/client_context/gmm_client_context_base.cpp @@ -8,6 +8,7 @@ #include "core/gmm_helper/client_context/gmm_client_context_base.h" #include "core/gmm_helper/gmm_helper.h" +#include "core/gmm_helper/gmm_interface.h" #include "core/helpers/debug_helpers.h" #include "core/helpers/hw_info.h" #include "core/sku_info/operations/sku_info_transfer.h" @@ -33,7 +34,7 @@ GmmClientContextBase::GmmClientContextBase(OSInterface *osInterface, HardwareInf osInterface->setGmmInputArgs(&inArgs); } - auto ret = InitializeGmm(&inArgs, &outArgs); + auto ret = GmmInterface::initialize(&inArgs, &outArgs); UNRECOVERABLE_IF(ret != GMM_SUCCESS); @@ -43,7 +44,7 @@ GmmClientContextBase::~GmmClientContextBase() { GMM_INIT_OUT_ARGS outArgs; outArgs.pGmmClientContext = clientContext; - GmmAdapterDestroy(&outArgs); + GmmInterface::destroy(&outArgs); }; MEMORY_OBJECT_CONTROL_STATE GmmClientContextBase::cachePolicyGetMemoryObject(GMM_RESOURCE_INFO *pResInfo, GMM_RESOURCE_USAGE_TYPE usage) { diff --git a/core/gmm_helper/gmm_interface.h b/core/gmm_helper/gmm_interface.h new file mode 100644 index 0000000000..8ed2597b12 --- /dev/null +++ b/core/gmm_helper/gmm_interface.h @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2020 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#pragma once +#include "core/gmm_helper/gmm_lib.h" + +namespace NEO { + +namespace GmmInterface { + +GMM_STATUS initialize(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs); + +void destroy(GMM_INIT_OUT_ARGS *pInArgs); +} // namespace GmmInterface +} // namespace NEO diff --git a/core/os_interface/linux/gmm_interface_linux.cpp b/core/os_interface/linux/gmm_interface_linux.cpp new file mode 100644 index 0000000000..f9d664171c --- /dev/null +++ b/core/os_interface/linux/gmm_interface_linux.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2020 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "core/gmm_helper/gmm_interface.h" +namespace NEO { +namespace GmmInterface { +GMM_STATUS initialize(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs) { + return InitializeGmm(pInArgs, pOutArgs); +} + +void destroy(GMM_INIT_OUT_ARGS *pInArgs) { + GmmAdapterDestroy(pInArgs); +} +} // namespace GmmInterface +} // namespace NEO diff --git a/core/os_interface/windows/CMakeLists.txt b/core/os_interface/windows/CMakeLists.txt index 8ef639c3dd..a93fed47a4 100644 --- a/core/os_interface/windows/CMakeLists.txt +++ b/core/os_interface/windows/CMakeLists.txt @@ -16,7 +16,6 @@ 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 diff --git a/core/os_interface/windows/gmm_interface.cpp b/core/os_interface/windows/gmm_interface_win.cpp similarity index 74% rename from core/os_interface/windows/gmm_interface.cpp rename to core/os_interface/windows/gmm_interface_win.cpp index 7509a8e892..4f7ca82118 100644 --- a/core/os_interface/windows/gmm_interface.cpp +++ b/core/os_interface/windows/gmm_interface_win.cpp @@ -5,17 +5,19 @@ * */ -#include "core/gmm_helper/gmm_lib.h" +#include "core/gmm_helper/gmm_interface.h" #include "core/helpers/debug_helpers.h" #include "core/os_interface/os_library.h" #include -using namespace NEO; +namespace NEO { static std::unique_ptr gmmLib; -GMM_STATUS GMM_STDCALL InitializeGmm(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs) { +namespace GmmInterface { + +GMM_STATUS initialize(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs) { if (!gmmLib) { gmmLib.reset(OsLibrary::load(GMM_UMD_DLL)); UNRECOVERABLE_IF(!gmmLib); @@ -25,8 +27,10 @@ GMM_STATUS GMM_STDCALL InitializeGmm(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARG return initGmmFunc(pInArgs, pOutArgs); } -void GMM_STDCALL GmmAdapterDestroy(GMM_INIT_OUT_ARGS *pInArgs) { +void destroy(GMM_INIT_OUT_ARGS *pInArgs) { auto destroyGmmFunc = reinterpret_cast(gmmLib->getProcAddress(GMM_ADAPTER_DESTROY_NAME)); UNRECOVERABLE_IF(!destroyGmmFunc); destroyGmmFunc(pInArgs); } +} // namespace GmmInterface +} // namespace NEO diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 01433bd100..202c97fc86 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -159,8 +159,8 @@ 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 + target_sources(${NEO_DYNAMIC_LIB_NAME} PRIVATE + ${NEO_SOURCE_DIR}/core/os_interface/windows/gmm_interface_win.cpp ) else() target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${GMM_LINK_NAME}) @@ -174,6 +174,9 @@ if(${GENERATE_EXECUTABLE}) APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bsymbolic" ) set_property(TARGET ${NEO_DYNAMIC_LIB_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${ASAN_FLAGS}) + target_sources(${NEO_DYNAMIC_LIB_NAME} PRIVATE + ${NEO_SOURCE_DIR}/core/os_interface/linux/gmm_interface_linux.cpp + ) endif() set_target_properties(${NEO_DYNAMIC_LIB_NAME} PROPERTIES diff --git a/unit_tests/aub_tests/CMakeLists.txt b/unit_tests/aub_tests/CMakeLists.txt index 85971944f0..bd122886e3 100644 --- a/unit_tests/aub_tests/CMakeLists.txt +++ b/unit_tests/aub_tests/CMakeLists.txt @@ -54,9 +54,14 @@ target_sources(igdrcl_aub_tests PRIVATE if(WIN32) target_sources(igdrcl_aub_tests PRIVATE + ${NEO_SOURCE_DIR}/core/os_interface/windows/gmm_interface_win.cpp ${NEO_SOURCE_DIR}/runtime/gmm_helper/gmm_memory.cpp ${NEO_SOURCE_DIR}/unit_tests/os_interface/windows/wddm_create.cpp ) +else() + target_sources(igdrcl_aub_tests PRIVATE + ${NEO_SOURCE_DIR}/core/os_interface/linux/gmm_interface_linux.cpp + ) endif() copy_gmm_dll_for(igdrcl_aub_tests) @@ -71,7 +76,7 @@ if(UNIX) 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 + ${NEO_SOURCE_DIR}/core/os_interface/windows/gmm_interface_win.cpp ) endif() target_include_directories(igdrcl_aub_tests BEFORE PRIVATE ${NEO_SOURCE_DIR}/core/unit_tests/test_macros${BRANCH_DIR_SUFFIX}) diff --git a/unit_tests/gmm_helper/gmm_helper_tests.cpp b/unit_tests/gmm_helper/gmm_helper_tests.cpp index 3496217d4f..9f69a2c7c9 100644 --- a/unit_tests/gmm_helper/gmm_helper_tests.cpp +++ b/unit_tests/gmm_helper/gmm_helper_tests.cpp @@ -30,11 +30,13 @@ using namespace ::testing; +namespace NEO { + extern GMM_INIT_IN_ARGS passedInputArgs; extern SKU_FEATURE_TABLE passedFtrTable; extern WA_TABLE passedWaTable; extern bool copyInputArgs; -namespace NEO { + struct GmmTests : public ::testing::Test { void SetUp() override { executionEnvironment = platformImpl->peekExecutionEnvironment(); diff --git a/unit_tests/main.cpp b/unit_tests/main.cpp index c4f1ebc201..a7a529e9bf 100644 --- a/unit_tests/main.cpp +++ b/unit_tests/main.cpp @@ -7,6 +7,7 @@ #include "core/debug_settings/debug_settings_manager.h" #include "core/gmm_helper/gmm_helper.h" +#include "core/gmm_helper/gmm_interface.h" #include "core/gmm_helper/resource_info.h" #include "core/helpers/options.h" #include "core/unit_tests/helpers/memory_leak_listener.h" @@ -457,7 +458,7 @@ int main(int argc, char **argv) { if (useMockGmm) { GmmHelper::createGmmContextWrapperFunc = GmmClientContextBase::create; } else { - InitializeGmm(nullptr, nullptr); + GmmInterface::initialize(nullptr, nullptr); } initializeTestHelpers(); diff --git a/unit_tests/mock_gmm/mock_gmm.cpp b/unit_tests/mock_gmm/mock_gmm.cpp index 81b8599060..55fc175a39 100644 --- a/unit_tests/mock_gmm/mock_gmm.cpp +++ b/unit_tests/mock_gmm/mock_gmm.cpp @@ -5,14 +5,16 @@ * */ -#include "GmmLib.h" +#include "core/gmm_helper/gmm_interface.h" +namespace NEO { GMM_INIT_IN_ARGS passedInputArgs = {}; SKU_FEATURE_TABLE passedFtrTable = {}; WA_TABLE passedWaTable = {}; bool copyInputArgs = false; -GMM_STATUS GMM_STDCALL InitializeGmm(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs) { +namespace GmmInterface { +GMM_STATUS initialize(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARGS *pOutArgs) { pOutArgs->pGmmClientContext = reinterpret_cast(0x01); if (pInArgs) { if (pInArgs->Platform.eProductFamily == PRODUCT_FAMILY::IGFX_UNKNOWN && @@ -29,5 +31,7 @@ GMM_STATUS GMM_STDCALL InitializeGmm(GMM_INIT_IN_ARGS *pInArgs, GMM_INIT_OUT_ARG return GMM_INVALIDPARAM; } -void GMM_STDCALL GmmAdapterDestroy(GMM_INIT_OUT_ARGS *pInArgs) { +void destroy(GMM_INIT_OUT_ARGS *pInArgs) { } +} // namespace GmmInterface +} // namespace NEO