[Mesa-dev] [PATCH 2/4] util/disk_cache: add struct cache_item_metadata

Timothy Arceri tarceri at itsqueeze.com
Fri Aug 18 11:48:11 UTC 2017



On 18/08/17 21:02, Nicolai Hähnle wrote:
> On 15.08.2017 01:26, Timothy Arceri wrote:
>> This will be used to store more information about the cache item
>> in it's header. This information is intended for 3rd party and
>> cache analysis use but can also be used for detecting the unlikely
>> scenario of cache collisions.
>> ---
>>   src/util/disk_cache.h | 22 ++++++++++++++++++++++
>>   1 file changed, 22 insertions(+)
>>
>> diff --git a/src/util/disk_cache.h b/src/util/disk_cache.h
>> index 9aade16a9e..d6d7609ffb 100644
>> --- a/src/util/disk_cache.h
>> +++ b/src/util/disk_cache.h
>> @@ -34,20 +34,42 @@
>>   #ifdef __cplusplus
>>   extern "C" {
>>   #endif
>>   /* Size of cache keys in bytes. */
>>   #define CACHE_KEY_SIZE 20
>>   typedef uint8_t cache_key[CACHE_KEY_SIZE];
>> +/* WARNING: 3rd party applications might be reading the cache item 
>> metadata.
>> + * Do not change these values without making the change widely known.
>> + * Please contact Valve developers and make them aware of this change.
>> + */
>> +#define CACHE_ITEM_TYPE_UNKNOWN  0x0
>> +#define CACHE_ITEM_TYPE_GLSL     0x1
>> +
>> +typedef uint32_t cache_item_metadata_type;
> 
> Please don't do typedefs like that, they just obfuscate. If you don't 
> want to just use uint32_t, I'd suggest to use an enum.

I'll just use uint32_t

> 
> At a higher level, what is this actually good for? So I get Valve wants 
> to parse something in the shader cache, but why / what for?
> 
> Cheers,
> Nicolai
> 
> 
>> +
>> +struct cache_item_metadata {
>> +   /**
>> +    * The cache item type. This could be used to identify a GLSL 
>> cache item,
>> +    * a certain type of IR (tgsi, nir, etc), or signal that it is the 
>> final
>> +    * binary form of the shader.
>> +    */
>> +   cache_item_metadata_type type;
>> +
>> +   /** GLSL cache item metadata */
>> +   cache_key *keys;   /* sha1 list of shaders that make up the cache 
>> item */
>> +   uint32_t num_keys;
>> +};
>> +
>>   struct disk_cache;
>>   static inline bool
>>   disk_cache_get_function_timestamp(void *ptr, uint32_t* timestamp)
>>   {
>>   #ifdef ENABLE_SHADER_CACHE
>>      Dl_info info;
>>      struct stat st;
>>      if (!dladdr(ptr, &info) || !info.dli_fname) {
>>         return false;
>>
> 
> 


More information about the mesa-dev mailing list