On 13/03/17 12:01, Timothy Arceri wrote:
This should help reduce any overhead added by the shader cache
when programs are not found in the cache.

To avoid creating any special function just for the sake of the
tests we add a one second delay whenever we call dick_cache_put()
to give it time to finish.
---
 src/compiler/glsl/tests/cache_test.c | 49 +++++++++++++++++++++++++++++++-----
 src/util/disk_cache.c                | 41 ++++++++++++++++++++----------
 2 files changed, 71 insertions(+), 19 deletions(-)

diff --git a/src/compiler/glsl/tests/cache_test.c 
b/src/compiler/glsl/tests/cache_test.c
index 6451e65..f8259e0 100644
--- a/src/compiler/glsl/tests/cache_test.c
+++ b/src/compiler/glsl/tests/cache_test.c
@@ -25,20 +25,21 @@

 #include <stdio.h>
 #include <stdlib.h>
 #include <stdbool.h>
 #include <string.h>
 #include <ftw.h>
 #include <errno.h>
 #include <stdarg.h>
 #include <inttypes.h>
 #include <limits.h>
+#include <time.h>
 #include <unistd.h>

 #include "util/mesa-sha1.h"
 #include "util/disk_cache.h"

 bool error = false;

 #ifdef ENABLE_SHADER_CACHE

 static void
@@ -224,20 +225,27 @@ does_cache_contain(struct disk_cache *cache, cache_key 
key)

    if (result) {
       free(result);
       return true;
    }

    return false;
 }

 static void
+wait_one_second()
+{
+    unsigned wait_time = time(0) + 1;
+    while (time(0) < wait_time);
+}
+
+static void
 test_put_and_get(void)
 {
    struct disk_cache *cache;
    /* If the text of this blob is changed, then blob_key_byte_zero
     * also needs to be updated.
     */
    char blob[] = "This is a blob of thirty-seven bytes";
    uint8_t blob_key[20];
    uint8_t blob_key_byte_zero = 0xca;
    char string[] = "While this string has thirty-four";
@@ -253,35 +261,49 @@ test_put_and_get(void)
    _mesa_sha1_compute(blob, sizeof(blob), blob_key);

    /* Ensure that disk_cache_get returns nothing before anything is added. */
    result = disk_cache_get(cache, blob_key, &size);
    expect_null(result, "disk_cache_get with non-existent item (pointer)");
    expect_equal(size, 0, "disk_cache_get with non-existent item (size)");

    /* Simple test of put and get. */
    disk_cache_put(cache, blob_key, blob, sizeof(blob), NULL);

+   /* disk_cache_put() hands things off to a thread give it some time to
+    * finsih.

I've fixed these typos in finish locally.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to