From 0d9155c9f8ab841c578229d4b499fb4239ea955c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 11 Jan 2023 08:10:51 +1000 Subject: [PATCH] nvk: handle alignments in device memory Part-of: --- src/nouveau/vulkan/nvk_device_memory.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/nouveau/vulkan/nvk_device_memory.c b/src/nouveau/vulkan/nvk_device_memory.c index 3bace05..5608197 100644 --- a/src/nouveau/vulkan/nvk_device_memory.c +++ b/src/nouveau/vulkan/nvk_device_memory.c @@ -161,6 +161,13 @@ nvk_allocate_memory(struct nvk_device *dev, &pdev->mem_types[pAllocateInfo->memoryTypeIndex]; const enum nouveau_ws_bo_flags flags = nvk_memory_type_flags(type); + uint32_t alignment = (1ULL << 12); + if (flags & NOUVEAU_WS_BO_LOCAL) + alignment = (1ULL << 16); + + const uint64_t aligned_size = + ALIGN_POT(pAllocateInfo->allocationSize, alignment); + mem = vk_device_memory_create(&dev->vk, pAllocateInfo, pAllocator, sizeof(*mem)); if (!mem) @@ -191,8 +198,7 @@ nvk_allocate_memory(struct nvk_device *dev, goto fail_alloc; } } else { - mem->bo = nouveau_ws_bo_new(pdev->dev, - pAllocateInfo->allocationSize, 0, flags); + mem->bo = nouveau_ws_bo_new(pdev->dev, aligned_size, alignment, flags); if (!mem->bo) { result = vk_error(dev, VK_ERROR_OUT_OF_DEVICE_MEMORY); goto fail_alloc; -- 2.7.4