From 30a20d5f1516e4206d4eb7cdf92a09a8e5951fc6 Mon Sep 17 00:00:00 2001 From: Jaroslaw Chodor Date: Wed, 19 May 2021 00:30:46 +0200 Subject: [PATCH] WDDM/GMM cleanup Signed-off-by: Jaroslaw Chodor --- CMakeLists.txt | 6 +- shared/source/CMakeLists.txt | 1 + shared/source/gmm_helper/CMakeLists.txt | 6 +- ...mm_configure_device_address_space_wddm.cpp | 33 +++++++++ .../gmm_helper/windows/gmm_memory_base.cpp | 18 +---- .../os_interface/windows/CMakeLists.txt | 56 +++++++++------ .../os_interface/windows/dxgi_wrapper.h | 14 ++++ .../configure_device_address_space_wddm.cpp | 71 +++++++++++++++++++ .../windows/wddm/set_gmm_input_args_wddm.cpp | 22 ++++++ .../source/os_interface/windows/wddm/wddm.cpp | 54 -------------- 10 files changed, 185 insertions(+), 96 deletions(-) create mode 100644 shared/source/gmm_helper/windows/gmm_configure_device_address_space_wddm.cpp create mode 100644 shared/source/os_interface/windows/dxgi_wrapper.h create mode 100644 shared/source/os_interface/windows/wddm/configure_device_address_space_wddm.cpp create mode 100644 shared/source/os_interface/windows/wddm/set_gmm_input_args_wddm.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e203e3430..738389db62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -888,7 +888,11 @@ include_directories(${NEO_SHARED_DIRECTORY}/debug_settings/definitions${BRANCH_D include_directories(${NEO_SHARED_DIRECTORY}/dll/devices${BRANCH_DIR_SUFFIX}) include_directories(${NEO_SHARED_DIRECTORY}/gen_common${BRANCH_DIR_SUFFIX}) include_directories(${NEO_SHARED_DIRECTORY}/gmm_helper/client_context${BRANCH_DIR_SUFFIX}) -include_directories(${NEO_SHARED_DIRECTORY}/gmm_helper/windows/gmm_memory${BRANCH_DIR_SUFFIX}) +if(WIN32) + include_directories(${NEO_SHARED_DIRECTORY}/gmm_helper/windows/gmm_memory${BRANCH_DIR_SUFFIX}) +else() + include_directories(${NEO_SHARED_DIRECTORY}/gmm_helper/windows/gmm_memory) +endif() include_directories(${NEO_SHARED_DIRECTORY}/helpers/definitions${BRANCH_DIR_SUFFIX}) include_directories(${NEO_SHARED_DIRECTORY}/memory_manager/definitions${BRANCH_DIR_SUFFIX}) include_directories(${NEO_SHARED_DIRECTORY}/memory_properties${BRANCH_DIR_SUFFIX}) diff --git a/shared/source/CMakeLists.txt b/shared/source/CMakeLists.txt index 6ac1c1d4b2..f9a561eba0 100644 --- a/shared/source/CMakeLists.txt +++ b/shared/source/CMakeLists.txt @@ -128,6 +128,7 @@ if(WIN32) NEO_CORE_GMM_HELPER_WINDOWS NEO_CORE_DIRECT_SUBMISSION_WINDOWS NEO_CORE_OS_INTERFACE_WINDOWS + NEO_CORE_OS_INTERFACE_WDDM NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS NEO_CORE_SKU_INFO_WINDOWS NEO_CORE_SRCS_HELPERS_WINDOWS diff --git a/shared/source/gmm_helper/CMakeLists.txt b/shared/source/gmm_helper/CMakeLists.txt index cfa11274a1..8145b64ddf 100644 --- a/shared/source/gmm_helper/CMakeLists.txt +++ b/shared/source/gmm_helper/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2019-2020 Intel Corporation +# Copyright (C) 2019-2021 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -29,6 +29,10 @@ set(NEO_CORE_GMM_HELPER_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/windows/gmm_memory_base.cpp ) +if(NOT ${DRIVER_MODEL} STREQUAL "drm") + list(APPEND NEO_CORE_GMM_HELPER ${CMAKE_CURRENT_SOURCE_DIR}/windows/gmm_configure_device_address_space_${DRIVER_MODEL}.cpp) +endif() + set_property(GLOBAL PROPERTY NEO_CORE_GMM_HELPER ${NEO_CORE_GMM_HELPER}) set_property(GLOBAL PROPERTY NEO_CORE_GMM_HELPER_WINDOWS ${NEO_CORE_GMM_HELPER_WINDOWS}) add_subdirectories() diff --git a/shared/source/gmm_helper/windows/gmm_configure_device_address_space_wddm.cpp b/shared/source/gmm_helper/windows/gmm_configure_device_address_space_wddm.cpp new file mode 100644 index 0000000000..769058fc2d --- /dev/null +++ b/shared/source/gmm_helper/windows/gmm_configure_device_address_space_wddm.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/gmm_helper/windows/gmm_memory_base.h" +#include "shared/source/helpers/debug_helpers.h" +#include "shared/source/os_interface/windows/windows_defs.h" + +#include "gmm_client_context.h" + +namespace NEO { + +bool GmmMemoryBase::configureDeviceAddressSpace(GMM_ESCAPE_HANDLE hAdapter, + GMM_ESCAPE_HANDLE hDevice, + GMM_ESCAPE_FUNC_TYPE pfnEscape, + GMM_GFX_SIZE_T SvmSize, + BOOLEAN BDWL3Coherency) { + return clientContext.ConfigureDeviceAddressSpace( + {hAdapter}, + {hDevice}, + {pfnEscape}, + SvmSize, + 0, + 0, + BDWL3Coherency, + 0, + 0) != 0; +} + +}; // namespace NEO diff --git a/shared/source/gmm_helper/windows/gmm_memory_base.cpp b/shared/source/gmm_helper/windows/gmm_memory_base.cpp index 201d0f7617..9d5d776aa3 100644 --- a/shared/source/gmm_helper/windows/gmm_memory_base.cpp +++ b/shared/source/gmm_helper/windows/gmm_memory_base.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Intel Corporation + * Copyright (C) 2018-2021 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -15,22 +15,6 @@ namespace NEO { GmmMemoryBase::GmmMemoryBase(GmmClientContext *gmmClientContext) : clientContext(*gmmClientContext->getHandle()) { } -bool GmmMemoryBase::configureDeviceAddressSpace(GMM_ESCAPE_HANDLE hAdapter, - GMM_ESCAPE_HANDLE hDevice, - GMM_ESCAPE_FUNC_TYPE pfnEscape, - GMM_GFX_SIZE_T SvmSize, - BOOLEAN BDWL3Coherency) { - return clientContext.ConfigureDeviceAddressSpace( - {hAdapter}, - {hDevice}, - {pfnEscape}, - SvmSize, - 0, - 0, - BDWL3Coherency, - 0, - 0) != 0; -} bool GmmMemoryBase::configureDevice(GMM_ESCAPE_HANDLE hAdapter, GMM_ESCAPE_HANDLE hDevice, diff --git a/shared/source/os_interface/windows/CMakeLists.txt b/shared/source/os_interface/windows/CMakeLists.txt index 68644416c1..76ee88ef9c 100644 --- a/shared/source/os_interface/windows/CMakeLists.txt +++ b/shared/source/os_interface/windows/CMakeLists.txt @@ -11,18 +11,43 @@ else() endif() set(NEO_CORE_OS_INTERFACE_WINDOWS + ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/debug_registry_reader.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/debug_registry_reader.h + ${CMAKE_CURRENT_SOURCE_DIR}/driver_info_windows.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/driver_info_windows.h + ${CMAKE_CURRENT_SOURCE_DIR}/environment_variables.h + ${CMAKE_CURRENT_SOURCE_DIR}/os_inc.h + ${CMAKE_CURRENT_SOURCE_DIR}/os_interface_win.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/os_library_win.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/os_library_win.h + ${CMAKE_CURRENT_SOURCE_DIR}/os_memory_win.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/os_memory_win.h + ${CMAKE_CURRENT_SOURCE_DIR}/os_socket.h + ${CMAKE_CURRENT_SOURCE_DIR}/os_time_win.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/os_time_win.h + ${CMAKE_CURRENT_SOURCE_DIR}/os_thread_win.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/os_thread_win.h + ${CMAKE_CURRENT_SOURCE_DIR}/page_table_manager_functions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/print.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/trim_callback.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_dxgi.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_dxgi.h + ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_create_with_fallback.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/wddm/read_preemption_regkey.cpp +) + +set(NEO_CORE_OS_INTERFACE_WDDM ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/wddm_additional_context_flags.cpp ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/wddm_allocation.cpp ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/wddm_engine_mapper.cpp ${CMAKE_CURRENT_SOURCE_DIR}/d3dkmthk_wrapper.h - ${CMAKE_CURRENT_SOURCE_DIR}/debug_registry_reader.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/debug_registry_reader.h + ${CMAKE_CURRENT_SOURCE_DIR}/dxgi_wrapper.h ${CMAKE_CURRENT_SOURCE_DIR}/deferrable_deletion_win.cpp ${CMAKE_CURRENT_SOURCE_DIR}/deferrable_deletion_win.h ${CMAKE_CURRENT_SOURCE_DIR}/device_time_wddm.cpp ${CMAKE_CURRENT_SOURCE_DIR}/device_time_wddm.h - ${CMAKE_CURRENT_SOURCE_DIR}/driver_info_windows.cpp ${CMAKE_CURRENT_SOURCE_DIR}/driver_info_windows.h ${CMAKE_CURRENT_SOURCE_DIR}/environment_variables.h ${CMAKE_CURRENT_SOURCE_DIR}/gdi_interface.cpp @@ -38,32 +63,16 @@ set(NEO_CORE_OS_INTERFACE_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/os_context_win.h ${CMAKE_CURRENT_SOURCE_DIR}/os_environment_win.cpp ${CMAKE_CURRENT_SOURCE_DIR}/os_environment_win.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_inc.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_interface_win.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/os_interface_win.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_library_win.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/os_library_win.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_memory_win.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/os_memory_win.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_socket.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_thread_win.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/os_thread_win.h - ${CMAKE_CURRENT_SOURCE_DIR}/os_time_win.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/os_time_win.h - ${CMAKE_CURRENT_SOURCE_DIR}/page_table_manager_functions.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/print.cpp ${CMAKE_CURRENT_SOURCE_DIR}/sys_calls.h ${CMAKE_CURRENT_SOURCE_DIR}/thk_wrapper.h - ${CMAKE_CURRENT_SOURCE_DIR}/trim_callback.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_info.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_info.h ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_create_with_fallback.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory.h ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_dxcore.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_dxcore.h - ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_dxgi.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/wddm/adapter_factory_dxgi.h + ${CMAKE_CURRENT_SOURCE_DIR}/wddm/configure_device_address_space_${DRIVER_MODEL}.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/wddm/set_gmm_input_args_${DRIVER_MODEL}.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/wddm.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/wddm.h ${CMAKE_CURRENT_SOURCE_DIR}/wddm/wddm_defs.h @@ -71,7 +80,6 @@ set(NEO_CORE_OS_INTERFACE_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/wddm_memory_manager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm_memory_manager.h ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/wddm_memory_manager_allocate_in_device_pool.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/wddm/read_preemption_regkey.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/um_km_data_translator.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm/um_km_data_translator.h ${CMAKE_CURRENT_SOURCE_DIR}/wddm${BRANCH_DIR_SUFFIX}/create_um_km_data_translator.cpp @@ -90,5 +98,7 @@ set(NEO_CORE_OS_INTERFACE_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/windows_wrapper.h ) -set_property(GLOBAL PROPERTY NEO_CORE_OS_INTERFACE_WINDOWS ${NEO_CORE_OS_INTERFACE_WINDOWS}) +add_subdirectories() +set_property(GLOBAL PROPERTY NEO_CORE_OS_INTERFACE_WINDOWS ${NEO_CORE_OS_INTERFACE_WINDOWS}) +set_property(GLOBAL PROPERTY NEO_CORE_OS_INTERFACE_WDDM ${NEO_CORE_OS_INTERFACE_WDDM}) diff --git a/shared/source/os_interface/windows/dxgi_wrapper.h b/shared/source/os_interface/windows/dxgi_wrapper.h new file mode 100644 index 0000000000..045b56745c --- /dev/null +++ b/shared/source/os_interface/windows/dxgi_wrapper.h @@ -0,0 +1,14 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#pragma once + +#include "shared/source/os_interface/windows/windows_wrapper.h" + +#if _WIN32 +#include +#endif diff --git a/shared/source/os_interface/windows/wddm/configure_device_address_space_wddm.cpp b/shared/source/os_interface/windows/wddm/configure_device_address_space_wddm.cpp new file mode 100644 index 0000000000..18f0e70150 --- /dev/null +++ b/shared/source/os_interface/windows/wddm/configure_device_address_space_wddm.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/execution_environment/execution_environment.h" +#include "shared/source/execution_environment/root_device_environment.h" +#include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/page_table_mngr.h" +#include "shared/source/gmm_helper/resource_info.h" +#include "shared/source/helpers/hw_info.h" +#include "shared/source/helpers/windows/gmm_callbacks.h" +#include "shared/source/os_interface/windows/gdi_interface.h" +#include "shared/source/os_interface/windows/wddm/wddm.h" + +#include "gmm_client_context.h" +#include "gmm_memory.h" + +namespace NEO { + +long __stdcall notifyAubCapture(void *csrHandle, uint64_t gfxAddress, size_t gfxSize, bool allocate) { + return notifyAubCaptureImpl(csrHandle, gfxAddress, gfxSize, allocate); +} + +bool Wddm::configureDeviceAddressSpace() { + GMM_DEVICE_CALLBACKS_INT deviceCallbacks{}; + deviceCallbacks.Adapter.KmtHandle = getAdapter(); + deviceCallbacks.hCsr = nullptr; + deviceCallbacks.hDevice.KmtHandle = device; + deviceCallbacks.PagingQueue = pagingQueue; + deviceCallbacks.PagingFence = pagingQueueSyncObject; + + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnAllocate = getGdi()->createAllocation_; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnDeallocate = getGdi()->destroyAllocation; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnMapGPUVA = getGdi()->mapGpuVirtualAddress; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnMakeResident = getGdi()->makeResident; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnEvict = getGdi()->evict; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnReserveGPUVA = getGdi()->reserveGpuVirtualAddress; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnUpdateGPUVA = getGdi()->updateGpuVirtualAddress; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnWaitFromCpu = getGdi()->waitForSynchronizationObjectFromCpu; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnLock = getGdi()->lock2; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnUnLock = getGdi()->unlock2; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnEscape = getGdi()->escape; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnFreeGPUVA = getGdi()->freeGpuVirtualAddress; + deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnNotifyAubCapture = notifyAubCapture; + + GMM_DEVICE_INFO deviceInfo{}; + deviceInfo.pGfxPartition = &gfxPartition; + deviceInfo.pDeviceCb = &deviceCallbacks; + if (!gmmMemory->setDeviceInfo(&deviceInfo)) { + return false; + } + SYSTEM_INFO sysInfo; + Wddm::getSystemInfo(&sysInfo); + maximumApplicationAddress = reinterpret_cast(sysInfo.lpMaximumApplicationAddress); + auto productFamily = gfxPlatform->eProductFamily; + if (!hardwareInfoTable[productFamily]) { + return false; + } + auto svmSize = hardwareInfoTable[productFamily]->capabilityTable.gpuAddressSpace >= MemoryConstants::max64BitAppAddress + ? maximumApplicationAddress + 1u + : 0u; + + bool obtainMinAddress = rootDeviceEnvironment.getHardwareInfo()->platform.eRenderCoreFamily == IGFX_GEN12LP_CORE; + return gmmMemory->configureDevice(getAdapter(), device, getGdi()->escape, svmSize, featureTable->ftrL3IACoherency, minAddress, obtainMinAddress); +} + +} // namespace NEO diff --git a/shared/source/os_interface/windows/wddm/set_gmm_input_args_wddm.cpp b/shared/source/os_interface/windows/wddm/set_gmm_input_args_wddm.cpp new file mode 100644 index 0000000000..9a5d581183 --- /dev/null +++ b/shared/source/os_interface/windows/wddm/set_gmm_input_args_wddm.cpp @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/os_interface/windows/wddm/wddm.h" + +#include "gmm_client_context.h" + +namespace NEO { + +void Wddm::setGmmInputArgs(void *args) { + auto gmmInArgs = reinterpret_cast(args); + + gmmInArgs->stAdapterBDF = this->adapterBDF; + gmmInArgs->ClientType = GMM_CLIENT::GMM_OCL_VISTA; + gmmInArgs->DeviceRegistryPath = const_cast(deviceRegistryPath.c_str()); +} + +} // namespace NEO diff --git a/shared/source/os_interface/windows/wddm/wddm.cpp b/shared/source/os_interface/windows/wddm/wddm.cpp index 0ad898db2a..32e688a519 100644 --- a/shared/source/os_interface/windows/wddm/wddm.cpp +++ b/shared/source/os_interface/windows/wddm/wddm.cpp @@ -1044,52 +1044,6 @@ int Wddm::virtualFree(void *ptr, size_t size, unsigned long flags) { return virtualFreeFnc(ptr, size, flags); } -long __stdcall notifyAubCapture(void *csrHandle, uint64_t gfxAddress, size_t gfxSize, bool allocate) { - return notifyAubCaptureImpl(csrHandle, gfxAddress, gfxSize, allocate); -} -bool Wddm::configureDeviceAddressSpace() { - GMM_DEVICE_CALLBACKS_INT deviceCallbacks{}; - deviceCallbacks.Adapter.KmtHandle = getAdapter(); - deviceCallbacks.hCsr = nullptr; - deviceCallbacks.hDevice.KmtHandle = device; - deviceCallbacks.PagingQueue = pagingQueue; - deviceCallbacks.PagingFence = pagingQueueSyncObject; - - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnAllocate = getGdi()->createAllocation_; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnDeallocate = getGdi()->destroyAllocation; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnMapGPUVA = getGdi()->mapGpuVirtualAddress; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnMakeResident = getGdi()->makeResident; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnEvict = getGdi()->evict; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnReserveGPUVA = getGdi()->reserveGpuVirtualAddress; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnUpdateGPUVA = getGdi()->updateGpuVirtualAddress; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnWaitFromCpu = getGdi()->waitForSynchronizationObjectFromCpu; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnLock = getGdi()->lock2; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnUnLock = getGdi()->unlock2; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnEscape = getGdi()->escape; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnFreeGPUVA = getGdi()->freeGpuVirtualAddress; - deviceCallbacks.DevCbPtrs.KmtCbPtrs.pfnNotifyAubCapture = notifyAubCapture; - - GMM_DEVICE_INFO deviceInfo{}; - deviceInfo.pGfxPartition = &gfxPartition; - deviceInfo.pDeviceCb = &deviceCallbacks; - if (!gmmMemory->setDeviceInfo(&deviceInfo)) { - return false; - } - SYSTEM_INFO sysInfo; - Wddm::getSystemInfo(&sysInfo); - maximumApplicationAddress = reinterpret_cast(sysInfo.lpMaximumApplicationAddress); - auto productFamily = gfxPlatform->eProductFamily; - if (!hardwareInfoTable[productFamily]) { - return false; - } - auto svmSize = hardwareInfoTable[productFamily]->capabilityTable.gpuAddressSpace >= MemoryConstants::max64BitAppAddress - ? maximumApplicationAddress + 1u - : 0u; - - bool obtainMinAddress = rootDeviceEnvironment.getHardwareInfo()->platform.eRenderCoreFamily == IGFX_GEN12LP_CORE; - return gmmMemory->configureDevice(getAdapter(), device, getGdi()->escape, svmSize, featureTable->ftrL3IACoherency, minAddress, obtainMinAddress); -} - void Wddm::waitOnPagingFenceFromCpu() { perfLogStartWaitTime(residencyLogger.get(), currentPagingFenceValue); while (currentPagingFenceValue > *getPagingFenceAddress()) @@ -1098,14 +1052,6 @@ void Wddm::waitOnPagingFenceFromCpu() { perfLogResidencyWaitPagingeFenceLog(residencyLogger.get(), *getPagingFenceAddress()); } -void Wddm::setGmmInputArgs(void *args) { - auto gmmInArgs = reinterpret_cast(args); - - gmmInArgs->stAdapterBDF = this->adapterBDF; - gmmInArgs->ClientType = GMM_CLIENT::GMM_OCL_VISTA; - gmmInArgs->DeviceRegistryPath = const_cast(deviceRegistryPath.c_str()); -} - void Wddm::updatePagingFenceValue(uint64_t newPagingFenceValue) { interlockedMax(currentPagingFenceValue, newPagingFenceValue); }