From 37bbb47e863b0348c16e8cc73e792ad6ef1a8591 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Tue, 3 Sep 2024 11:16:49 -0500 Subject: [PATCH] nvk/nvkmd: Plumb map_flags through to unmap/overmap Part-of: --- src/nouveau/vulkan/nvk_device.c | 2 +- src/nouveau/vulkan/nvk_device_memory.c | 8 ++++---- .../vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c | 5 ++++- src/nouveau/vulkan/nvkmd/nvkmd.c | 2 +- src/nouveau/vulkan/nvkmd/nvkmd.h | 14 +++++++++----- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/nouveau/vulkan/nvk_device.c b/src/nouveau/vulkan/nvk_device.c index 1cefdf2eb75..722561d1798 100644 --- a/src/nouveau/vulkan/nvk_device.c +++ b/src/nouveau/vulkan/nvk_device.c @@ -164,7 +164,7 @@ nvk_CreateDevice(VkPhysicalDevice physicalDevice, goto fail_upload; memset(dev->zero_page->map, 0, 0x1000); - nvkmd_mem_unmap(dev->zero_page); + nvkmd_mem_unmap(dev->zero_page, 0); result = nvk_descriptor_table_init(dev, &dev->images, 8 * 4 /* tic entry size */, diff --git a/src/nouveau/vulkan/nvk_device_memory.c b/src/nouveau/vulkan/nvk_device_memory.c index f4de756cfd0..522da85a135 100644 --- a/src/nouveau/vulkan/nvk_device_memory.c +++ b/src/nouveau/vulkan/nvk_device_memory.c @@ -192,12 +192,12 @@ nvk_AllocateMemory(VkDevice device, if (type->propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) { void *map; result = nvkmd_mem_map(mem->mem, &dev->vk.base, - NVKMD_MEM_MAP_RDWR, NULL, &map); + NVKMD_MEM_MAP_RDWR, NULL, &map); if (result != VK_SUCCESS) goto fail_mem; memset(map, 0, mem->mem->size_B); - nvkmd_mem_unmap(mem->mem); + nvkmd_mem_unmap(mem->mem, 0); } else { result = nvk_upload_queue_fill(dev, &dev->upload, mem->mem->va->addr, @@ -334,9 +334,9 @@ nvk_UnmapMemory2KHR(VkDevice device, return VK_SUCCESS; if (pMemoryUnmapInfo->flags & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) { - return nvkmd_mem_overmap(mem->mem, &mem->vk.base); + return nvkmd_mem_overmap(mem->mem, &mem->vk.base, 0); } else { - nvkmd_mem_unmap(mem->mem); + nvkmd_mem_unmap(mem->mem, 0); return VK_SUCCESS; } } diff --git a/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c b/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c index 818bfef9eee..c297efde84e 100644 --- a/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c +++ b/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c @@ -208,7 +208,9 @@ nvkmd_nouveau_mem_map(struct nvkmd_mem *_mem, } static void -nvkmd_nouveau_mem_unmap(struct nvkmd_mem *_mem, void *map) +nvkmd_nouveau_mem_unmap(struct nvkmd_mem *_mem, + enum nvkmd_mem_map_flags flags, + void *map) { struct nvkmd_nouveau_mem *mem = nvkmd_nouveau_mem(_mem); @@ -218,6 +220,7 @@ nvkmd_nouveau_mem_unmap(struct nvkmd_mem *_mem, void *map) static VkResult nvkmd_nouveau_mem_overmap(struct nvkmd_mem *_mem, struct vk_object_base *log_obj, + enum nvkmd_mem_map_flags flags, void *map) { struct nvkmd_nouveau_mem *mem = nvkmd_nouveau_mem(_mem); diff --git a/src/nouveau/vulkan/nvkmd/nvkmd.c b/src/nouveau/vulkan/nvkmd/nvkmd.c index 83c7fa6b958..2f2b44bcda7 100644 --- a/src/nouveau/vulkan/nvkmd/nvkmd.c +++ b/src/nouveau/vulkan/nvkmd/nvkmd.c @@ -208,7 +208,7 @@ nvkmd_mem_unref(struct nvkmd_mem *mem) return; if (mem->map != NULL) - mem->ops->unmap(mem, mem->map); + mem->ops->unmap(mem, 0, mem->map); mem->ops->free(mem); } diff --git a/src/nouveau/vulkan/nvkmd/nvkmd.h b/src/nouveau/vulkan/nvkmd/nvkmd.h index abc4dbb9e34..1d16360015d 100644 --- a/src/nouveau/vulkan/nvkmd/nvkmd.h +++ b/src/nouveau/vulkan/nvkmd/nvkmd.h @@ -193,10 +193,13 @@ struct nvkmd_mem_ops { void *fixed_addr, void **map_out); - void (*unmap)(struct nvkmd_mem *mem, void *map); + void (*unmap)(struct nvkmd_mem *mem, + enum nvkmd_mem_map_flags flags, + void *map); VkResult (*overmap)(struct nvkmd_mem *mem, struct vk_object_base *log_obj, + enum nvkmd_mem_map_flags flags, void *map); VkResult (*export_dma_buf)(struct nvkmd_mem *mem, @@ -473,18 +476,19 @@ nvkmd_mem_map(struct nvkmd_mem *mem, struct vk_object_base *log_obj, } static inline void -nvkmd_mem_unmap(struct nvkmd_mem *mem) +nvkmd_mem_unmap(struct nvkmd_mem *mem, enum nvkmd_mem_map_flags flags) { assert(mem->map != NULL); - mem->ops->unmap(mem, mem->map); + mem->ops->unmap(mem, flags, mem->map); mem->map = NULL; } static inline VkResult MUST_CHECK -nvkmd_mem_overmap(struct nvkmd_mem *mem, struct vk_object_base *log_obj) +nvkmd_mem_overmap(struct nvkmd_mem *mem, struct vk_object_base *log_obj, + enum nvkmd_mem_map_flags flags) { assert(mem->map != NULL); - VkResult result = mem->ops->overmap(mem, log_obj, mem->map); + VkResult result = mem->ops->overmap(mem, log_obj, flags, mem->map); if (result == VK_SUCCESS) mem->map = NULL; return result;