util/disk_cache: make use of single file cache when env var set
authorTimothy Arceri <tarceri@itsqueeze.com>
Thu, 1 Oct 2020 10:02:59 +0000 (20:02 +1000)
committerMarge Bot <eric+marge@anholt.net>
Sun, 21 Feb 2021 02:50:45 +0000 (02:50 +0000)
commit644fcd94864260218037d0b9a0dfd3b00be073d8
tree65d49795db39f829fa56ae23632b984d714aeaf0
parenteca6bb9540d8d1b260511cd0a71bdddb00ff4a3c
util/disk_cache: make use of single file cache when env var set

When the MESA_DISK_CACHE_SINGLE_FILE environment variable is set
we make use of the new single file shader cache implementation.

The new cache uses the following directory structure based on the
first defined name as follows:

 $MESA_GLSL_CACHE_DIR/driver_id/gpu_name/foz_cache.foz
 $MESA_GLSL_CACHE_DIR/driver_id/gpu_name/foz_cache_idx.foz

 $XDG_CACHE_HOME/mesa_shader_cache_sf/driver_id/gpu_name/foz_cache.foz
 $XDG_CACHE_HOME/mesa_shader_cache_sf/driver_id/gpu_name/foz_cache_idx.foz

 <pwd.pw_dir>/.cache/mesa_shader_cache_sf/driver_id/gpu_name/foz_cache.foz
 <pwd.pw_dir>/.cache/mesa_shader_cache_sf/driver_id/gpu_name/foz_cache_idx.foz

Where foz_cache_idx.foz is a database of offsets pointing to the location of
the shader cache entries in foz_cache.foz

This initial implementation doesn't have any max cache size handling and is
initially intended to be use by applications such as steam that will handle
cache management for us.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7725>
src/util/disk_cache.c
src/util/disk_cache_os.c
src/util/disk_cache_os.h