diff options
author | Marek Olšák <marek.olsak@amd.com> | 2021-03-23 01:31:39 -0400 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-04-06 22:31:15 +0000 |
commit | 6c6a39682ebdacbc978bb64467b7c32dab2fb736 (patch) | |
tree | ed357ecd025f7b01749cdbf6651a52fc8cfdd9e8 /src/gallium/winsys/amdgpu/drm | |
parent | 33b2daab1a15c6acd61f110756ce7b90f4d8f645 (diff) |
gallium/pb: pass an optional winsys pointer to the buffer destroy function
This will allow removing the winsys pointer from buffers.
Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9809>
Diffstat (limited to 'src/gallium/winsys/amdgpu/drm')
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_bo.c | 14 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_bo.h | 4 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 2 |
3 files changed, 10 insertions, 10 deletions
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c index abf1e7d75a9..cd773f3231a 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c @@ -169,7 +169,7 @@ static void amdgpu_bo_remove_fences(struct amdgpu_winsys_bo *bo) bo->max_fences = 0; } -void amdgpu_bo_destroy(struct pb_buffer *_buf) +void amdgpu_bo_destroy(void *winsys, struct pb_buffer *_buf) { struct amdgpu_winsys_bo *bo = amdgpu_winsys_bo(_buf); struct amdgpu_screen_winsys *sws_iter; @@ -231,7 +231,7 @@ void amdgpu_bo_destroy(struct pb_buffer *_buf) FREE(bo); } -static void amdgpu_bo_destroy_or_cache(struct pb_buffer *_buf) +static void amdgpu_bo_destroy_or_cache(void *winsys, struct pb_buffer *_buf) { struct amdgpu_winsys_bo *bo = amdgpu_winsys_bo(_buf); @@ -240,7 +240,7 @@ static void amdgpu_bo_destroy_or_cache(struct pb_buffer *_buf) if (bo->u.real.use_reusable_pool) pb_cache_add_buffer(bo->cache_entry); else - amdgpu_bo_destroy(_buf); + amdgpu_bo_destroy(winsys, _buf); } static void amdgpu_clean_up_buffer_managers(struct amdgpu_winsys *ws) @@ -620,7 +620,7 @@ error_bo_alloc: return NULL; } -bool amdgpu_bo_can_reclaim(struct pb_buffer *_buf) +bool amdgpu_bo_can_reclaim(void *winsys, struct pb_buffer *_buf) { return amdgpu_bo_wait(_buf, 0, RADEON_USAGE_READWRITE); } @@ -629,7 +629,7 @@ bool amdgpu_bo_can_reclaim_slab(void *priv, struct pb_slab_entry *entry) { struct amdgpu_winsys_bo *bo = container_of(entry, struct amdgpu_winsys_bo, u.slab.entry); - return amdgpu_bo_can_reclaim(&bo->base); + return amdgpu_bo_can_reclaim(NULL, &bo->base); } static struct pb_slabs *get_slabs(struct amdgpu_winsys *ws, uint64_t size, @@ -658,7 +658,7 @@ static unsigned get_slab_wasted_size(struct amdgpu_winsys_bo *bo) return bo->u.slab.entry.entry_size - bo->base.size; } -static void amdgpu_bo_slab_destroy(struct pb_buffer *_buf) +static void amdgpu_bo_slab_destroy(void *winsys, struct pb_buffer *_buf) { struct amdgpu_winsys_bo *bo = amdgpu_winsys_bo(_buf); @@ -1090,7 +1090,7 @@ sparse_backing_free(struct amdgpu_winsys_bo *bo, return true; } -static void amdgpu_bo_sparse_destroy(struct pb_buffer *_buf) +static void amdgpu_bo_sparse_destroy(void *winsys, struct pb_buffer *_buf) { struct amdgpu_winsys_bo *bo = amdgpu_winsys_bo(_buf); int r; diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h index cdd0ffda466..9dd5bb6d523 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h @@ -119,13 +119,13 @@ struct amdgpu_slab { struct amdgpu_winsys_bo *entries; }; -bool amdgpu_bo_can_reclaim(struct pb_buffer *_buf); +bool amdgpu_bo_can_reclaim(void *winsys, struct pb_buffer *_buf); struct pb_buffer *amdgpu_bo_create(struct amdgpu_winsys *ws, uint64_t size, unsigned alignment, enum radeon_bo_domain domain, enum radeon_bo_flag flags); -void amdgpu_bo_destroy(struct pb_buffer *_buf); +void amdgpu_bo_destroy(void *winsys, struct pb_buffer *_buf); void *amdgpu_bo_map(struct pb_buffer *buf, struct radeon_cmdbuf *rcs, enum pipe_map_flags usage); diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index 88bff45f7b6..2f91a377d14 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -442,7 +442,7 @@ amdgpu_winsys_create(int fd, const struct pipe_screen_config *config, /* Create managers. */ pb_cache_init(&aws->bo_cache, RADEON_MAX_CACHED_HEAPS, 500000, aws->check_vm ? 1.0f : 2.0f, 0, - (aws->info.vram_size + aws->info.gart_size) / 8, + (aws->info.vram_size + aws->info.gart_size) / 8, NULL, amdgpu_bo_destroy, amdgpu_bo_can_reclaim); unsigned min_slab_order = 8; /* 256 bytes */ |