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:

committed by
Marge Bot

parent
6c782b8a12
commit
37bbb47e86
@@ -164,7 +164,7 @@ nvk_CreateDevice(VkPhysicalDevice physicalDevice,
|
|||||||
goto fail_upload;
|
goto fail_upload;
|
||||||
|
|
||||||
memset(dev->zero_page->map, 0, 0x1000);
|
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,
|
result = nvk_descriptor_table_init(dev, &dev->images,
|
||||||
8 * 4 /* tic entry size */,
|
8 * 4 /* tic entry size */,
|
||||||
|
@@ -192,12 +192,12 @@ nvk_AllocateMemory(VkDevice device,
|
|||||||
if (type->propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) {
|
if (type->propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) {
|
||||||
void *map;
|
void *map;
|
||||||
result = nvkmd_mem_map(mem->mem, &dev->vk.base,
|
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)
|
if (result != VK_SUCCESS)
|
||||||
goto fail_mem;
|
goto fail_mem;
|
||||||
|
|
||||||
memset(map, 0, mem->mem->size_B);
|
memset(map, 0, mem->mem->size_B);
|
||||||
nvkmd_mem_unmap(mem->mem);
|
nvkmd_mem_unmap(mem->mem, 0);
|
||||||
} else {
|
} else {
|
||||||
result = nvk_upload_queue_fill(dev, &dev->upload,
|
result = nvk_upload_queue_fill(dev, &dev->upload,
|
||||||
mem->mem->va->addr,
|
mem->mem->va->addr,
|
||||||
@@ -334,9 +334,9 @@ nvk_UnmapMemory2KHR(VkDevice device,
|
|||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
|
|
||||||
if (pMemoryUnmapInfo->flags & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) {
|
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 {
|
} else {
|
||||||
nvkmd_mem_unmap(mem->mem);
|
nvkmd_mem_unmap(mem->mem, 0);
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -208,7 +208,9 @@ nvkmd_nouveau_mem_map(struct nvkmd_mem *_mem,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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);
|
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
|
static VkResult
|
||||||
nvkmd_nouveau_mem_overmap(struct nvkmd_mem *_mem,
|
nvkmd_nouveau_mem_overmap(struct nvkmd_mem *_mem,
|
||||||
struct vk_object_base *log_obj,
|
struct vk_object_base *log_obj,
|
||||||
|
enum nvkmd_mem_map_flags flags,
|
||||||
void *map)
|
void *map)
|
||||||
{
|
{
|
||||||
struct nvkmd_nouveau_mem *mem = nvkmd_nouveau_mem(_mem);
|
struct nvkmd_nouveau_mem *mem = nvkmd_nouveau_mem(_mem);
|
||||||
|
@@ -208,7 +208,7 @@ nvkmd_mem_unref(struct nvkmd_mem *mem)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (mem->map != NULL)
|
if (mem->map != NULL)
|
||||||
mem->ops->unmap(mem, mem->map);
|
mem->ops->unmap(mem, 0, mem->map);
|
||||||
|
|
||||||
mem->ops->free(mem);
|
mem->ops->free(mem);
|
||||||
}
|
}
|
||||||
|
@@ -193,10 +193,13 @@ struct nvkmd_mem_ops {
|
|||||||
void *fixed_addr,
|
void *fixed_addr,
|
||||||
void **map_out);
|
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,
|
VkResult (*overmap)(struct nvkmd_mem *mem,
|
||||||
struct vk_object_base *log_obj,
|
struct vk_object_base *log_obj,
|
||||||
|
enum nvkmd_mem_map_flags flags,
|
||||||
void *map);
|
void *map);
|
||||||
|
|
||||||
VkResult (*export_dma_buf)(struct nvkmd_mem *mem,
|
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
|
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);
|
assert(mem->map != NULL);
|
||||||
mem->ops->unmap(mem, mem->map);
|
mem->ops->unmap(mem, flags, mem->map);
|
||||||
mem->map = NULL;
|
mem->map = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline VkResult MUST_CHECK
|
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);
|
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)
|
if (result == VK_SUCCESS)
|
||||||
mem->map = NULL;
|
mem->map = NULL;
|
||||||
return result;
|
return result;
|
||||||
|
Reference in New Issue
Block a user