[Mesa-dev] [PATCH 2/2] anv: Use build-id for pipeline cache UUID.

Jason Ekstrand jason at jlekstrand.net
Wed Feb 15 19:08:26 UTC 2017


Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

Thanks for getting this figured out!

On Tue, Feb 14, 2017 at 3:58 PM, Matt Turner <mattst88 at gmail.com> wrote:

> The --build-id=... ld flag has been present since binutils-2.18,
> released 28 Aug 2007.
> ---
>  src/intel/vulkan/Makefile.am  |  1 +
>  src/intel/vulkan/anv_device.c | 28 +++++++---------------------
>  2 files changed, 8 insertions(+), 21 deletions(-)
>
> diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am
> index 95f276e..4197b0e 100644
> --- a/src/intel/vulkan/Makefile.am
> +++ b/src/intel/vulkan/Makefile.am
> @@ -165,6 +165,7 @@ libvulkan_intel_la_LDFLAGS = \
>         -module \
>         -no-undefined \
>         -avoid-version \
> +       -Wl,--build-id=sha1 \
>         $(BSYMBOLIC) \
>         $(GC_SECTIONS) \
>         $(LD_NO_UNDEFINED)
> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
> index 91ee67f..b52287c 100644
> --- a/src/intel/vulkan/anv_device.c
> +++ b/src/intel/vulkan/anv_device.c
> @@ -21,18 +21,17 @@
>   * IN THE SOFTWARE.
>   */
>
> -#include <dlfcn.h>
>  #include <assert.h>
>  #include <stdbool.h>
>  #include <string.h>
>  #include <sys/mman.h>
> -#include <sys/stat.h>
>  #include <unistd.h>
>  #include <fcntl.h>
>
>  #include "anv_private.h"
>  #include "util/strtod.h"
>  #include "util/debug.h"
> +#include "util/build_id.h"
>
>  #include "genxml/gen7_pack.h"
>
> @@ -55,30 +54,17 @@ compiler_perf_log(void *data, const char *fmt, ...)
>  }
>
>  static bool
> -anv_get_function_timestamp(void *ptr, uint32_t* timestamp)
> -{
> -   Dl_info info;
> -   struct stat st;
> -   if (!dladdr(ptr, &info) || !info.dli_fname)
> -      return false;
> -
> -   if (stat(info.dli_fname, &st))
> -      return false;
> -
> -   *timestamp = st.st_mtim.tv_sec;
> -   return true;
> -}
> -
> -static bool
>  anv_device_get_cache_uuid(void *uuid)
>  {
> -   uint32_t timestamp;
> +   const struct build_id_note *note = build_id_find_nhdr("libvulkan_
> intel.so");
> +   if (!note)
> +      return false;
>
> -   memset(uuid, 0, VK_UUID_SIZE);
> -   if (!anv_get_function_timestamp(anv_device_get_cache_uuid,
> &timestamp))
> +   unsigned len = build_id_length(note);
> +   if (len < VK_UUID_SIZE)
>        return false;
>
> -   snprintf(uuid, VK_UUID_SIZE, "anv-%d", timestamp);
> +   build_id_read(note, uuid, VK_UUID_SIZE);
>     return true;
>  }
>
> --
> 2.10.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170215/bd4b2da5/attachment-0001.html>


More information about the mesa-dev mailing list