summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2020-05-13 13:36:55 +1000
committerDave Airlie <airlied@redhat.com>2020-05-15 10:25:01 +1000
commit06bad2d000695982391920cf01ef9eaad5a876db (patch)
tree08e45e78d57e226ef7f2e49b10da3fd6b45042ad
parent5a1e94d6daa87d33c0f02bb3a1e8fd4aea2da79b (diff)
draw: add disk cache callbacks for draw shaders
This provides a set of hooks from the driver that draw can use to access the disk cache for the draw shaders.
-rw-r--r--src/gallium/auxiliary/draw/draw_context.c16
-rw-r--r--src/gallium/auxiliary/draw/draw_context.h10
-rw-r--r--src/gallium/auxiliary/draw/draw_private.h10
3 files changed, 35 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
index b93bc6bf56f..781f8f124b6 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -1336,3 +1336,19 @@ draw_set_tess_state(struct draw_context *draw,
for (unsigned i = 0; i < 2; i++)
draw->default_inner_tess_level[i] = default_inner_level[i];
}
+
+void
+draw_set_disk_cache_callbacks(struct draw_context *draw,
+ void *data_cookie,
+ void (*find_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]),
+ void (*insert_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]))
+{
+ draw->disk_cache_find_shader = find_shader;
+ draw->disk_cache_insert_shader = insert_shader;
+ draw->disk_cache_cookie = data_cookie;
+
+}
diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h
index 5919c8f2214..4dc542db095 100644
--- a/src/gallium/auxiliary/draw/draw_context.h
+++ b/src/gallium/auxiliary/draw/draw_context.h
@@ -366,4 +366,14 @@ draw_get_shader_param_no_llvm(enum pipe_shader_type shader,
boolean
draw_get_option_use_llvm(void);
+struct lp_cached_code;
+void
+draw_set_disk_cache_callbacks(struct draw_context *draw,
+ void *data_cookie,
+ void (*find_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]),
+ void (*insert_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]));
#endif /* DRAW_CONTEXT_H */
diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h
index a5a1b4e9b22..864d80fecb7 100644
--- a/src/gallium/auxiliary/draw/draw_private.h
+++ b/src/gallium/auxiliary/draw/draw_private.h
@@ -71,7 +71,7 @@ struct tgsi_buffer;
struct draw_pt_front_end;
struct draw_assembler;
struct draw_llvm;
-
+struct lp_cached_code;
/**
* Represents the mapped vertex buffer.
@@ -392,6 +392,14 @@ struct draw_context
struct draw_assembler *ia;
+ void *disk_cache_cookie;
+ void (*disk_cache_find_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]);
+ void (*disk_cache_insert_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]);
+
void *driver_private;
};