Module: Mesa
Branch: master
Commit: e2c4435b078a1471b044219552873a54b1817bac
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e2c4435b078a1471b044219552873a54b1817bac

Author: Timothy Arceri <tarc...@itsqueeze.com>
Date:   Thu Mar  9 10:51:01 2017 +1100

util/disk_cache: add thread queue to disk cache

Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Reviewed-by: Grazvydas Ignotas <nota...@gmail.com>

---

 src/util/disk_cache.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
index facdcec..19b593b 100644
--- a/src/util/disk_cache.c
+++ b/src/util/disk_cache.c
@@ -41,6 +41,7 @@
 
 #include "util/crc32.h"
 #include "util/u_atomic.h"
+#include "util/u_queue.h"
 #include "util/mesa-sha1.h"
 #include "util/ralloc.h"
 #include "main/errors.h"
@@ -60,6 +61,9 @@ struct disk_cache {
    /* The path to the cache directory. */
    char *path;
 
+   /* Thread queue for compressing and writing cache entries to disk */
+   struct util_queue cache_queue;
+
    /* A pointer to the mmapped index file within the cache directory. */
    uint8_t *index_mmap;
    size_t index_mmap_size;
@@ -377,6 +381,14 @@ disk_cache_create(const char *gpu_name, const char 
*timestamp)
 
    cache->max_size = max_size;
 
+   /* A limit of 32 jobs was choosen as observations of Deus Ex start-up times
+    * showed that we reached at most 11 jobs on an Intel i5-6400 CPU@2.70GHz
+    * (a fairly modest desktop CPU). 1 thread was chosen because we don't
+    * really care about getting things to disk quickly just that it's not
+    * blocking other tasks.
+    */
+   util_queue_init(&cache->cache_queue, "disk_cache", 32, 1);
+
    ralloc_free(local);
 
    return cache;
@@ -394,8 +406,10 @@ disk_cache_create(const char *gpu_name, const char 
*timestamp)
 void
 disk_cache_destroy(struct disk_cache *cache)
 {
-   if (cache)
+   if (cache) {
+      util_queue_destroy(&cache->cache_queue);
       munmap(cache->index_mmap, cache->index_mmap_size);
+   }
 
    ralloc_free(cache);
 }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to