summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2020-05-13 13:37:19 +1000
committerDave Airlie <airlied@redhat.com>2020-05-15 10:25:01 +1000
commit8f687f0d1a53c5cfb82afffdf7836150965b520f (patch)
tree7df5ecd7be1d3d2313c12673bf7770c076066754
parent06bad2d000695982391920cf01ef9eaad5a876db (diff)
llvmpipe: hook draw disk cache up
Connect the draw callbacks into the llvmpipe code.
-rw-r--r--src/gallium/drivers/llvmpipe/lp_context.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c
index f11d5207a7a..58073f3a7f6 100644
--- a/src/gallium/drivers/llvmpipe/lp_context.c
+++ b/src/gallium/drivers/llvmpipe/lp_context.c
@@ -46,7 +46,7 @@
#include "lp_surface.h"
#include "lp_query.h"
#include "lp_setup.h"
-
+#include "lp_screen.h"
/* This is only safe if there's just one concurrent context */
#ifdef EMBEDDED_DEVICE
#define USE_GLOBAL_LLVM_CONTEXT
@@ -137,6 +137,22 @@ llvmpipe_texture_barrier(struct pipe_context *pipe, unsigned flags)
llvmpipe_flush(pipe, NULL, __FUNCTION__);
}
+static void lp_draw_disk_cache_find_shader(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20])
+{
+ struct llvmpipe_screen *screen = cookie;
+ lp_disk_cache_find_shader(screen, cache, ir_sha1_cache_key);
+}
+
+static void lp_draw_disk_cache_insert_shader(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20])
+{
+ struct llvmpipe_screen *screen = cookie;
+ lp_disk_cache_insert_shader(screen, cache, ir_sha1_cache_key);
+}
+
struct pipe_context *
llvmpipe_create_context(struct pipe_screen *screen, void *priv,
unsigned flags)
@@ -202,6 +218,10 @@ llvmpipe_create_context(struct pipe_screen *screen, void *priv,
if (!llvmpipe->draw)
goto fail;
+ draw_set_disk_cache_callbacks(llvmpipe->draw,
+ llvmpipe_screen(screen),
+ lp_draw_disk_cache_find_shader,
+ lp_draw_disk_cache_insert_shader);
/* FIXME: devise alternative to draw_texture_samplers */
llvmpipe->setup = lp_setup_create( &llvmpipe->pipe,