From 8d5944199d0d76ef506529e9b13c2e223756a53e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 17 Jul 2016 01:27:08 +0200 Subject: [PATCH] gallium/pb_cache: reduce the number of pointer dereferences MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/pipebuffer/pb_cache.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/gallium/auxiliary/pipebuffer/pb_cache.c b/src/gallium/auxiliary/pipebuffer/pb_cache.c index 664867befef..a1ca678833e 100644 --- a/src/gallium/auxiliary/pipebuffer/pb_cache.c +++ b/src/gallium/auxiliary/pipebuffer/pb_cache.c @@ -38,15 +38,16 @@ static void destroy_buffer_locked(struct pb_cache_entry *entry) { struct pb_cache *mgr = entry->mgr; + struct pb_buffer *buf = entry->buffer; - assert(!pipe_is_referenced(&entry->buffer->reference)); + assert(!pipe_is_referenced(&buf->reference)); if (entry->head.next) { LIST_DEL(&entry->head); assert(mgr->num_buffers); --mgr->num_buffers; - mgr->cache_size -= entry->buffer->size; + mgr->cache_size -= buf->size; } - entry->mgr->destroy_buffer(entry->buffer); + mgr->destroy_buffer(buf); } /** @@ -85,17 +86,18 @@ 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; pipe_mutex_lock(mgr->mutex); - assert(!pipe_is_referenced(&entry->buffer->reference)); + assert(!pipe_is_referenced(&buf->reference)); for (i = 0; i < ARRAY_SIZE(mgr->buckets); i++) release_expired_buffers_locked(&mgr->buckets[i]); /* Directly release any buffer that exceeds the limit. */ - if (mgr->cache_size + entry->buffer->size > mgr->max_cache_size) { - entry->mgr->destroy_buffer(entry->buffer); + if (mgr->cache_size + buf->size > mgr->max_cache_size) { + mgr->destroy_buffer(buf); pipe_mutex_unlock(mgr->mutex); return; } @@ -104,7 +106,7 @@ pb_cache_add_buffer(struct pb_cache_entry *entry) entry->end = entry->start + mgr->usecs; LIST_ADDTAIL(&entry->head, cache); ++mgr->num_buffers; - mgr->cache_size += entry->buffer->size; + mgr->cache_size += buf->size; pipe_mutex_unlock(mgr->mutex); } -- 2.30.2