Refactoring createMemoryManager

Signed-off-by: Jaroslaw Chodor <jaroslaw.chodor@intel.com>
This commit is contained in:
Jaroslaw Chodor
2021-05-25 15:37:44 +00:00
committed by Compute-Runtime-Automation
parent f883376e61
commit 9dbffa8d93
7 changed files with 15 additions and 9 deletions

View File

@ -11,7 +11,7 @@
#include "shared/source/os_interface/os_interface.h"
namespace NEO {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment) {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel) {
return std::make_unique<DrmMemoryManager>(gemCloseWorkerMode::gemCloseWorkerActive,
DebugManager.flags.EnableForcePin.get(),
true,

View File

@ -12,7 +12,7 @@
#include "shared/source/os_interface/windows/wddm_memory_manager.h"
namespace NEO {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment) {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel) {
return std::make_unique<WddmMemoryManager>(executionEnvironment);
}
} // namespace NEO

View File

@ -13,7 +13,7 @@
namespace NEO {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment) {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel) {
if (ultHwConfig.forceOsAgnosticMemoryManager) {
return std::make_unique<OsAgnosticMemoryManager>(executionEnvironment);
}

View File

@ -13,7 +13,7 @@
namespace NEO {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment) {
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel) {
if (ultHwConfig.forceOsAgnosticMemoryManager) {
return std::make_unique<OsAgnosticMemoryManager>(executionEnvironment);
}

View File

@ -55,9 +55,13 @@ bool ExecutionEnvironment::initializeMemoryManager() {
break;
case CommandStreamReceiverType::CSR_HW:
case CommandStreamReceiverType::CSR_HW_WITH_AUB:
default:
memoryManager = MemoryManager::createMemoryManager(*this);
break;
default: {
auto driverModelType = DriverModelType::UNKNOWN;
if (this->rootDeviceEnvironments[0]->osInterface && this->rootDeviceEnvironments[0]->osInterface->getDriverModel()) {
driverModelType = this->rootDeviceEnvironments[0]->osInterface->getDriverModel()->getDriverModelType();
}
memoryManager = MemoryManager::createMemoryManager(*this, driverModelType);
} break;
}
return memoryManager->isInitialized();

View File

@ -19,6 +19,7 @@
#include "shared/source/memory_manager/host_ptr_defines.h"
#include "shared/source/memory_manager/local_memory_usage.h"
#include "shared/source/memory_manager/multi_graphics_allocation.h"
#include "shared/source/os_interface/os_interface.h"
#include "shared/source/page_fault_manager/cpu_page_fault_manager.h"
#include "engine_node.h"
@ -191,7 +192,7 @@ class MemoryManager {
void setDefaultEngineIndex(uint32_t rootDeviceIndex, uint32_t engineIndex) { defaultEngineIndex[rootDeviceIndex] = engineIndex; }
virtual bool copyMemoryToAllocation(GraphicsAllocation *graphicsAllocation, size_t destinationOffset, const void *memoryToCopy, size_t sizeToCopy);
HeapIndex selectHeap(const GraphicsAllocation *allocation, bool hasPointer, bool isFullRangeSVM, bool useFrontWindow);
static std::unique_ptr<MemoryManager> createMemoryManager(ExecutionEnvironment &executionEnvironment);
static std::unique_ptr<MemoryManager> createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel = DriverModelType::UNKNOWN);
virtual void *reserveCpuAddressRange(size_t size, uint32_t rootDeviceIndex) { return nullptr; };
virtual void releaseReservedCpuAddressRange(void *reserved, size_t size, uint32_t rootDeviceIndex){};
void *getReservedMemory(size_t size, size_t alignment);

View File

@ -16,7 +16,8 @@
namespace NEO {
class ExecutionEnvironment;
class MemoryManager;
enum class DriverModelType { WDDM,
enum class DriverModelType { UNKNOWN,
WDDM,
DRM };
class HwDeviceId : public NonCopyableClass {