From: Michel Dänzer <michel.daenzer@xxxxxxx> To reduce code duplication between DRI2 and Present. No functional change intended yet. Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> --- src/drmmode_display.h | 11 +++++++++++ src/radeon_dri2.c | 5 +---- src/radeon_present.c | 8 +++----- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/drmmode_display.h b/src/drmmode_display.h index b9bc8fd8c..4378be86f 100644 --- a/src/drmmode_display.h +++ b/src/drmmode_display.h @@ -139,6 +139,17 @@ enum drmmode_flip_sync { }; +/* Can the page flip ioctl be used for this CRTC? */ +static inline Bool +drmmode_crtc_can_flip(xf86CrtcPtr crtc) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + + return crtc->enabled && + drmmode_crtc->pending_dpms_mode == DPMSModeOn; +} + + static inline void drmmode_fb_reference_loc(int drm_fd, struct drmmode_fb **old, struct drmmode_fb *new, const char *caller, unsigned line) diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c index 35fb60d91..70751b0bf 100644 --- a/src/radeon_dri2.c +++ b/src/radeon_dri2.c @@ -774,14 +774,11 @@ can_flip(ScrnInfoPtr pScrn, DrawablePtr draw, xf86CrtcPtr crtc = config->crtc[i]; drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; - if (!crtc->enabled) - continue; - if (!drmmode_crtc || drmmode_crtc->rotate.bo || drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo) return FALSE; - if (drmmode_crtc->pending_dpms_mode == DPMSModeOn) + if (drmmode_crtc_can_flip(crtc)) num_crtcs_on++; } diff --git a/src/radeon_present.c b/src/radeon_present.c index e3a8f7e2b..85da655db 100644 --- a/src/radeon_present.c +++ b/src/radeon_present.c @@ -243,16 +243,14 @@ radeon_present_check_unflip(ScrnInfoPtr scrn) return FALSE; for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) { - drmmode_crtc_private_ptr drmmode_crtc = config->crtc[i]->driver_private; - - if (!config->crtc[i]->enabled) - continue; + xf86CrtcPtr crtc = config->crtc[i]; + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; if (!drmmode_crtc || drmmode_crtc->rotate.bo || drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo) return FALSE; - if (drmmode_crtc->pending_dpms_mode == DPMSModeOn) + if (drmmode_crtc_can_flip(crtc)) num_crtcs_on++; } -- 2.13.3