On Tuesday, February 14, 2017 12:38:45 PM PST Chad Versace wrote:
> 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.You're worried about the performance of anv_physical_device_init()? This doesn't happen on lookup...just driver start up... --Ken
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
