fix: enable 4KB allocation alignment through KMD on Windows

Related-To: NEO-9446
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
This commit is contained in:
Fabian Zwolinski
2023-11-09 08:40:43 +00:00
committed by Compute-Runtime-Automation
parent 2981c78d34
commit f91757c093
3 changed files with 58 additions and 5 deletions

View File

@@ -180,10 +180,16 @@ GraphicsAllocation *WddmMemoryManager::allocateGraphicsMemoryForImageImpl(const
}
GraphicsAllocation *WddmMemoryManager::allocateGraphicsMemory64kb(const AllocationData &allocationData) {
return allocateGraphicsMemoryUsingKmdAndMapItToCpuVA(allocationData, true);
AllocationData allocationData64KbAlignment = allocationData;
allocationData64KbAlignment.alignment = MemoryConstants::pageSize64k;
return allocateGraphicsMemoryUsingKmdAndMapItToCpuVA(allocationData64KbAlignment, true);
}
GraphicsAllocation *WddmMemoryManager::allocateGraphicsMemoryUsingKmdAndMapItToCpuVA(const AllocationData &allocationData, bool allowLargePages) {
if (allocationData.alignment != MemoryConstants::pageSize64k) {
allowLargePages = false;
}
size_t sizeAligned = alignUp(allocationData.size, allowLargePages ? MemoryConstants::pageSize64k : MemoryConstants::pageSize);
if (sizeAligned > getHugeGfxMemoryChunkSize(GfxMemoryAllocationMethod::AllocateByKmd)) {
const bool isBufferHostMemory = allocationData.type == NEO::AllocationType::BUFFER_HOST_MEMORY;