anv/bo_pool: Allow freeing BOs where the anv_bo is in the BO itself

This commit is contained in:
Jason Ekstrand
2016-03-07 14:56:58 -08:00
parent 181b142fbd
commit 8c2b9d1529

View File

@@ -853,11 +853,13 @@ anv_bo_pool_alloc(struct anv_bo_pool *pool, struct anv_bo *bo)
} }
void void
anv_bo_pool_free(struct anv_bo_pool *pool, const struct anv_bo *bo) anv_bo_pool_free(struct anv_bo_pool *pool, const struct anv_bo *bo_in)
{ {
struct bo_pool_bo_link *link = bo->map; /* Make a copy in case the anv_bo happens to be storred in the BO */
link->bo = *bo; struct anv_bo bo = *bo_in;
struct bo_pool_bo_link *link = bo.map;
link->bo = bo;
VG(VALGRIND_MEMPOOL_FREE(pool, bo->map)); VG(VALGRIND_MEMPOOL_FREE(pool, bo.map));
anv_ptr_free_list_push(&pool->free_list, link); anv_ptr_free_list_push(&pool->free_list, link);
} }