[Mesa-dev] [PATCH 1/7] anv: Add the pci_id into the shader cache UUID

Chad Versace chadversary at chromium.org
Mon Feb 27 18:28:26 UTC 2017


On Mon 27 Feb 2017, Jason Ekstrand wrote:
> This prevents a user from using a cache created on one hardware
> generation on a different one.  Of course, with Intel hardware, this
> requires moving their drive from one machine to another but it's still
> possible and we should prevent it.
> ---
>  src/intel/vulkan/anv_device.c | 21 ++++++++++++++++-----
>  1 file changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
> index fa09c9a..f9e2203 100644
> --- a/src/intel/vulkan/anv_device.c
> +++ b/src/intel/vulkan/anv_device.c
> @@ -32,6 +32,7 @@
>  #include "util/strtod.h"
>  #include "util/debug.h"
>  #include "util/build_id.h"
> +#include "util/mesa-sha1.h"
>  #include "util/vk_util.h"
>  
>  #include "genxml/gen7_pack.h"
> @@ -53,17 +54,27 @@ compiler_perf_log(void *data, const char *fmt, ...)
>  }
>  
>  static bool
> -anv_device_get_cache_uuid(void *uuid)
> +anv_device_get_cache_uuid(void *uuid, uint16_t pci_id)
>  {
>     const struct build_id_note *note = build_id_find_nhdr("libvulkan_intel.so");
>     if (!note)
>        return false;
>  
> -   unsigned len = build_id_length(note);
> -   if (len < VK_UUID_SIZE)
> +   unsigned build_id_len = build_id_length(note);
> +   if (build_id_len < 20) /* It should be a SHA-1 */
>        return false;
>  
> -   memcpy(uuid, build_id_data(note), VK_UUID_SIZE);
> +   uint8_t sha1[20];
> +   STATIC_ASSERT(VK_UUID_SIZE <= sizeof(sha1));
> +   struct mesa_sha1 *sha1_ctx = _mesa_sha1_init();
> +   if (sha1_ctx == NULL)
> +      return false;

Small nit. The code would be easier on the eyes if an empty line
separated the STATIC_ASSERT and the struct mesa_sha1 declaration.

Either way, patch 1 is
Reviewed-by: Chad Versace <chadversary at chromium.org>



More information about the mesa-dev mailing list