Lines Matching refs:object

53 raw_data_object_serialize(struct vk_pipeline_cache_object *object,
57 container_of(object, struct raw_data_object, base);
86 raw_data_object_destroy(struct vk_pipeline_cache_object *object)
89 container_of(object, struct raw_data_object, base);
139 const struct vk_pipeline_cache_object *object = void_object;
140 return _mesa_hash_data(object->key_data, object->key_size);
161 struct vk_pipeline_cache_object *object)
165 _mesa_set_search_pre_hashed(cache->object_cache, hash, object);
166 if (entry && entry->key == (const void *)object) {
168 vk_pipeline_cache_object_unref(object);
175 vk_pipeline_cache_object_unref(object);
202 /* I guess the object was purged? Re-add it to the cache */
220 struct vk_pipeline_cache_object *object,
223 if (object->ops->serialize == NULL)
236 *data_size = p_atomic_read(&object->data_size);
243 if (!object->ops->serialize(object, blob)) {
245 "Failed to serialize pipeline cache object");
252 "Skipping giant (4 GiB or larger) object");
263 p_atomic_set(&object->data_size, *data_size);
279 "Pipeline cache object cannot be deserialized");
286 struct vk_pipeline_cache_object *object =
289 if (object == NULL) {
291 "Deserializing pipeline cache object failed");
296 assert(object->device == cache->base.device);
297 assert(object->ops == ops);
298 assert(object->ref_cnt == 1);
299 assert(object->key_size == key_size);
300 assert(memcmp(object->key_data, key_data, key_size) == 0);
302 return object;
323 struct vk_pipeline_cache_object *object = NULL;
330 object = vk_pipeline_cache_object_ref((void *)entry->key);
337 if (object == NULL) {
347 object = vk_pipeline_cache_object_deserialize(cache,
352 if (object != NULL)
353 return vk_pipeline_cache_add_object(cache, object);
362 if (object->ops == &raw_data_object_ops && ops != &raw_data_object_ops) {
363 /* The object isn't fully formed yet and we need to deserialize it into
364 * a real object before it can be used.
367 container_of(object, struct raw_data_object, base);
376 vk_pipeline_cache_remove_object(cache, hash, object);
380 object = vk_pipeline_cache_replace_object(cache, hash, object,
384 assert(object->ops == ops);
386 return object;
391 struct vk_pipeline_cache_object *object)
393 assert(object->ops != NULL);
396 return object;
398 uint32_t hash = object_key_hash(object);
404 hash, object, &found);
411 vk_pipeline_cache_object_ref(object);
416 vk_pipeline_cache_object_unref(object);
419 /* If it wasn't in the object cache, it might not be in the disk cache
425 if (object->ops->serialize != NULL && disk_cache) {
429 if (object->ops->serialize(object, &blob) && !blob.out_of_memory) {
431 disk_cache_compute_key(disk_cache, object->key_data,
432 object->key_size, cache_key);
441 return object;
451 struct vk_pipeline_cache_object *object =
454 if (object == NULL)
458 container_of(object, struct raw_data_object, base);
464 vk_pipeline_cache_object_unref(object);
560 struct vk_pipeline_cache_object *object =
564 if (object == NULL)
567 object = vk_pipeline_cache_add_object(cache, object);
568 vk_pipeline_cache_object_unref(object);
704 struct vk_pipeline_cache_object *object = (void *)entry->key;
706 if (object->ops->serialize == NULL)
711 int32_t type = find_type_for_ops(device->physical, object->ops);
713 blob_write_uint32(&blob, object->key_size);
715 blob_write_bytes(&blob, object->key_data, object->key_size);
720 if (!vk_pipeline_cache_object_serialize(cache, object,
788 /* Even though dst has the object, it only has the blob version
789 * which isn't as useful. Replace it with the real object.