summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2019-05-21 12:06:02 -0700
committerKenneth Graunke <kenneth@whitecape.org>2019-05-21 15:05:38 -0700
commitfb1d08dcfd53cad8d933592c4515a9dc123376e3 (patch)
tree5d7f483f703143ed572f86f5b0926a3e822c874b
parent601c9bc13581a060c3ec437bd8c2a4a7cbdc4998 (diff)
iris: Expose the disk cache to the state tracker as well.
This lets st/nir cache the NIR for shaders, based on the shader source string hash, allowing us to skip initial compiles altogether, and also letting us start from there should we need to recompile for NOS. Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
-rw-r--r--src/gallium/drivers/iris/iris_screen.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/iris/iris_screen.c b/src/gallium/drivers/iris/iris_screen.c
index fcd1bf72d73..4a62f15fa3f 100644
--- a/src/gallium/drivers/iris/iris_screen.c
+++ b/src/gallium/drivers/iris/iris_screen.c
@@ -532,6 +532,13 @@ iris_get_compiler_options(struct pipe_screen *pscreen,
return screen->compiler->glsl_compiler_options[stage].NirOptions;
}
+static struct disk_cache *
+iris_get_disk_shader_cache(struct pipe_screen *pscreen)
+{
+ struct iris_screen *screen = (struct iris_screen *) pscreen;
+ return screen->disk_cache;
+}
+
static int
iris_getparam(struct iris_screen *screen, int param, int *value)
{
@@ -661,6 +668,7 @@ iris_screen_create(int fd, const struct pipe_screen_config *config)
pscreen->get_compute_param = iris_get_compute_param;
pscreen->get_paramf = iris_get_paramf;
pscreen->get_compiler_options = iris_get_compiler_options;
+ pscreen->get_disk_shader_cache = iris_get_disk_shader_cache;
pscreen->is_format_supported = iris_is_format_supported;
pscreen->context_create = iris_create_context;
pscreen->flush_frontbuffer = iris_flush_frontbuffer;