llvmpipe: add the interesting bit of cpu detection to the cache.
authorDave Airlie <airlied@redhat.com>
Sun, 23 May 2021 19:19:43 +0000 (05:19 +1000)
committerMarge Bot <eric+marge@anholt.net>
Thu, 3 Jun 2021 01:46:36 +0000 (01:46 +0000)
This should detect if someone changes CPU configuration that matters like in a VM

Reviewed-by: Emma Anholt <emma@anholt.net>
Fixes: 6c0c61cb48e8 ("llvmpipe: add infrastructure for disk cache support")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10946>

src/gallium/drivers/llvmpipe/lp_screen.c

index c568d58..c1d642b 100644 (file)
@@ -816,6 +816,17 @@ llvmpipe_get_timestamp(struct pipe_screen *_screen)
    return os_time_get_nano();
 }
 
+static void update_cache_sha1_cpu(struct mesa_sha1 *ctx)
+{
+   const struct util_cpu_caps_t *cpu_caps = util_get_cpu_caps();
+   /*
+    * Don't need the cpu cache affinity stuff. The rest
+    * is contained in first 5 dwords.
+    */
+   STATIC_ASSERT(offsetof(struct util_cpu_caps_t, num_L3_caches) == 5 * sizeof(uint32_t));
+   _mesa_sha1_update(ctx, cpu_caps, 5 * sizeof(uint32_t));
+}
+
 static void lp_disk_cache_create(struct llvmpipe_screen *screen)
 {
    struct mesa_sha1 ctx;
@@ -829,6 +840,7 @@ static void lp_disk_cache_create(struct llvmpipe_screen *screen)
       return;
 
    _mesa_sha1_update(&ctx, &gallivm_perf, sizeof(gallivm_perf));
+   update_cache_sha1_cpu(&ctx);
    _mesa_sha1_final(&ctx, sha1);
    disk_cache_format_hex_id(cache_id, sha1, 20 * 2);