X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fetnaviv%2Fdrm%2Fetnaviv_bo.c;h=0ec64b780f5d2fb1f4afefc8486faffc0e50a420;hp=ccf5da7c8c7ae7c4978b9ba7b22ff7351e9f7fe2;hb=0bdf5420f1ef7174fc81f57c307cd446bb673fc8;hpb=e5cc66dfad0a811338ef088b9b4be17cadc01dea diff --git a/src/etnaviv/drm/etnaviv_bo.c b/src/etnaviv/drm/etnaviv_bo.c index ccf5da7c8c7..0ec64b780f5 100644 --- a/src/etnaviv/drm/etnaviv_bo.c +++ b/src/etnaviv/drm/etnaviv_bo.c @@ -46,6 +46,9 @@ void _etna_bo_del(struct etna_bo *bo) { VG_BO_FREE(bo); + if (bo->va) + util_vma_heap_free(&bo->dev->address_space, bo->va, bo->size); + if (bo->map) os_munmap(bo->map, bo->size); @@ -106,6 +109,9 @@ static struct etna_bo *bo_from_handle(struct etna_device *dev, /* add ourselves to the handle table: */ _mesa_hash_table_insert(dev->handle_table, &bo->handle, bo); + if (dev->use_softpin) + bo->va = util_vma_heap_alloc(&dev->address_space, bo->size, 4096); + return bo; } @@ -319,6 +325,11 @@ uint32_t etna_bo_size(struct etna_bo *bo) return bo->size; } +uint32_t etna_bo_gpu_va(struct etna_bo *bo) +{ + return bo->va; +} + void *etna_bo_map(struct etna_bo *bo) { if (!bo->map) {