mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 15:48:36 +02:00
anv/allocator: Use anv_device_release_bo in anv_block_pool_finish
This is left-over from the days where we didn't use BO pointers and had
them embedded and we didn't have a nice allocation API. Now that block
pools get their memory via anv_device_alloc_bo(), they really should be
using anv_device_release_bo() to tear it down. This is equivalent in
this case because anv_device_release_bo() does the following:
1. Decrements refcount. The pool holds the only reference so it will
proceed onto the clean-up steps
2. Unmaps it, if needed. This is the same as the tear-down code today
except anv_device_release_bo() will avoid doing an unmap if it's
been created via userptr. The current code probably unmaps the
userptr which is wrong but pretty harmless since it happens on a
tear-down path.
3. Unmaps the CCS range from the AUX-TT, if any. There is none, so
this is a no-op.
4. Frees the VA range if it's not pinned and doesn't have a fixed VA
assignment. These BOs always either have a fixed VA range (softpin)
or aren't pinned (relocations).
5. Closes the GEM handle. Same as the current code.
In short, anything created using the BO API should probably be destroyed
that way. We were getting away with hand-rolling it because this is a
simple case. Why did we do it this way? It dates back to before the
more formlized BO cache and BO API in ANV.
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13610>
This commit is contained in:
parent
0b2b9b49af
commit
1394e415b7
1 changed files with 2 additions and 3 deletions
|
|
@ -439,9 +439,8 @@ void
|
|||
anv_block_pool_finish(struct anv_block_pool *pool)
|
||||
{
|
||||
anv_block_pool_foreach_bo(bo, pool) {
|
||||
if (bo->map)
|
||||
anv_gem_munmap(pool->device, bo->map, bo->size);
|
||||
anv_gem_close(pool->device, bo->gem_handle);
|
||||
assert(bo->refcount == 1);
|
||||
anv_device_release_bo(pool->device, bo);
|
||||
}
|
||||
|
||||
struct anv_mmap_cleanup *cleanup;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue