diff options
author | Timothy Arceri <[email protected]> | 2017-05-18 15:00:40 +1000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-05-20 08:35:51 +1000 |
commit | a74300c7ff256b417079134f7bd9aea91153025b (patch) | |
tree | dc36d51a04a022c9604d59ac7e3df2d59e653a7c /src/mesa/state_tracker | |
parent | 8cad301a3ea4d2cf6297200f5eb5e229928b9120 (diff) |
mesa: add an env var to force cache fallback
For the gallium state tracker a tgsi binary may have been evicted
from the cache to make space. In this case we would take the
fallback path and recompile/link the shader.
On i965 there are a number of reasons we can get to the program
upload stage and have neither IR nor a valid cached binary.
For example the binary may have been evicted from the cache or
we need a variant that wasn't previously cached.
This environment variable enables us to force the fallback path that
would be taken in these cases and makes it easier to debug these
otherwise hard to reproduce scenarios.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r-- | src/mesa/state_tracker/st_shader_cache.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c index 175d69d732e..45438e56bd2 100644 --- a/src/mesa/state_tracker/st_shader_cache.c +++ b/src/mesa/state_tracker/st_shader_cache.c @@ -225,8 +225,12 @@ st_load_tgsi_from_disk_cache(struct gl_context *ctx, if (prog->data->LinkStatus != linking_skipped) return false; - struct st_context *st = st_context(ctx); uint8_t *buffer = NULL; + if (ctx->_Shader->Flags & GLSL_CACHE_FALLBACK) { + goto fallback_recompile; + } + + struct st_context *st = st_context(ctx); for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] == NULL) continue; |