summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/amdgpu
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2016-07-29 21:39:00 +0200
committerMarek Olšák <marek.olsak@amd.com>2016-08-06 13:56:14 +0200
commit9646ae77992f895b481984c9f8861cc64501a4eb (patch)
tree96b7725afb0b1619a5d38435785dd9b93a6f1bdb /src/gallium/winsys/amdgpu
parent1c8f17599efe76239bc1cffef5db42e67cf4c900 (diff)
downloadexternal_mesa3d-9646ae77992f895b481984c9f8861cc64501a4eb.zip
external_mesa3d-9646ae77992f895b481984c9f8861cc64501a4eb.tar.gz
external_mesa3d-9646ae77992f895b481984c9f8861cc64501a4eb.tar.bz2
gallium/radeon/winsyses: expose per-IB used_vram and used_gart to drivers
The following patches will use this. Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/gallium/winsys/amdgpu')
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_cs.c17
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_cs.h2
2 files changed, 8 insertions, 11 deletions
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
index 35e1b48..1f2e926 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
@@ -343,9 +343,9 @@ static unsigned amdgpu_cs_add_buffer(struct radeon_winsys_cs *rcs,
priority, &added_domains);
if (added_domains & RADEON_DOMAIN_VRAM)
- cs->csc->used_vram += bo->base.size;
+ cs->main.base.used_vram += bo->base.size;
else if (added_domains & RADEON_DOMAIN_GTT)
- cs->csc->used_gart += bo->base.size;
+ cs->main.base.used_gart += bo->base.size;
return index;
}
@@ -571,8 +571,6 @@ static void amdgpu_cs_context_cleanup(struct amdgpu_cs_context *cs)
}
cs->num_buffers = 0;
- cs->used_gart = 0;
- cs->used_vram = 0;
amdgpu_fence_reference(&cs->fence, NULL);
for (i = 0; i < ARRAY_SIZE(cs->buffer_indices_hashlist); i++) {
@@ -790,8 +788,8 @@ static bool amdgpu_cs_memory_below_limit(struct radeon_winsys_cs *rcs,
struct amdgpu_cs *cs = amdgpu_cs(rcs);
struct amdgpu_winsys *ws = cs->ctx->ws;
- vram += cs->csc->used_vram;
- gtt += cs->csc->used_gart;
+ vram += cs->main.base.used_vram;
+ gtt += cs->main.base.used_gart;
/* Anything that goes above the VRAM size should go to GTT. */
if (vram > ws->info.vram_size)
@@ -803,9 +801,7 @@ static bool amdgpu_cs_memory_below_limit(struct radeon_winsys_cs *rcs,
static uint64_t amdgpu_cs_query_memory_usage(struct radeon_winsys_cs *rcs)
{
- struct amdgpu_cs_context *cs = amdgpu_cs(rcs)->csc;
-
- return cs->used_vram + cs->used_gart;
+ return rcs->used_vram + rcs->used_gart;
}
static unsigned amdgpu_cs_get_buffer_list(struct radeon_winsys_cs *rcs,
@@ -1073,6 +1069,9 @@ static int amdgpu_cs_flush(struct radeon_winsys_cs *rcs,
if (cs->const_preamble_ib.ib_mapped)
amdgpu_get_new_ib(&ws->base, cs, IB_CONST_PREAMBLE);
+ cs->main.base.used_gart = 0;
+ cs->main.base.used_vram = 0;
+
ws->num_cs_flushes++;
return error_code;
}
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h
index e80b333..9244043 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h
@@ -82,8 +82,6 @@ struct amdgpu_cs_context {
int buffer_indices_hashlist[4096];
- uint64_t used_vram;
- uint64_t used_gart;
unsigned max_dependencies;