Lines Matching full:vblank
43 present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc);
57 present_wnmd_create_event_id(present_window_priv_ptr window_priv, present_vblank_ptr vblank) in present_wnmd_create_event_id() argument
59 vblank->event_id = ++window_priv->event_id; in present_wnmd_create_event_id()
86 present_wnmd_re_execute(present_vblank_ptr vblank) in present_wnmd_re_execute() argument
90 (void) present_wnmd_get_ust_msc(vblank->screen, vblank->window, &ust, &crtc_msc); in present_wnmd_re_execute()
91 present_wnmd_execute(vblank, ust, crtc_msc); in present_wnmd_re_execute()
98 present_vblank_ptr vblank; in present_wnmd_flip_try_ready() local
100 xorg_list_for_each_entry(vblank, &window_priv->flip_queue, event_queue) { in present_wnmd_flip_try_ready()
101 if (vblank->queued) { in present_wnmd_flip_try_ready()
102 present_wnmd_re_execute(vblank); in present_wnmd_flip_try_ready()
109 present_wnmd_free_idle_vblank(present_vblank_ptr vblank) in present_wnmd_free_idle_vblank() argument
111 present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence); in present_wnmd_free_idle_vblank()
112 present_vblank_destroy(vblank); in present_wnmd_free_idle_vblank()
122 present_vblank_ptr vblank, tmp; in present_wnmd_free_idle_vblanks() local
124 xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) { in present_wnmd_free_idle_vblanks()
125 if (vblank->flip) in present_wnmd_free_idle_vblanks()
126 present_wnmd_free_idle_vblank(vblank); in present_wnmd_free_idle_vblanks()
178 present_wnmd_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) in present_wnmd_flip_notify() argument
180 WindowPtr window = vblank->window; in present_wnmd_flip_notify()
184 vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc, in present_wnmd_flip_notify()
185 vblank->pixmap ? vblank->pixmap->drawable.id : 0, in present_wnmd_flip_notify()
186 vblank->window ? vblank->window->drawable.id : 0)); in present_wnmd_flip_notify()
188 assert (vblank == window_priv->flip_pending); in present_wnmd_flip_notify()
190 xorg_list_del(&vblank->event_queue); in present_wnmd_flip_notify()
200 window_priv->flip_active = vblank; in present_wnmd_flip_notify()
203 … present_vblank_notify(vblank, PresentCompleteKindPixmap, PresentCompleteModeFlip, ust, crtc_msc); in present_wnmd_flip_notify()
205 if (vblank->abort_flip) in present_wnmd_flip_notify()
215 present_vblank_ptr vblank; in present_wnmd_event_notify() local
229 xorg_list_for_each_entry(vblank, &window_priv->exec_queue, event_queue) { in present_wnmd_event_notify()
230 if (event_id == vblank->event_id) { in present_wnmd_event_notify()
231 present_wnmd_execute(vblank, ust, msc); in present_wnmd_event_notify()
235 xorg_list_for_each_entry(vblank, &window_priv->flip_queue, event_queue) { in present_wnmd_event_notify()
236 if (vblank->event_id == event_id) { in present_wnmd_event_notify()
237 if (vblank->queued) { in present_wnmd_event_notify()
238 present_wnmd_execute(vblank, ust, msc); in present_wnmd_event_notify()
240 assert(vblank->window); in present_wnmd_event_notify()
241 present_wnmd_flip_notify(vblank, ust, msc); in present_wnmd_event_notify()
247 xorg_list_for_each_entry(vblank, &window_priv->idle_queue, event_queue) { in present_wnmd_event_notify()
248 if (vblank->event_id == event_id) { in present_wnmd_event_notify()
249 if (vblank->flip) in present_wnmd_event_notify()
250 present_wnmd_free_idle_vblank(vblank); in present_wnmd_event_notify()
253 present_execute_post(vblank, ust, msc); in present_wnmd_event_notify()
333 present_vblank_ptr vblank; in present_wnmd_check_flip_window() local
356 xorg_list_for_each_entry(vblank, &window_priv->vblank, window_list) { in present_wnmd_check_flip_window()
357 if (vblank->queued && vblank->flip && in present_wnmd_check_flip_window()
358 !present_wnmd_check_flip(vblank->crtc, window, vblank->pixmap, in present_wnmd_check_flip_window()
359 vblank->sync_flip, vblank->valid, 0, 0, &reason)) { in present_wnmd_check_flip_window()
360 vblank->flip = FALSE; in present_wnmd_check_flip_window()
361 vblank->reason = reason; in present_wnmd_check_flip_window()
436 present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) in present_wnmd_execute() argument
438 WindowPtr window = vblank->window; in present_wnmd_execute()
441 if (present_execute_wait(vblank, crtc_msc)) in present_wnmd_execute()
444 if (vblank->flip && vblank->pixmap && vblank->window) { in present_wnmd_execute()
447 vblank->event_id, vblank, in present_wnmd_execute()
449 xorg_list_del(&vblank->event_queue); in present_wnmd_execute()
450 xorg_list_append(&vblank->event_queue, &window_priv->flip_queue); in present_wnmd_execute()
451 vblank->flip_ready = TRUE; in present_wnmd_execute()
456 xorg_list_del(&vblank->event_queue); in present_wnmd_execute()
457 xorg_list_del(&vblank->window_list); in present_wnmd_execute()
458 vblank->queued = FALSE; in present_wnmd_execute()
460 if (vblank->pixmap && vblank->window) { in present_wnmd_execute()
463 if (vblank->flip) { in present_wnmd_execute()
467 vblank->event_id, vblank, crtc_msc, in present_wnmd_execute()
468 vblank->pixmap->drawable.id, vblank->window->drawable.id)); in present_wnmd_execute()
472 xorg_list_add(&vblank->event_queue, &window_priv->flip_queue); in present_wnmd_execute()
475 if (vblank->update) { in present_wnmd_execute()
476 damage = RegionDuplicate(vblank->update); in present_wnmd_execute()
478 assert(vblank->x_off == 0 && vblank->y_off == 0); in present_wnmd_execute()
484 /* Try to flip - the vblank is now pending in present_wnmd_execute()
486 window_priv->flip_pending = vblank; in present_wnmd_execute()
488 if (present_wnmd_flip(vblank->window, vblank->crtc, vblank->event_id, in present_wnmd_execute()
489 … vblank->target_msc, vblank->pixmap, vblank->sync_flip, damage)) { in present_wnmd_execute()
490 WindowPtr toplvl_window = present_wnmd_toplvl_pixmap_window(vblank->window); in present_wnmd_execute()
495 vblank->pixmap->screen_x = old_pixmap->screen_x; in present_wnmd_execute()
496 vblank->pixmap->screen_y = old_pixmap->screen_y; in present_wnmd_execute()
498 present_set_tree_pixmap(toplvl_window, old_pixmap, vblank->pixmap); in present_wnmd_execute()
499 vblank->pixmap->refcnt++; in present_wnmd_execute()
503 DamageDamageRegion(&vblank->window->drawable, damage); in present_wnmd_execute()
508 xorg_list_del(&vblank->event_queue); in present_wnmd_execute()
512 vblank->flip = FALSE; in present_wnmd_execute()
515 vblank, crtc_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id)); in present_wnmd_execute()
519 present_execute_copy(vblank, crtc_msc); in present_wnmd_execute()
520 assert(!vblank->queued); in present_wnmd_execute()
522 if (present_wnmd_queue_vblank(screen, window, vblank->crtc, in present_wnmd_execute()
523 vblank->event_id, crtc_msc + 1) in present_wnmd_execute()
525 xorg_list_add(&vblank->event_queue, &window_priv->idle_queue); in present_wnmd_execute()
526 xorg_list_append(&vblank->window_list, &window_priv->vblank); in present_wnmd_execute()
532 present_execute_post(vblank, ust, crtc_msc); in present_wnmd_execute()
578 present_vblank_ptr vblank, tmp; in present_wnmd_pixmap() local
609 xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->vblank, window_list) { in present_wnmd_pixmap()
611 if (!vblank->pixmap) in present_wnmd_pixmap()
614 if (!vblank->queued) in present_wnmd_pixmap()
617 if (vblank->target_msc != target_msc) in present_wnmd_pixmap()
620 present_vblank_scrap(vblank); in present_wnmd_pixmap()
621 if (vblank->flip_ready) in present_wnmd_pixmap()
622 present_wnmd_re_execute(vblank); in present_wnmd_pixmap()
626 vblank = present_vblank_create(window, in present_wnmd_pixmap()
642 if (!vblank) in present_wnmd_pixmap()
648 vblank->exec_msc = vblank->target_msc - 1; in present_wnmd_pixmap()
650 xorg_list_append(&vblank->event_queue, &window_priv->exec_queue); in present_wnmd_pixmap()
651 vblank->queued = TRUE; in present_wnmd_pixmap()
652 if (crtc_msc < vblank->exec_msc) { in present_wnmd_pixmap()
653 …if (present_wnmd_queue_vblank(screen, window, target_crtc, vblank->event_id, vblank->exec_msc) == … in present_wnmd_pixmap()
659 present_wnmd_execute(vblank, ust, crtc_msc); in present_wnmd_pixmap()
668 present_vblank_ptr vblank; in present_wnmd_abort_vblank() local
672 xorg_list_for_each_entry(vblank, &window_priv->exec_queue, event_queue) { in present_wnmd_abort_vblank()
673 if (vblank->event_id == event_id) { in present_wnmd_abort_vblank()
674 xorg_list_del(&vblank->event_queue); in present_wnmd_abort_vblank()
675 vblank->queued = FALSE; in present_wnmd_abort_vblank()
679 xorg_list_for_each_entry(vblank, &window_priv->flip_queue, event_queue) { in present_wnmd_abort_vblank()
680 if (vblank->event_id == event_id) { in present_wnmd_abort_vblank()
681 xorg_list_del(&vblank->event_queue); in present_wnmd_abort_vblank()
682 vblank->queued = FALSE; in present_wnmd_abort_vblank()