From 5b6f9e4821a48a1abedf6082ab7a7cb06e7b7905 Mon Sep 17 00:00:00 2001
From: John Bates <jbates@chromium.org>
Date: Tue, 13 Oct 2020 14:17:53 -0700
Subject: [PATCH] BACKPORT: disk_cache: build option for disabled-by-default

On some systems it is problematic to have the shader cache enabled
by default. This adds a build option to support the disk cache but
keep it disabled unless the environment variable
MESA_GLSL_CACHE_DISABLE=false.

For example, on Chrome OS, Chrome already has it's own shader
disk cache implementation so it disables the mesa feature. Tests
do not want the shader disk cache enabled because it can cause
inconsistent performance results and the default 1GB for the
disk cache could lead to problems that require more effort to
work around. The Mesa shader disk cache is useful for VMs though,
where it is easy to configure the feature with environment
variables. With the current version of Mesa, Chrome OS would need
to have a system-wide environment variable to disable the disk
cache everywhere except where needed. More elegant to just build
Mesa with the cache feature disabled by default.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
---
 docs/envvars.rst                     |  4 +++-
 meson.build                          |  5 ++++-
 meson_options.txt                    |  4 ++--
 src/compiler/glsl/tests/cache_test.c | 21 +++++++++++++++++++++
 src/util/disk_cache.c                |  8 +++++++-
 5 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/docs/envvars.rst b/docs/envvars.rst
index 76397eec041..872463e7ccb 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -141,7 +141,9 @@ Core Mesa environment variables
    features of the given language version if it's higher than what's
    normally reported. (for developers only)
 ``MESA_GLSL_CACHE_DISABLE``
-   if set to ``true``, disables the GLSL shader cache
+   if set to ``true``, disables the GLSL shader cache. If set to
+   ``false``, enables the GLSL shader cache when it is disabled by
+   default.
 ``MESA_GLSL_CACHE_MAX_SIZE``
    if set, determines the maximum size of the on-disk cache of compiled
    GLSL programs. Should be set to a number optionally followed by
diff --git a/meson.build b/meson.build
index e8b641c6b1d..46844e8a1e3 100644
--- a/meson.build
+++ b/meson.build
@@ -901,11 +901,14 @@ elif _shader_cache == 'false'
 endif
 if _shader_cache != 'disabled'
   if host_machine.system() == 'windows'
-    if _shader_cache == 'enabled'
+    if ['enabled', 'default-disabled'].contains(_shader_cache)
       error('Shader Cache does not currently work on Windows')
     endif
   else
     pre_args += '-DENABLE_SHADER_CACHE'
+    if _shader_cache == 'default-disabled'
+      pre_args += '-DSHADER_CACHE_DISABLE_BY_DEFAULT'
+    endif
     with_shader_cache = true
   endif
 endif
diff --git a/meson_options.txt b/meson_options.txt
index 2d39d13b6ad..ed93d545cc0 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -173,8 +173,8 @@ option(
   'shader-cache',
   type : 'combo',
   value : 'auto',
-  choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
-  description : 'Build with on-disk shader cache support'
+  choices : ['auto', 'true', 'false', 'enabled', 'disabled', 'default-disabled'],
+  description : 'Build with on-disk shader cache support. If set to default-disabled, the feature is only activated when environment variable MESA_GLSL_CACHE_DISABLE is set to false'
 )
 option(
   'vulkan-icd-dir',
diff --git a/src/compiler/glsl/tests/cache_test.c b/src/compiler/glsl/tests/cache_test.c
index a1db67a5845..926b5e458cc 100644
--- a/src/compiler/glsl/tests/cache_test.c
+++ b/src/compiler/glsl/tests/cache_test.c
@@ -193,6 +193,19 @@ test_disk_cache_create(void)
 
    unsetenv("MESA_GLSL_CACHE_DISABLE");
 
+#ifdef SHADER_CACHE_DISABLE_BY_DEFAULT
+   /* With SHADER_CACHE_DISABLE_BY_DEFAULT, ensure that with
+    * MESA_GLSL_CACHE_DISABLE set to nothing, disk_cache_create returns NULL.
+    */
+   unsetenv("MESA_GLSL_CACHE_DISABLE");
+   cache = disk_cache_create("test", "make_check", 0);
+   expect_null(cache, "disk_cache_create with MESA_GLSL_CACHE_DISABLE unset "
+               " and SHADER_CACHE_DISABLE_BY_DEFAULT build option");
+
+   /* For remaining tests, ensure that the cache is enabled. */
+   setenv("MESA_GLSL_CACHE_DISABLE", "false", 1);
+#endif /* SHADER_CACHE_DISABLE_BY_DEFAULT */
+
    /* For the first real disk_cache_create() clear these environment
     * variables to test creation of cache in home directory.
     */
@@ -266,6 +279,10 @@ test_put_and_get(void)
    uint8_t one_KB_key[20], one_MB_key[20];
    int count;
 
+#ifdef SHADER_CACHE_DISABLE_BY_DEFAULT
+   setenv("MESA_GLSL_CACHE_DISABLE", "false", 1);
+#endif /* SHADER_CACHE_DISABLE_BY_DEFAULT */
+
    cache = disk_cache_create("test", "make_check", 0);
 
    disk_cache_compute_key(cache, blob, sizeof(blob), blob_key);
@@ -437,6 +454,10 @@ test_put_key_and_get_key(void)
                         { 0,  1, 42, 43, 44, 45, 46, 47, 48, 49,
                          50, 55, 52, 53, 54, 55, 56, 57, 58, 59};
 
+#ifdef SHADER_CACHE_DISABLE_BY_DEFAULT
+   setenv("MESA_GLSL_CACHE_DISABLE", "false", 1);
+#endif /* SHADER_CACHE_DISABLE_BY_DEFAULT */
+
    cache = disk_cache_create("test", "make_check", 0);
 
    /* First test that disk_cache_has_key returns false before disk_cache_put_key */
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
index a92d621927a..90310b85463 100644
--- a/src/util/disk_cache.c
+++ b/src/util/disk_cache.c
@@ -210,6 +210,12 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
    uint8_t cache_version = CACHE_VERSION;
    size_t cv_size = sizeof(cache_version);
 
+#ifdef SHADER_CACHE_DISABLE_BY_DEFAULT
+   bool disable_by_default = true;
+#else
+   bool disable_by_default = false;
+#endif
+
    /* If running as a users other than the real user disable cache */
    if (geteuid() != getuid())
       return NULL;
@@ -220,7 +226,7 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
       goto fail;
 
    /* At user request, disable shader cache entirely. */
-   if (env_var_as_boolean("MESA_GLSL_CACHE_DISABLE", false))
+   if (env_var_as_boolean("MESA_GLSL_CACHE_DISABLE", disable_by_default))
       goto fail;
 
    cache = rzalloc(NULL, struct disk_cache);
-- 
2.28.0.1011.ga647a8990f-goog

