[Mesa-dev] [PATCH 27/27] i965/brw_disk_cache: Support INTEL_SHADER_CACHE_TIMESTAMP debug override

Jordan Justen jordan.l.justen at intel.com
Sat Aug 19 07:44:43 UTC 2017


When making tweaks to the driver that should not affect the code
generation, the INTEL_SHADER_CACHE_TIMESTAMP can be set to override
the shader disk cache to use a consistent timestamp.

This will allow the shader cache entries to remain valid across driver
builds, but it should be used with caution.

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
---
 src/mesa/drivers/dri/i965/brw_disk_cache.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_disk_cache.c b/src/mesa/drivers/dri/i965/brw_disk_cache.c
index ef5380126a..bda40fad7a 100644
--- a/src/mesa/drivers/dri/i965/brw_disk_cache.c
+++ b/src/mesa/drivers/dri/i965/brw_disk_cache.c
@@ -670,7 +670,15 @@ brw_disk_cache_init(struct brw_context *brw)
    if (renderer == NULL)
        return;
 
-   const struct build_id_note *note = build_id_find_nhdr("i965_dri.so");
+   /* The INTEL_SHADER_CACHE_TIMESTAMP variable is for debug purposes. It can
+    * be used to override the timestamp to a consistent value, which will
+    * allow the cache entries to be reused when making small changes to the
+    * driver that should not affect the program generation.
+    */
+   const char *env_timestamp = getenv("INTEL_SHADER_CACHE_TIMESTAMP");
+
+   const struct build_id_note *note =
+      env_timestamp == NULL ? build_id_find_nhdr("i965_dri.so") : NULL;
    int id_size = note ? build_id_length(note) : 0;
    char *timestamp;
    if (id_size > 0) {
@@ -685,7 +693,7 @@ brw_disk_cache_init(struct brw_context *brw)
       for (i = 0; i < id_size; i++)
          snprintf(&timestamp[2 * i], 3, "%02x", data[i]);
    } else {
-      timestamp = strdup("now");
+      timestamp = strdup(env_timestamp ? env_timestamp : "now");
    }
    if (timestamp == NULL) {
       free(renderer);
-- 
2.14.0



More information about the mesa-dev mailing list