mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 02:30:18 +01:00
winsys/amdgpu: track the amount of mapped memory
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
8276776e64
commit
1e04483c22
5 changed files with 26 additions and 1 deletions
|
|
@ -154,6 +154,8 @@ enum ring_type {
|
|||
enum radeon_value_id {
|
||||
RADEON_REQUESTED_VRAM_MEMORY,
|
||||
RADEON_REQUESTED_GTT_MEMORY,
|
||||
RADEON_MAPPED_VRAM,
|
||||
RADEON_MAPPED_GTT,
|
||||
RADEON_BUFFER_WAIT_TIME_NS,
|
||||
RADEON_TIMESTAMP,
|
||||
RADEON_NUM_CS_FLUSHES,
|
||||
|
|
|
|||
|
|
@ -256,8 +256,17 @@ static void *amdgpu_bo_map(struct pb_buffer *buf,
|
|||
/* Clear the cache and try again. */
|
||||
pb_cache_release_all_buffers(&bo->ws->bo_cache);
|
||||
r = amdgpu_bo_cpu_map(bo->bo, &cpu);
|
||||
if (r)
|
||||
return NULL;
|
||||
}
|
||||
return r ? NULL : cpu;
|
||||
|
||||
if (p_atomic_inc_return(&bo->map_count) == 1) {
|
||||
if (bo->initial_domain & RADEON_DOMAIN_VRAM)
|
||||
bo->ws->mapped_vram += bo->base.size;
|
||||
else
|
||||
bo->ws->mapped_gtt += bo->base.size;
|
||||
}
|
||||
return cpu;
|
||||
}
|
||||
|
||||
static void amdgpu_bo_unmap(struct pb_buffer *buf)
|
||||
|
|
@ -267,6 +276,13 @@ static void amdgpu_bo_unmap(struct pb_buffer *buf)
|
|||
if (bo->user_ptr)
|
||||
return;
|
||||
|
||||
if (p_atomic_dec_zero(&bo->map_count)) {
|
||||
if (bo->initial_domain & RADEON_DOMAIN_VRAM)
|
||||
bo->ws->mapped_vram -= bo->base.size;
|
||||
else
|
||||
bo->ws->mapped_gtt -= bo->base.size;
|
||||
}
|
||||
|
||||
amdgpu_bo_cpu_unmap(bo->bo);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ struct amdgpu_winsys_bo {
|
|||
void *user_ptr; /* from buffer_from_ptr */
|
||||
|
||||
amdgpu_bo_handle bo;
|
||||
int map_count;
|
||||
uint32_t unique_id;
|
||||
amdgpu_va_handle va_handle;
|
||||
uint64_t va;
|
||||
|
|
|
|||
|
|
@ -379,6 +379,10 @@ static uint64_t amdgpu_query_value(struct radeon_winsys *rws,
|
|||
return ws->allocated_vram;
|
||||
case RADEON_REQUESTED_GTT_MEMORY:
|
||||
return ws->allocated_gtt;
|
||||
case RADEON_MAPPED_VRAM:
|
||||
return ws->mapped_vram;
|
||||
case RADEON_MAPPED_GTT:
|
||||
return ws->mapped_gtt;
|
||||
case RADEON_BUFFER_WAIT_TIME_NS:
|
||||
return ws->buffer_wait_time;
|
||||
case RADEON_TIMESTAMP:
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ struct amdgpu_winsys {
|
|||
uint32_t next_bo_unique_id;
|
||||
uint64_t allocated_vram;
|
||||
uint64_t allocated_gtt;
|
||||
uint64_t mapped_vram;
|
||||
uint64_t mapped_gtt;
|
||||
uint64_t buffer_wait_time; /* time spent in buffer_wait in ns */
|
||||
uint64_t num_cs_flushes;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue