summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/radeon
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2016-08-05 01:28:17 +0200
committerMarek Olšák <marek.olsak@amd.com>2016-08-10 01:11:10 +0200
commit645d395d9af74573ed09223720e799073d34b647 (patch)
tree0f9404e34d52e377f02b65624993c7af087c53d4 /src/gallium/winsys/radeon
parent1e04483c22e372aac8a664fe2b272b10aa774eea (diff)
downloadexternal_mesa3d-645d395d9af74573ed09223720e799073d34b647.zip
external_mesa3d-645d395d9af74573ed09223720e799073d34b647.tar.gz
external_mesa3d-645d395d9af74573ed09223720e799073d34b647.tar.bz2
winsys/radeon: track the amount of mapped memory
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/gallium/winsys/radeon')
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_bo.c13
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_winsys.c4
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_winsys.h2
3 files changed, 18 insertions, 1 deletions
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
index 897b536..56aab48 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
@@ -375,8 +375,13 @@ void *radeon_bo_do_map(struct radeon_bo *bo)
}
bo->ptr = ptr;
bo->map_count = 1;
- pipe_mutex_unlock(bo->map_mutex);
+ if (bo->initial_domain & RADEON_DOMAIN_VRAM)
+ bo->rws->mapped_vram += bo->base.size;
+ else
+ bo->rws->mapped_gtt += bo->base.size;
+
+ pipe_mutex_unlock(bo->map_mutex);
return bo->ptr;
}
@@ -479,6 +484,12 @@ static void radeon_bo_unmap(struct pb_buffer *_buf)
os_munmap(bo->ptr, bo->base.size);
bo->ptr = NULL;
+
+ if (bo->initial_domain & RADEON_DOMAIN_VRAM)
+ bo->rws->mapped_vram -= bo->base.size;
+ else
+ bo->rws->mapped_gtt -= bo->base.size;
+
pipe_mutex_unlock(bo->map_mutex);
}
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
index 1b32c37..b1cc3d5 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
@@ -603,6 +603,10 @@ static uint64_t radeon_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:
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h
index fdbaebe..27fbe90 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h
@@ -71,6 +71,8 @@ struct radeon_drm_winsys {
int num_cs; /* The number of command streams created. */
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;