diff --git a/src/microsoft/spirv_to_dxil/meson.build b/src/microsoft/spirv_to_dxil/meson.build index c76d63c7f23..78d33c5825d 100644 --- a/src/microsoft/spirv_to_dxil/meson.build +++ b/src/microsoft/spirv_to_dxil/meson.build @@ -21,10 +21,13 @@ libspirv_to_dxil = both_libraries( 'spirv_to_dxil', - files( - 'spirv_to_dxil.c', - 'spirv_to_dxil.h', - ), + [ + files( + 'spirv_to_dxil.c', + 'spirv_to_dxil.h', + ), + sha1_h, + ], vs_module_defs : 'spirv_to_dxil.def', dependencies : [idep_nir, idep_libdxil_compiler], include_directories : [inc_include, inc_src, inc_compiler, inc_gallium], diff --git a/src/microsoft/spirv_to_dxil/spirv_to_dxil.c b/src/microsoft/spirv_to_dxil/spirv_to_dxil.c index f010007d950..b7f43144386 100644 --- a/src/microsoft/spirv_to_dxil/spirv_to_dxil.c +++ b/src/microsoft/spirv_to_dxil/spirv_to_dxil.c @@ -28,6 +28,8 @@ #include "spirv/nir_spirv.h" #include "util/blob.h" +#include "git_sha1.h" + bool spirv_to_dxil(const uint32_t *words, size_t word_count, struct dxil_spirv_specialization *specializations, @@ -173,3 +175,14 @@ spirv_to_dxil_free(void* buffer) { free(buffer); } + +uint64_t +spirv_to_dxil_get_version() +{ + const char sha1[] = MESA_GIT_SHA1; + const char* dash = strchr(sha1, '-'); + if (dash) { + return strtoull(dash + 1, NULL, 16); + } + return 0; +} diff --git a/src/microsoft/spirv_to_dxil/spirv_to_dxil.def b/src/microsoft/spirv_to_dxil/spirv_to_dxil.def index 5243f56e6c7..62851f2160b 100644 --- a/src/microsoft/spirv_to_dxil/spirv_to_dxil.def +++ b/src/microsoft/spirv_to_dxil/spirv_to_dxil.def @@ -1,3 +1,4 @@ EXPORTS spirv_to_dxil spirv_to_dxil_free + spirv_to_dxil_get_version diff --git a/src/microsoft/spirv_to_dxil/spirv_to_dxil.h b/src/microsoft/spirv_to_dxil/spirv_to_dxil.h index 655d6389bac..d19e662fe39 100644 --- a/src/microsoft/spirv_to_dxil/spirv_to_dxil.h +++ b/src/microsoft/spirv_to_dxil/spirv_to_dxil.h @@ -95,6 +95,9 @@ spirv_to_dxil(const uint32_t* words, void spirv_to_dxil_free(void* buffer); +uint64_t +spirv_to_dxil_get_version(); + #ifdef __cplusplus } #endif