nvk: Add a hand-rolled nvk_memory_heap struct

Reviewed-by: Thomas H.P. Andersen <phomes@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27662>
This commit is contained in:
Faith Ekstrand
2024-02-16 13:06:31 -06:00
committed by Marge Bot
parent 6a8c60d674
commit e9bd005c44
2 changed files with 12 additions and 4 deletions
+6 -3
View File
@@ -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;
+6 -1
View File
@@ -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;