On Tue 14 Feb 2017, Matt Turner wrote:
> static bool > -anv_get_function_timestamp(void *ptr, uint32_t* timestamp) > +anv_device_get_cache_uuid(void *uuid) > { > - Dl_info info; > - struct stat st; > - if (!dladdr(ptr, &info) || !info.dli_fname) > + const struct note *note = build_id_find_nhdr("libvulkan_intel.so"); > + if (!note) > return false; > > - if (stat(info.dli_fname, &st)) > + unsigned len = build_id_length(note); > + if (len < VK_UUID_SIZE) > return false; > > - *timestamp = st.st_mtim.tv_sec; > - return true; > -} > - > -static bool > -anv_device_get_cache_uuid(void *uuid) > -{ > - uint32_t timestamp; > - > - memset(uuid, 0, VK_UUID_SIZE); > - if (!anv_get_function_timestamp(anv_device_get_cache_uuid, ×tamp)) > + unsigned char *build_id = malloc(len); > + if (!build_id) > return false; > > - snprintf(uuid, VK_UUID_SIZE, "anv-%d", timestamp); > + build_id_read(note, build_id); > + > + memcpy(uuid, build_id, VK_UUID_SIZE); > + free(build_id); The Vulkan spec frowns on memory allocations when not needed. If you must allocate memory here, then it should be through the VkInstance allocation callbacks. However, it's best to avoid the allocation by adding a size_t parameter, à la snprintf, to build_id_read(). Otherwise, the patch looks good to me. > return true; > } _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev