present: Use crtc's screen present operation for syncing
Signed-off-by: Łukasz Spintzyk <lukasz.spintzyk@synaptics.com>
This commit is contained in:
parent
d03c0de77b
commit
908deb0895
|
@ -78,6 +78,9 @@ present_check_flip(RRCrtcPtr crtc,
|
||||||
WindowPtr root = screen->root;
|
WindowPtr root = screen->root;
|
||||||
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
||||||
|
|
||||||
|
if (crtc) {
|
||||||
|
screen_priv = present_screen_priv(crtc->pScreen);
|
||||||
|
}
|
||||||
if (reason)
|
if (reason)
|
||||||
*reason = PRESENT_FLIP_REASON_UNKNOWN;
|
*reason = PRESENT_FLIP_REASON_UNKNOWN;
|
||||||
|
|
||||||
|
@ -177,11 +180,14 @@ static int
|
||||||
present_get_ust_msc(ScreenPtr screen, RRCrtcPtr crtc, uint64_t *ust, uint64_t *msc)
|
present_get_ust_msc(ScreenPtr screen, RRCrtcPtr crtc, uint64_t *ust, uint64_t *msc)
|
||||||
{
|
{
|
||||||
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
||||||
|
present_screen_priv_ptr crtc_screen_priv = screen_priv;
|
||||||
|
if (crtc)
|
||||||
|
crtc_screen_priv = present_screen_priv(crtc->pScreen);
|
||||||
|
|
||||||
if (crtc == NULL)
|
if (crtc == NULL)
|
||||||
return present_fake_get_ust_msc(screen, ust, msc);
|
return present_fake_get_ust_msc(screen, ust, msc);
|
||||||
else
|
else
|
||||||
return (*screen_priv->info->get_ust_msc)(crtc, ust, msc);
|
return (*crtc_screen_priv->info->get_ust_msc)(crtc, ust, msc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -212,7 +218,7 @@ present_queue_vblank(ScreenPtr screen,
|
||||||
ret = present_fake_queue_vblank(screen, event_id, msc);
|
ret = present_fake_queue_vblank(screen, event_id, msc);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
present_screen_priv_ptr screen_priv = present_screen_priv(crtc->pScreen);
|
||||||
ret = (*screen_priv->info->queue_vblank) (crtc, event_id, msc);
|
ret = (*screen_priv->info->queue_vblank) (crtc, event_id, msc);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -511,6 +517,9 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||||
WindowPtr window = vblank->window;
|
WindowPtr window = vblank->window;
|
||||||
ScreenPtr screen = window->drawable.pScreen;
|
ScreenPtr screen = window->drawable.pScreen;
|
||||||
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
|
||||||
|
if (vblank && vblank->crtc) {
|
||||||
|
screen_priv=present_screen_priv(vblank->crtc->pScreen);
|
||||||
|
}
|
||||||
|
|
||||||
if (present_execute_wait(vblank, crtc_msc))
|
if (present_execute_wait(vblank, crtc_msc))
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -62,6 +62,10 @@ present_vblank_create(WindowPtr window,
|
||||||
present_vblank_ptr vblank;
|
present_vblank_ptr vblank;
|
||||||
PresentFlipReason reason = PRESENT_FLIP_REASON_UNKNOWN;
|
PresentFlipReason reason = PRESENT_FLIP_REASON_UNKNOWN;
|
||||||
|
|
||||||
|
if (target_crtc) {
|
||||||
|
screen_priv = present_screen_priv(target_crtc->pScreen);
|
||||||
|
}
|
||||||
|
|
||||||
vblank = calloc (1, sizeof (present_vblank_rec));
|
vblank = calloc (1, sizeof (present_vblank_rec));
|
||||||
if (!vblank)
|
if (!vblank)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user