nvk/nvkmd: Plumb map_flags through to unmap/overmap

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31004>
This commit is contained in:
Faith Ekstrand
2024-09-03 11:16:49 -05:00
committed by Marge Bot
parent 6c782b8a12
commit 37bbb47e86
5 changed files with 19 additions and 12 deletions

View File

@@ -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 */,

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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;