From f02278ae8735e013206ce32fc825aa05a47ec1cb Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 15 Jul 2019 09:08:32 -0700 Subject: [PATCH] panfrost: Implement panfrost_bo_cache_get Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/panfrost/pan_bo_cache.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/panfrost/pan_bo_cache.c b/src/gallium/drivers/panfrost/pan_bo_cache.c index 2b7a5d2..4cbec51 100644 --- a/src/gallium/drivers/panfrost/pan_bo_cache.c +++ b/src/gallium/drivers/panfrost/pan_bo_cache.c @@ -82,7 +82,22 @@ panfrost_bo_cache_fetch( struct panfrost_screen *screen, size_t size, uint32_t flags) { - /* Stub */ + struct list_head *bucket = pan_bucket(screen, size); + + /* TODO: Honour flags? */ + + /* Iterate the bucket looking for something suitable */ + list_for_each_entry_safe(struct panfrost_bo, entry, bucket, link) { + if (entry->size >= size) { + /* This one works, splice it out of the cache */ + list_del(&entry->link); + + /* Let's go! */ + return entry; + } + } + + /* We didn't find anything */ return NULL; } -- 2.7.4