This allows for secondary cache lookups during deserialization.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21967>
struct blob *blob);
static struct vk_pipeline_cache_object *
-tu_shaders_deserialize(struct vk_device *device,
- const void *key_data, size_t key_size,
+tu_shaders_deserialize(struct vk_pipeline_cache *cache,
+ const void *key_data,
+ size_t key_size,
struct blob_reader *blob);
static void
}
static struct vk_pipeline_cache_object *
-tu_shaders_deserialize(struct vk_device *_device,
- const void *key_data, size_t key_size,
+tu_shaders_deserialize(struct vk_pipeline_cache *cache,
+ const void *key_data,
+ size_t key_size,
struct blob_reader *blob)
{
- struct tu_device *dev = container_of(_device, struct tu_device, vk);
+ struct tu_device *dev =
+ container_of(cache->base.device, struct tu_device, vk);
struct tu_compiled_shaders *shaders =
tu_shaders_init(dev, key_data, key_size);
struct blob *blob);
static struct vk_pipeline_cache_object *
-tu_nir_shaders_deserialize(struct vk_device *device,
- const void *key_data, size_t key_size,
+tu_nir_shaders_deserialize(struct vk_pipeline_cache *cache,
+ const void *key_data,
+ size_t key_size,
struct blob_reader *blob);
static void
}
static struct vk_pipeline_cache_object *
-tu_nir_shaders_deserialize(struct vk_device *_device,
- const void *key_data, size_t key_size,
- struct blob_reader *blob)
+tu_nir_shaders_deserialize(struct vk_pipeline_cache *cache,
+ const void *key_data,
+ size_t key_size,
+ struct blob_reader *blob)
{
- struct tu_device *dev = container_of(_device, struct tu_device, vk);
+ struct tu_device *dev =
+ container_of(cache->base.device, struct tu_device, vk);
struct tu_nir_shaders *shaders =
tu_nir_shaders_init(dev, key_data, key_size);
struct blob *blob);
struct vk_pipeline_cache_object *
-anv_shader_bin_deserialize(struct vk_device *device,
+anv_shader_bin_deserialize(struct vk_pipeline_cache *cache,
const void *key_data, size_t key_size,
struct blob_reader *blob);
}
struct vk_pipeline_cache_object *
-anv_shader_bin_deserialize(struct vk_device *vk_device,
+anv_shader_bin_deserialize(struct vk_pipeline_cache *cache,
const void *key_data, size_t key_size,
struct blob_reader *blob)
{
struct anv_device *device =
- container_of(vk_device, struct anv_device, vk);
+ container_of(cache->base.device, struct anv_device, vk);
gl_shader_stage stage = blob_read_uint32(blob);
struct blob *blob);
struct vk_pipeline_cache_object *
-anv_shader_bin_deserialize(struct vk_device *device,
+anv_shader_bin_deserialize(struct vk_pipeline_cache *cache,
const void *key_data, size_t key_size,
struct blob_reader *blob);
}
struct vk_pipeline_cache_object *
-anv_shader_bin_deserialize(struct vk_device *vk_device,
+anv_shader_bin_deserialize(struct vk_pipeline_cache *cache,
const void *key_data, size_t key_size,
struct blob_reader *blob)
{
struct anv_device *device =
- container_of(vk_device, struct anv_device, vk);
+ container_of(cache->base.device, struct anv_device, vk);
gl_shader_stage stage = blob_read_uint32(blob);
size_t data_size);
static struct vk_pipeline_cache_object *
-dzn_cached_blob_deserialize(struct vk_device *device,
- const void *key_data,
- size_t key_size,
- struct blob_reader *blob)
+dzn_cached_blob_deserialize(struct vk_pipeline_cache *cache,
+ const void *key_data, size_t key_size,
+ struct blob_reader *blob)
{
size_t data_size = blob->end - blob->current;
assert(key_size == SHA1_DIGEST_LENGTH);
- return dzn_cached_blob_create(device, key_data,
- blob_read_bytes(blob, data_size),
- data_size);
+ return dzn_cached_blob_create(cache->base.device, key_data,
+ blob_read_bytes(blob, data_size), data_size);
}
const struct vk_pipeline_cache_object_ops dzn_cached_blob_ops = {
}
static struct vk_pipeline_cache_object *
-raw_data_object_deserialize(struct vk_device *device,
+raw_data_object_deserialize(struct vk_pipeline_cache *cache,
const void *key_data,
size_t key_size,
struct blob_reader *blob)
const void *data = blob_read_bytes(blob, data_size);
struct raw_data_object *data_obj =
- raw_data_object_create(device, key_data, key_size, data, data_size);
+ raw_data_object_create(cache->base.device, key_data, key_size, data,
+ data_size);
return data_obj ? &data_obj->base : NULL;
}
blob_reader_init(&reader, data, data_size);
struct vk_pipeline_cache_object *object =
- ops->deserialize(cache->base.device, key_data, key_size, &reader);
+ ops->deserialize(cache, key_data, key_size, &reader);
if (object == NULL) {
vk_logw(VK_LOG_OBJS(cache),
*
* This function is optional.
*/
- struct vk_pipeline_cache_object *(*deserialize)(struct vk_device *device,
+ struct vk_pipeline_cache_object *(*deserialize)(struct vk_pipeline_cache *cache,
const void *key_data,
size_t key_size,
struct blob_reader *blob);