draw: add disk cache callbacks for draw shaders
authorDave Airlie <airlied@redhat.com>
Wed, 13 May 2020 03:36:55 +0000 (13:36 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 10 Jun 2020 20:05:41 +0000 (06:05 +1000)
This provides a set of hooks from the driver that draw can
use to access the disk cache for the draw shaders.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5049>

src/gallium/auxiliary/draw/draw_context.c
src/gallium/auxiliary/draw/draw_context.h
src/gallium/auxiliary/draw/draw_private.h

index b93bc6bf56f29d27926a824c3c0990f6c8b949cc..781f8f124b62bb6119d195b276022f9202f2dba8 100644 (file)
@@ -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;
+
+}
index 5919c8f2214a7fa1e7834cb460891d42e146adc7..4dc542db0954d9905eac413877e710afdb96da07 100644 (file)
@@ -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 */
index a5a1b4e9b22f1dc95478ce7c6a72cfc463c7e28c..864d80fecb79425a7569c8ff9fac8be2f09c6252 100644 (file)
@@ -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;
 };