[Mesa-dev] [PATCH 2/4] util/disk_cache: add struct cache_item_metadata
Nicolai Hähnle
nhaehnle at gmail.com
Fri Aug 18 11:02:50 UTC 2017
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.
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;
>
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list