diff options
author | Chunming Zhou <david1.zhou@amd.com> | 2018-02-08 14:35:26 +0800 |
---|---|---|
committer | Chunming Zhou <david1.zhou@amd.com> | 2018-02-08 14:35:47 +0800 |
commit | d07be74a4afe9d22f987aca7e8e84cccaa210248 (patch) | |
tree | 612e5d23c3eed5d07d63bcedf2d16337e552f38f /amdgpu/amdgpu_vamgr.c | |
parent | bde3b9b689407eadd1cb0d9348a0fd7906c880e2 (diff) | |
download | libdrm-d07be74a4afe9d22f987aca7e8e84cccaa210248.tar.gz libdrm-d07be74a4afe9d22f987aca7e8e84cccaa210248.tar.bz2 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/amdgpu_vamgr.c')
-rw-r--r-- | amdgpu/amdgpu_vamgr.c | 4 |
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, return AMDGPU_INVALID_VA_ADDRESS; pthread_mutex_lock(&mgr->bo_va_mutex); - /* TODO: using more appropriate way to track the holes */ - /* first look for a hole */ - LIST_FOR_EACH_ENTRY_SAFE(hole, n, &mgr->va_holes, list) { + LIST_FOR_EACH_ENTRY_SAFE_REV(hole, n, &mgr->va_holes, list) { if (base_required) { if (hole->offset > base_required || (hole->offset + hole->size) < (base_required + size)) |