mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
WDDM/GMM cleanup
Signed-off-by: Jaroslaw Chodor <jaroslaw.chodor@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
3b4ec5b3fa
commit
30a20d5f15
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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,
|
||||
|
||||
@@ -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})
|
||||
|
||||
14
shared/source/os_interface/windows/dxgi_wrapper.h
Normal file
14
shared/source/os_interface/windows/dxgi_wrapper.h
Normal file
@@ -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 <dxgi.h>
|
||||
#endif
|
||||
@@ -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<uintptr_t>(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
|
||||
@@ -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<GMM_INIT_IN_ARGS *>(args);
|
||||
|
||||
gmmInArgs->stAdapterBDF = this->adapterBDF;
|
||||
gmmInArgs->ClientType = GMM_CLIENT::GMM_OCL_VISTA;
|
||||
gmmInArgs->DeviceRegistryPath = const_cast<char *>(deviceRegistryPath.c_str());
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
@@ -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<uintptr_t>(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<GMM_INIT_IN_ARGS *>(args);
|
||||
|
||||
gmmInArgs->stAdapterBDF = this->adapterBDF;
|
||||
gmmInArgs->ClientType = GMM_CLIENT::GMM_OCL_VISTA;
|
||||
gmmInArgs->DeviceRegistryPath = const_cast<char *>(deviceRegistryPath.c_str());
|
||||
}
|
||||
|
||||
void Wddm::updatePagingFenceValue(uint64_t newPagingFenceValue) {
|
||||
interlockedMax(currentPagingFenceValue, newPagingFenceValue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user