aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2016-06-21 17:43:35 +0100
committerEmil Velikov <[email protected]>2016-07-05 12:15:23 +0100
commitaddb099ce83c9b9909966a5cd364b85cedef1ee1 (patch)
tree07e6d1cfca0b14da7bb0e90288f5cd2146c2cbb5
parentf98530b73960af1cb17da80159350fbe51352fea (diff)
anv: use cache uuid based on the build timestamp.
Do not rely on the git sha1: - its current truncated form makes it less unique - it does not attribute for local (Vulkand or otherwise) changes Use a timestamp produced at the time of build. It's perfectly unique, unless someone explicitly thinkers with their system clock. Even then chances of producing the exact same one are very small, if not zero. v2: Remove .tmp rule. Its not needed since we want for the header to be regenerated on each time we call make (Eric). v3: - Honour SOURCE_DATE_EPOCH, to make the build reproducible (Michel) - Replace the generated header with a define, to prevent needless builds on consecutive `make' and/or `make install' calls. (Dave) v4: - Keep the timestamp generation at make time. (Jason) v5: - Ensure that file is regenerated on incremental builds. Cc: Michel Dänzer <[email protected]> Cc: Dave Airlie <[email protected]> Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--configure.ac2
-rw-r--r--src/intel/vulkan/Makefile.am10
-rw-r--r--src/intel/vulkan/anv_device.c4
3 files changed, 13 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 8321e8eb21d..3d32c53e2fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2620,6 +2620,8 @@ AC_SUBST([XA_MINOR], $XA_MINOR)
AC_SUBST([XA_TINY], $XA_TINY)
AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
+AC_SUBST([TIMESTAMP_CMD], '`test $(SOURCE_DATE_EPOCH) && echo $(SOURCE_DATE_EPOCH) || date +%s`')
+
AC_ARG_ENABLE(valgrind,
[AS_HELP_STRING([--enable-valgrind],
[Build mesa with valgrind support (default: auto)])],
diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am
index 4d9ff908bbc..3f4902022e8 100644
--- a/src/intel/vulkan/Makefile.am
+++ b/src/intel/vulkan/Makefile.am
@@ -131,8 +131,16 @@ anv_entrypoints.c : anv_entrypoints_gen.py $(vulkan_include_HEADERS)
$(AM_V_GEN) cat $(vulkan_include_HEADERS) |\
$(PYTHON2) $(srcdir)/anv_entrypoints_gen.py code > $@
+.PHONY: anv_timestamp.h
+
+anv_timestamp.h:
+ @echo "Updating anv_timestamp.h"
+ $(AM_V_GEN) echo "#define ANV_TIMESTAMP \"$(TIMESTAMP_CMD)\"" > $@
+
+anv_device.$(OBJEXT): anv_timestamp.h
+
BUILT_SOURCES = $(VULKAN_GENERATED_FILES)
-CLEANFILES = $(BUILT_SOURCES) dev_icd.json
+CLEANFILES = $(BUILT_SOURCES) dev_icd.json anv_timestamp.h
EXTRA_DIST = \
$(top_srcdir)/include/vulkan/vk_icd.h \
anv_entrypoints_gen.py \
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index ea8e875ad1e..dd941b6afeb 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -28,7 +28,7 @@
#include <fcntl.h>
#include "anv_private.h"
-#include "git_sha1.h"
+#include "anv_timestamp.h"
#include "util/strtod.h"
#include "util/debug.h"
@@ -426,7 +426,7 @@ void
anv_device_get_cache_uuid(void *uuid)
{
memset(uuid, 0, VK_UUID_SIZE);
- snprintf(uuid, VK_UUID_SIZE, "anv-%s", MESA_GIT_SHA1 + 4);
+ snprintf(uuid, VK_UUID_SIZE, "anv-%s", ANV_TIMESTAMP);
}
void anv_GetPhysicalDeviceProperties(