mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Refactoring createMemoryManager
Signed-off-by: Jaroslaw Chodor <jaroslaw.chodor@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
f883376e61
commit
9dbffa8d93
@ -11,7 +11,7 @@
|
|||||||
#include "shared/source/os_interface/os_interface.h"
|
#include "shared/source/os_interface/os_interface.h"
|
||||||
|
|
||||||
namespace NEO {
|
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,
|
return std::make_unique<DrmMemoryManager>(gemCloseWorkerMode::gemCloseWorkerActive,
|
||||||
DebugManager.flags.EnableForcePin.get(),
|
DebugManager.flags.EnableForcePin.get(),
|
||||||
true,
|
true,
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include "shared/source/os_interface/windows/wddm_memory_manager.h"
|
#include "shared/source/os_interface/windows/wddm_memory_manager.h"
|
||||||
|
|
||||||
namespace NEO {
|
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);
|
return std::make_unique<WddmMemoryManager>(executionEnvironment);
|
||||||
}
|
}
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment) {
|
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel) {
|
||||||
if (ultHwConfig.forceOsAgnosticMemoryManager) {
|
if (ultHwConfig.forceOsAgnosticMemoryManager) {
|
||||||
return std::make_unique<OsAgnosticMemoryManager>(executionEnvironment);
|
return std::make_unique<OsAgnosticMemoryManager>(executionEnvironment);
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment) {
|
std::unique_ptr<MemoryManager> MemoryManager::createMemoryManager(ExecutionEnvironment &executionEnvironment, DriverModelType driverModel) {
|
||||||
if (ultHwConfig.forceOsAgnosticMemoryManager) {
|
if (ultHwConfig.forceOsAgnosticMemoryManager) {
|
||||||
return std::make_unique<OsAgnosticMemoryManager>(executionEnvironment);
|
return std::make_unique<OsAgnosticMemoryManager>(executionEnvironment);
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,13 @@ bool ExecutionEnvironment::initializeMemoryManager() {
|
|||||||
break;
|
break;
|
||||||
case CommandStreamReceiverType::CSR_HW:
|
case CommandStreamReceiverType::CSR_HW:
|
||||||
case CommandStreamReceiverType::CSR_HW_WITH_AUB:
|
case CommandStreamReceiverType::CSR_HW_WITH_AUB:
|
||||||
default:
|
default: {
|
||||||
memoryManager = MemoryManager::createMemoryManager(*this);
|
auto driverModelType = DriverModelType::UNKNOWN;
|
||||||
break;
|
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();
|
return memoryManager->isInitialized();
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "shared/source/memory_manager/host_ptr_defines.h"
|
#include "shared/source/memory_manager/host_ptr_defines.h"
|
||||||
#include "shared/source/memory_manager/local_memory_usage.h"
|
#include "shared/source/memory_manager/local_memory_usage.h"
|
||||||
#include "shared/source/memory_manager/multi_graphics_allocation.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 "shared/source/page_fault_manager/cpu_page_fault_manager.h"
|
||||||
|
|
||||||
#include "engine_node.h"
|
#include "engine_node.h"
|
||||||
@ -191,7 +192,7 @@ class MemoryManager {
|
|||||||
void setDefaultEngineIndex(uint32_t rootDeviceIndex, uint32_t engineIndex) { defaultEngineIndex[rootDeviceIndex] = engineIndex; }
|
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);
|
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);
|
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 *reserveCpuAddressRange(size_t size, uint32_t rootDeviceIndex) { return nullptr; };
|
||||||
virtual void releaseReservedCpuAddressRange(void *reserved, size_t size, uint32_t rootDeviceIndex){};
|
virtual void releaseReservedCpuAddressRange(void *reserved, size_t size, uint32_t rootDeviceIndex){};
|
||||||
void *getReservedMemory(size_t size, size_t alignment);
|
void *getReservedMemory(size_t size, size_t alignment);
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
namespace NEO {
|
namespace NEO {
|
||||||
class ExecutionEnvironment;
|
class ExecutionEnvironment;
|
||||||
class MemoryManager;
|
class MemoryManager;
|
||||||
enum class DriverModelType { WDDM,
|
enum class DriverModelType { UNKNOWN,
|
||||||
|
WDDM,
|
||||||
DRM };
|
DRM };
|
||||||
|
|
||||||
class HwDeviceId : public NonCopyableClass {
|
class HwDeviceId : public NonCopyableClass {
|
||||||
|
Reference in New Issue
Block a user