xf86-video-intel: 4 commits - src/sna/kgem.c
Chris Wilson
ickle at kemper.freedesktop.org
Tue Apr 10 04:07:40 PDT 2012
src/sna/kgem.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
New commits:
commit 9cc6f7ccc55cc11f47b3b7d626c9f5a7c1327d57
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Apr 10 12:06:56 2012 +0100
sna: Release the freed bo cache upon expire
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 581e3c8..2a8b3cd 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1968,6 +1968,12 @@ bool kgem_expire_cache(struct kgem *kgem)
bool idle;
unsigned int i;
+ while (__kgem_freed_bo) {
+ bo = __kgem_freed_bo;
+ __kgem_freed_bo = *(struct kgem_bo **)bo;
+ free(bo);
+ }
+
kgem_retire(kgem);
if (kgem->wedged)
kgem_cleanup(kgem);
commit 102d11906a672140bac099e7bd1b35345d13a2fc
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Apr 9 22:54:51 2012 +0100
sna: Check for an inactive partial buffer to reuse after retiring requests
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 470cefb..581e3c8 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -3575,7 +3575,7 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem,
}
if (flags & KGEM_BUFFER_WRITE) {
- list_for_each_entry_reverse(bo, &kgem->inactive_partials, base.list) {
+ do list_for_each_entry_reverse(bo, &kgem->inactive_partials, base.list) {
assert(bo->base.io);
assert(bo->base.refcnt == 1);
@@ -3595,7 +3595,7 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem,
bo->used = size;
list_move(&bo->base.list, &kgem->active_partials);
goto done;
- }
+ } while (kgem_retire(kgem));
}
#if !DBG_NO_MAP_UPLOAD
commit e2fb2421d8f5c07925d1699673aa4b1dd6c6b22c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Apr 9 22:54:15 2012 +0100
sna: Release partial buffers during cache expiration
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 6dd1871..470cefb 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1925,6 +1925,7 @@ void kgem_throttle(struct kgem *kgem)
static void kgem_expire_partial(struct kgem *kgem)
{
+ kgem_retire_partials(kgem);
while (!list_is_empty(&kgem->inactive_partials)) {
struct kgem_partial_bo *bo =
list_first_entry(&kgem->inactive_partials,
commit 333fdcad8677675a4758223c1a980c90d970ee42
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Apr 9 22:53:31 2012 +0100
sna: Repeat expire whilst there remaining outstanding requests
Do not allow the cache expiration to finish if we are still running
requests.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index dde9d1d..6dd1871 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1979,7 +1979,7 @@ bool kgem_expire_cache(struct kgem *kgem)
time(&now);
expire = 0;
- idle = true;
+ idle = !kgem->need_retire;
for (i = 0; i < ARRAY_SIZE(kgem->inactive); i++) {
idle &= list_is_empty(&kgem->inactive[i]);
list_for_each_entry(bo, &kgem->inactive[i], list) {
@@ -1999,7 +1999,7 @@ bool kgem_expire_cache(struct kgem *kgem)
if (expire == 0)
return true;
- idle = true;
+ idle = !kgem->need_retire;
for (i = 0; i < ARRAY_SIZE(kgem->inactive); i++) {
struct list preserve;
More information about the xorg-commit
mailing list