From e9bd005c441cc16fba6e2392dd64bf6caba1bc70 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 16 Feb 2024 13:06:31 -0600 Subject: [PATCH] nvk: Add a hand-rolled nvk_memory_heap struct Reviewed-by: Thomas H.P. Andersen Part-of: --- src/nouveau/vulkan/nvk_physical_device.c | 9 ++++++--- src/nouveau/vulkan/nvk_physical_device.h | 7 ++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index a0bb17929ca..6a7c3946fa9 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -1079,7 +1079,7 @@ nvk_create_drm_physical_device(struct vk_instance *_instance, if (pdev->info.vram_size_B > 0) { uint32_t vram_heap_idx = pdev->mem_heap_count++; - pdev->mem_heaps[vram_heap_idx] = (VkMemoryHeap) { + pdev->mem_heaps[vram_heap_idx] = (struct nvk_memory_heap) { .size = pdev->info.vram_size_B, .flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, }; @@ -1091,7 +1091,7 @@ nvk_create_drm_physical_device(struct vk_instance *_instance, } uint32_t sysmem_heap_idx = pdev->mem_heap_count++; - pdev->mem_heaps[sysmem_heap_idx] = (VkMemoryHeap) { + pdev->mem_heaps[sysmem_heap_idx] = (struct nvk_memory_heap) { .size = sysmem_size_B, /* If we don't have any VRAM (iGPU), claim sysmem as DEVICE_LOCAL */ .flags = pdev->info.vram_size_B == 0 @@ -1173,7 +1173,10 @@ nvk_GetPhysicalDeviceMemoryProperties2( pMemoryProperties->memoryProperties.memoryHeapCount = pdev->mem_heap_count; for (int i = 0; i < pdev->mem_heap_count; i++) { - pMemoryProperties->memoryProperties.memoryHeaps[i] = pdev->mem_heaps[i]; + pMemoryProperties->memoryProperties.memoryHeaps[i] = (VkMemoryHeap) { + .size = pdev->mem_heaps[i].size, + .flags = pdev->mem_heaps[i].flags, + }; } pMemoryProperties->memoryProperties.memoryTypeCount = pdev->mem_type_count; diff --git a/src/nouveau/vulkan/nvk_physical_device.h b/src/nouveau/vulkan/nvk_physical_device.h index 64d33631cab..8a4f1590fc8 100644 --- a/src/nouveau/vulkan/nvk_physical_device.h +++ b/src/nouveau/vulkan/nvk_physical_device.h @@ -25,6 +25,11 @@ struct nvk_queue_family { uint32_t queue_count; }; +struct nvk_memory_heap { + uint64_t size; + VkMemoryHeapFlags flags; +}; + struct nvk_physical_device { struct vk_physical_device vk; struct nv_device_info info; @@ -41,7 +46,7 @@ struct nvk_physical_device { uint8_t device_uuid[VK_UUID_SIZE]; // TODO: add mapable VRAM heap if possible - VkMemoryHeap mem_heaps[2]; + struct nvk_memory_heap mem_heaps[2]; VkMemoryType mem_types[2]; uint8_t mem_heap_count; uint8_t mem_type_count;