aboutsummaryrefslogtreecommitdiffstats
path: root/amdgpu
diff options
context:
space:
mode:
authorChunming Zhou2018-02-08 00:35:26 -0600
committerChunming Zhou2018-02-08 00:35:47 -0600
commitd07be74a4afe9d22f987aca7e8e84cccaa210248 (patch)
tree612e5d23c3eed5d07d63bcedf2d16337e552f38f /amdgpu
parentbde3b9b689407eadd1cb0d9348a0fd7906c880e2 (diff)
downloadexternal-libdrm-d07be74a4afe9d22f987aca7e8e84cccaa210248.tar.gz
external-libdrm-d07be74a4afe9d22f987aca7e8e84cccaa210248.tar.xz
external-libdrm-d07be74a4afe9d22f987aca7e8e84cccaa210248.zip
amdgpu: fix inefficient vamgr algorithm
issue: UMD allocates top 4GB, but don't do anything, just reserve top 4GB space, but the performance of VP13 drops from 162fps to 99fps. root cause: our va hole list of vamgr is too long by time going. fix: reusing old hole as much as possible can make the list shortest. result: performance recovers as non-list path, next patch will remove non-list code path. Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Christian K├Ânig <christian.koenig@amd.com>
Diffstat (limited to 'amdgpu')
-rw-r--r--amdgpu/amdgpu_vamgr.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/amdgpu/amdgpu_vamgr.c b/amdgpu/amdgpu_vamgr.c
index ab425ef7..a2852b55 100644
--- a/amdgpu/amdgpu_vamgr.c
+++ b/amdgpu/amdgpu_vamgr.c
@@ -80,9 +80,7 @@ amdgpu_vamgr_find_va(struct amdgpu_bo_va_mgr *mgr, uint64_t size,
80 return AMDGPU_INVALID_VA_ADDRESS; 80 return AMDGPU_INVALID_VA_ADDRESS;
81 81
82 pthread_mutex_lock(&mgr->bo_va_mutex); 82 pthread_mutex_lock(&mgr->bo_va_mutex);
83 /* TODO: using more appropriate way to track the holes */ 83 LIST_FOR_EACH_ENTRY_SAFE_REV(hole, n, &mgr->va_holes, list) {
84 /* first look for a hole */
85 LIST_FOR_EACH_ENTRY_SAFE(hole, n, &mgr->va_holes, list) {
86 if (base_required) { 84 if (base_required) {
87 if (hole->offset > base_required || 85 if (hole->offset > base_required ||
88 (hole->offset + hole->size) < (base_required + size)) 86 (hole->offset + hole->size) < (base_required + size))