diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c index fc8e0dda07b..9f022927212 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c @@ -614,12 +614,6 @@ error_bo_alloc: bool amdgpu_bo_can_reclaim(struct pb_buffer *_buf) { - struct amdgpu_winsys_bo *bo = amdgpu_winsys_bo(_buf); - - if (amdgpu_bo_is_referenced_by_any_cs(bo)) { - return false; - } - return amdgpu_bo_wait(_buf, 0, RADEON_USAGE_READWRITE); } diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h index c9b1cb6a517..99bedcadf82 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h @@ -93,9 +93,6 @@ struct amdgpu_winsys_bo { uint64_t va; simple_mtx_t lock; - /* how many command streams is this bo referenced in? */ - int num_cs_references; - /* how many command streams, which are being emitted in a separate * thread, is this bo referenced in? */ volatile int num_active_ioctls; diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c index 4a2cf2cae89..baeaa649ccc 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c @@ -489,7 +489,6 @@ amdgpu_do_add_real_buffer(struct amdgpu_cs_context *cs, struct amdgpu_winsys_bo memset(buffer, 0, sizeof(*buffer)); amdgpu_winsys_bo_reference(&buffer->bo, bo); - p_atomic_inc(&bo->num_cs_references); cs->num_real_buffers++; return idx; @@ -560,7 +559,6 @@ static int amdgpu_lookup_or_add_slab_buffer(struct radeon_cmdbuf *rcs, memset(buffer, 0, sizeof(*buffer)); amdgpu_winsys_bo_reference(&buffer->bo, bo); buffer->u.slab.real_idx = real_idx; - p_atomic_inc(&bo->num_cs_references); cs->num_slab_buffers++; hash = bo->unique_id & (ARRAY_SIZE(cs->buffer_indices_hashlist)-1); @@ -604,7 +602,6 @@ static int amdgpu_lookup_or_add_sparse_buffer(struct radeon_cmdbuf *rcs, memset(buffer, 0, sizeof(*buffer)); amdgpu_winsys_bo_reference(&buffer->bo, bo); - p_atomic_inc(&bo->num_cs_references); cs->num_sparse_buffers++; hash = bo->unique_id & (ARRAY_SIZE(cs->buffer_indices_hashlist)-1); @@ -914,15 +911,12 @@ static void amdgpu_cs_context_cleanup(struct amdgpu_cs_context *cs) unsigned i; for (i = 0; i < cs->num_real_buffers; i++) { - p_atomic_dec(&cs->real_buffers[i].bo->num_cs_references); amdgpu_winsys_bo_reference(&cs->real_buffers[i].bo, NULL); } for (i = 0; i < cs->num_slab_buffers; i++) { - p_atomic_dec(&cs->slab_buffers[i].bo->num_cs_references); amdgpu_winsys_bo_reference(&cs->slab_buffers[i].bo, NULL); } for (i = 0; i < cs->num_sparse_buffers; i++) { - p_atomic_dec(&cs->sparse_buffers[i].bo->num_cs_references); amdgpu_winsys_bo_reference(&cs->sparse_buffers[i].bo, NULL); } cleanup_fence_list(&cs->fence_dependencies); diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h index c9c2bb62b22..e44c74fed2a 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h @@ -225,9 +225,7 @@ static inline bool amdgpu_bo_is_referenced_by_cs(struct amdgpu_cs *cs, struct amdgpu_winsys_bo *bo) { - int num_refs = bo->num_cs_references; - return num_refs == bo->ws->num_cs || - (num_refs && amdgpu_lookup_buffer_any_type(cs->csc, bo) != -1); + return amdgpu_lookup_buffer_any_type(cs->csc, bo) != -1; } static inline bool @@ -238,9 +236,6 @@ amdgpu_bo_is_referenced_by_cs_with_usage(struct amdgpu_cs *cs, int index; struct amdgpu_cs_buffer *buffer; - if (!bo->num_cs_references) - return false; - index = amdgpu_lookup_buffer_any_type(cs->csc, bo); if (index == -1) return false; @@ -252,12 +247,6 @@ amdgpu_bo_is_referenced_by_cs_with_usage(struct amdgpu_cs *cs, return (buffer->usage & usage) != 0; } -static inline bool -amdgpu_bo_is_referenced_by_any_cs(struct amdgpu_winsys_bo *bo) -{ - return bo->num_cs_references != 0; -} - bool amdgpu_fence_wait(struct pipe_fence_handle *fence, uint64_t timeout, bool absolute); void amdgpu_add_fences(struct amdgpu_winsys_bo *bo,