On Sunday, October 22, 2017 1:01:42 PM PDT Jordan Justen wrote: > Double negative FTW! > > For now, the shader cache is disabled by default on i965 to allow us > to verify its stability. > > In other words, to enable the shader cache on i965, set > MESA_GLSL_CACHE_DISABLE to false or 0. If the variable is unset, then > the shader cache will be disabled. > > We use the build-id of i965_dri.so for the timestamp, and the pci > device id for the device name. > > v2: > * Simplify code by forcing link to include build id sha. (Matt) > > v3: > * Don't use a for loop with snprintf for bin to hex. (Matt) > * Assume fixed length render and timestamp string to further simplify > code. > > Cc: Matt Turner <matts...@gmail.com> > Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> > --- > src/mesa/drivers/dri/i965/brw_context.c | 2 ++ > src/mesa/drivers/dri/i965/brw_disk_cache.c | 29 +++++++++++++++++++++++++++++ > src/mesa/drivers/dri/i965/brw_state.h | 1 + > 3 files changed, 32 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.c > b/src/mesa/drivers/dri/i965/brw_context.c > index 949ec4a2a3d..bb9474035c9 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.c > +++ b/src/mesa/drivers/dri/i965/brw_context.c > @@ -1037,6 +1037,8 @@ brwCreateContext(gl_api api, > brw->dri_config_options_sha1); > brw->ctx.Const.dri_config_options_sha1 = brw->dri_config_options_sha1; > > + brw_disk_cache_init(brw); > + > return true; > } > > diff --git a/src/mesa/drivers/dri/i965/brw_disk_cache.c > b/src/mesa/drivers/dri/i965/brw_disk_cache.c > index 9af893d40a7..22670e31667 100644 > --- a/src/mesa/drivers/dri/i965/brw_disk_cache.c > +++ b/src/mesa/drivers/dri/i965/brw_disk_cache.c > @@ -26,6 +26,8 @@ > #include "compiler/glsl/shader_cache.h" > #include "compiler/nir/nir_serialize.h" > #include "main/mtypes.h" > +#include "util/build_id.h" > +#include "util/debug.h" > #include "util/disk_cache.h" > #include "util/macros.h" > #include "util/mesa-sha1.h" > @@ -460,3 +462,30 @@ brw_disk_cache_write_compute_program(struct brw_context > *brw) > MESA_SHADER_COMPUTE); > } > } > + > +void > +brw_disk_cache_init(struct brw_context *brw) > +{ > +#ifdef ENABLE_SHADER_CACHE > + if (env_var_as_boolean("MESA_GLSL_CACHE_DISABLE", true)) > + return; > + > + char renderer[10]; > + int len = snprintf(renderer, sizeof(renderer), "i965_%04x", > + brw->screen->deviceID); > + assert(len == sizeof(renderer) - 1); > + > + const struct build_id_note *note = > + build_id_find_nhdr_for_addr(brw_disk_cache_init); > + int id_size = build_id_length(note); > + assert(note && id_size == 20 /* sha1 */); > + > + const uint8_t *id_sha1 = build_id_data(note); > + assert(id_sha1); > + > + char timestamp[41]; > + _mesa_sha1_format(timestamp, id_sha1); > + > + brw->ctx.Cache = disk_cache_create(renderer, timestamp, 0);
It's not really a timestamp, but that is what disk_cache_create's parameter is called...not inclined to care that much. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev