[Mesa-dev] [PATCH 03/15] pb_cache: call os_time_get outside of the loop
Marek Olšák
maraeo at gmail.com
Sat Jan 6 11:12:40 UTC 2018
From: Marek Olšák <marek.olsak at amd.com>
---
src/gallium/auxiliary/pipebuffer/pb_cache.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/gallium/auxiliary/pipebuffer/pb_cache.c b/src/gallium/auxiliary/pipebuffer/pb_cache.c
index b67e54b..dd479ae 100644
--- a/src/gallium/auxiliary/pipebuffer/pb_cache.c
+++ b/src/gallium/auxiliary/pipebuffer/pb_cache.c
@@ -47,34 +47,32 @@ destroy_buffer_locked(struct pb_cache_entry *entry)
--mgr->num_buffers;
mgr->cache_size -= buf->size;
}
mgr->destroy_buffer(buf);
}
/**
* Free as many cache buffers from the list head as possible.
*/
static void
-release_expired_buffers_locked(struct list_head *cache)
+release_expired_buffers_locked(struct list_head *cache,
+ int64_t current_time)
{
struct list_head *curr, *next;
struct pb_cache_entry *entry;
- int64_t now;
-
- now = os_time_get();
curr = cache->next;
next = curr->next;
while (curr != cache) {
entry = LIST_ENTRY(struct pb_cache_entry, curr, head);
- if (!os_time_timeout(entry->start, entry->end, now))
+ if (!os_time_timeout(entry->start, entry->end, current_time))
break;
destroy_buffer_locked(entry);
curr = next;
next = curr->next;
}
}
/**
@@ -85,22 +83,24 @@ void
pb_cache_add_buffer(struct pb_cache_entry *entry)
{
struct pb_cache *mgr = entry->mgr;
struct list_head *cache = &mgr->buckets[entry->bucket_index];
struct pb_buffer *buf = entry->buffer;
unsigned i;
mtx_lock(&mgr->mutex);
assert(!pipe_is_referenced(&buf->reference));
+ int64_t current_time = os_time_get();
+
for (i = 0; i < ARRAY_SIZE(mgr->buckets); i++)
- release_expired_buffers_locked(&mgr->buckets[i]);
+ release_expired_buffers_locked(&mgr->buckets[i], current_time);
/* Directly release any buffer that exceeds the limit. */
if (mgr->cache_size + buf->size > mgr->max_cache_size) {
mgr->destroy_buffer(buf);
mtx_unlock(&mgr->mutex);
return;
}
entry->start = os_time_get();
entry->end = entry->start + mgr->usecs;
--
2.7.4
More information about the mesa-dev
mailing list