summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Justen <[email protected]>2018-02-02 13:03:10 -0800
committerEmil Velikov <[email protected]>2018-02-05 19:06:01 +0000
commit227e0fb0a439807fc4f1930ab6a684920708601f (patch)
tree88f2bacd1965ec62b15976d8fa5920f62ead8792 /src
parent28097758a8d6cfc35333e0339b883067ef8a962e (diff)
i965: Create new program cache bo when clearing the program cache
When the disk shader cache CI testing was enabled, we started noticing occasional failures on deqp test runs. (Mainly SNB, rarely HSW) Before this change, when we cleared the (in memory) program cache we reused the same bo. Since the disk shader cache quickly restores programs, it appears that this would lead to overwrites of the older program binaries in the in memory program cache that apparently were still executing in some cases. If these programs were still executing, this could cause a GPU hang. This issue is probably not disk shader cache specific, but may have been hidden due to the compiler taking time to recompile programs after the cache was cleared. v2: * Don't add `copy` param to brw_cache_new_bo (Ken) * Call from brw_program_cache_check_size (Ken) Cc: Kenneth Graunke <[email protected]> Cc: [email protected] Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> (cherry picked from commit 83e60ce927142752c57163fcb8b30eca2370d014)
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_program_cache.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_program_cache.c b/src/mesa/drivers/dri/i965/brw_program_cache.c
index 9266273b5da..14c356db321 100644
--- a/src/mesa/drivers/dri/i965/brw_program_cache.c
+++ b/src/mesa/drivers/dri/i965/brw_program_cache.c
@@ -460,6 +460,7 @@ brw_program_cache_check_size(struct brw_context *brw)
perf_debug("Exceeded state cache size limit. Clearing the set "
"of compiled programs, which will trigger recompiles\n");
brw_clear_cache(brw, &brw->cache);
+ brw_cache_new_bo(&brw->cache, brw->cache.bo->size);
}
}