Lines Matching defs:point
92 list_for_each_entry_safe(struct vk_sync_timeline_point, point,
94 list_del(&point->link);
95 vk_sync_finish(device, &point->sync);
96 vk_free(&device->alloc, point);
98 list_for_each_entry_safe(struct vk_sync_timeline_point, point,
100 list_del(&point->link);
101 vk_sync_finish(device, &point->sync);
102 vk_free(&device->alloc, point);
112 struct vk_sync_timeline_point *point =
116 assert(point->value <= timeline->highest_pending);
117 assert(point->value > timeline->highest_past);
119 return point;
133 struct vk_sync_timeline_point *point;
148 point = vk_zalloc(&device->alloc, size, 8,
150 if (!point)
153 point->timeline = timeline;
155 result = vk_sync_init(device, &point->sync, point_sync_type,
158 vk_free(&device->alloc, point);
162 point = list_first_entry(&timeline->free_points,
165 if (point->sync.type->reset) {
166 result = vk_sync_reset(device, &point->sync);
171 list_del(&point->link);
174 point->value = value;
175 *point_out = point;
197 struct vk_sync_timeline_point *point)
199 assert(point->refcount == 0 && !point->pending);
200 list_add(&point->link, &timeline->free_points);
205 struct vk_sync_timeline_point *point)
207 struct vk_sync_timeline *timeline = point->timeline;
210 vk_sync_timeline_point_free_locked(timeline, point);
215 vk_sync_timeline_point_ref(struct vk_sync_timeline_point *point)
217 point->refcount++;
222 struct vk_sync_timeline_point *point)
224 assert(point->refcount > 0);
225 point->refcount--;
226 if (point->refcount == 0 && !point->pending)
227 vk_sync_timeline_point_free_locked(timeline, point);
232 struct vk_sync_timeline_point *point)
234 if (!point->pending)
237 assert(timeline->highest_past < point->value);
238 timeline->highest_past = point->value;
240 point->pending = false;
241 list_del(&point->link);
243 if (point->refcount == 0)
244 vk_sync_timeline_point_free_locked(timeline, point);
252 list_for_each_entry_safe(struct vk_sync_timeline_point, point,
255 * happened. If this point has a greater serial, it means the point
258 if (point->value > timeline->highest_pending)
261 /* If someone is waiting on this time point, consider it busy and don't
266 * We walk the list in-order so if this time point is still busy so is
267 * every following time point
269 assert(point->refcount >= 0);
270 if (point->refcount > 0 && !drain)
273 /* Garbage collect any signaled point. */
274 VkResult result = vk_sync_wait(device, &point->sync, 0,
278 /* We walk the list in-order so if this time point is still busy so
279 * is every following time point
286 vk_sync_timeline_point_complete(timeline, point);
294 struct vk_sync_timeline_point *point)
296 struct vk_sync_timeline *timeline = point->timeline;
300 assert(point->value > timeline->highest_pending);
301 timeline->highest_pending = point->value;
303 assert(point->refcount == 0);
304 point->pending = true;
305 list_addtail(&point->link, &timeline->pending_points);
329 list_for_each_entry(struct vk_sync_timeline_point, point,
331 if (point->value >= wait_value) {
332 vk_sync_timeline_point_ref(point);
333 *point_out = point;
357 struct vk_sync_timeline_point *point)
359 struct vk_sync_timeline *timeline = point->timeline;
362 vk_sync_timeline_point_unref(timeline, point);
432 * time point pending that's at least as high as wait_value.
479 struct vk_sync_timeline_point *point = vk_sync_timeline_first_point(timeline);
482 vk_sync_timeline_point_ref(point);
485 result = vk_sync_wait(device, &point->sync, 0,
491 vk_sync_timeline_point_unref(timeline, point);
497 vk_sync_timeline_point_complete(timeline, point);