meson: Add build option to specify default shader disk cache max-size

Added an optional 'shader-cache-max-size' build option to meson,
which sets default value of max disk cache size for compiled
GLSL programs. Can be overriden by 'MESA_GLSL_CACHE_MAX_SIZE'
environment variable.
Syntax is the same as environment variable has: a number optionally
followed by K, M, G to specify a size in kilobytes, megabytes, or
gigabytes. By default, gigabytes will be assumed.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3572

Signed-off-by: Yevhenii Kharchenko <yevhenii.kharchenko@globallogic.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: John Bates <jbates@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7217>
This commit is contained in:
Yevhenii Kharchenko 2020-10-17 23:43:59 +03:00 committed by Marge Bot
parent 0546ceba16
commit 361d143f94
3 changed files with 25 additions and 0 deletions

View File

@ -937,6 +937,13 @@ if _shader_cache != 'disabled'
endif
endif
if with_shader_cache
shader_cache_max_size = get_option('shader-cache-max-size')
if shader_cache_max_size != ''
pre_args += '-DMESA_GLSL_CACHE_MAX_SIZE="@0@"'.format(shader_cache_max_size)
endif
endif
# Check for GCC style builtins
foreach b : ['bswap32', 'bswap64', 'clz', 'clzll', 'ctz', 'expect', 'ffs',
'ffsll', 'popcount', 'popcountll', 'unreachable']

View File

@ -194,6 +194,17 @@ option(
value : true,
description : 'If set to false, the feature is only activated when environment variable MESA_GLSL_CACHE_DISABLE is set to false',
)
option(
'shader-cache-max-size',
type : 'string',
value : '',
description : 'Default value for MESA_GLSL_CACHE_MAX_SIZE enviroment variable.
If set, determines the maximum size of the on-disk cache of compiled
GLSL programs, can be overriden by enviroment variable if needed. Should be set to a number optionally followed by
``K``, ``M``, or ``G`` to specify a size in kilobytes, megabytes, or
gigabytes. By default, gigabytes will be assumed. And if unset, a
maximum size of 1GB will be used.'
)
option(
'vulkan-icd-dir',
type : 'string',

View File

@ -113,6 +113,13 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
max_size = 0;
max_size_str = getenv("MESA_GLSL_CACHE_MAX_SIZE");
#ifdef MESA_GLSL_CACHE_MAX_SIZE
if( !max_size_str ) {
max_size_str = MESA_GLSL_CACHE_MAX_SIZE;
}
#endif
if (max_size_str) {
char *end;
max_size = strtoul(max_size_str, &end, 10);