SWDEV-322620 - Virtual Memory Management
Introducing a VirtualMemObj map as it is needed to differentiate between virtual address ranges and actual physical memory This is because a whole VA range can have several physical memories as chunks. Change-Id: Ie2a972b4faf3f7d552cfa53e77898f80ad75740a
This commit is contained in:
@@ -2261,7 +2261,7 @@ void* Device::virtualAlloc(void* addr, size_t size, size_t alignment)
|
||||
}
|
||||
// if the device supports SVM FGS, return the committed CPU address directly.
|
||||
pal::Memory* gpuMem = getGpuMemory(mem);
|
||||
amd::MemObjMap::AddMemObj(mem->getSvmPtr(), mem);
|
||||
amd::MemObjMap::AddVirtualMemObj(mem->getSvmPtr(), mem);
|
||||
|
||||
void* svmPtr = mem->getSvmPtr();
|
||||
|
||||
@@ -2270,10 +2270,10 @@ void* Device::virtualAlloc(void* addr, size_t size, size_t alignment)
|
||||
|
||||
void Device::virtualFree(void* addr)
|
||||
{
|
||||
amd::Memory* va = amd::MemObjMap::FindMemObj(addr);
|
||||
amd::Memory* va = amd::MemObjMap::FindVirtualMemObj(addr);
|
||||
if (nullptr != va && (va->getMemFlags() & CL_MEM_VA_RANGE_AMD)) {
|
||||
va->release();
|
||||
amd::MemObjMap::RemoveMemObj(addr);
|
||||
amd::MemObjMap::RemoveVirtualMemObj(addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user