goto fail_ws_dev;
}
- list_inithead(&dev->memory_objects);
-
result = nvk_descriptor_table_init(dev, &dev->images,
8 * 4 /* tic entry size */,
1024, 1024 * 1024);
nvk_heap_finish(dev, &dev->shader_heap);
nvk_descriptor_table_finish(dev, &dev->samplers);
nvk_descriptor_table_finish(dev, &dev->images);
- assert(list_is_empty(&dev->memory_objects));
nouveau_ws_context_destroy(dev->ws_ctx);
nouveau_ws_device_destroy(dev->ws_dev);
vk_free(&dev->vk.alloc, dev);
struct nouveau_ws_device *ws_dev;
struct nouveau_ws_context *ws_ctx;
- /* Protected by nvk_device::mutex */
- struct list_head memory_objects;
-
struct nvk_descriptor_table images;
struct nvk_descriptor_table samplers;
struct nvk_heap shader_heap;
close(fd_info->fd);
}
- pthread_mutex_lock(&dev->mutex);
- list_addtail(&mem->link, &dev->memory_objects);
- pthread_mutex_unlock(&dev->mutex);
-
*mem_out = mem;
return VK_SUCCESS;
if (mem->map)
nouveau_ws_bo_unmap(mem->bo, mem->map);
- pthread_mutex_lock(&dev->mutex);
- list_del(&mem->link);
- pthread_mutex_unlock(&dev->mutex);
-
nouveau_ws_bo_destroy(mem->bo);
vk_device_memory_destroy(&dev->vk, pAllocator, &mem->vk);
struct nvk_device_memory {
struct vk_device_memory vk;
- struct list_head link;
-
-
struct nouveau_ws_bo *bo;
void *map;