modesetting: Suspend and resume flipping with DPMS
DPMS would prevent page flip / vblank events from being raised, freezing the screen until PRIME flipping was reinitialized. To handle DPMS cleanly, suspend PRIME page flipping when DPMS mode is not on, and resume it when DPMS mode is on. v1: Initial commit v2: Moved flipping_active check from previous commit to here v3: Unchanged v4: Unchanged v5: Move flipping_active check to sink support commit v6: Rebase onto ToT v7: Unchanged Reviewed-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Alex Goins <agoins@nvidia.com>
This commit is contained in:
parent
80e64dae8a
commit
500853086d
|
@ -1405,12 +1405,22 @@ drmmode_output_dpms(xf86OutputPtr output, int mode)
|
|||
drmModeConnectorSetProperty(drmmode->fd, koutput->connector_id,
|
||||
drmmode_output->dpms_enum_id, mode);
|
||||
|
||||
if (mode == DPMSModeOn && crtc) {
|
||||
if (crtc) {
|
||||
drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
|
||||
if (drmmode_crtc->need_modeset)
|
||||
drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation,
|
||||
crtc->x, crtc->y);
|
||||
|
||||
if (mode == DPMSModeOn) {
|
||||
if (drmmode_crtc->need_modeset)
|
||||
drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation,
|
||||
crtc->x, crtc->y);
|
||||
|
||||
if (drmmode_crtc->enable_flipping)
|
||||
drmmode_InitSharedPixmapFlipping(crtc, drmmode_crtc->drmmode);
|
||||
} else {
|
||||
if (drmmode_crtc->enable_flipping)
|
||||
drmmode_FiniSharedPixmapFlipping(crtc, drmmode_crtc->drmmode);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue