Add drmmode_crtc_can_flip helper

To reduce code duplication between DRI2 and Present. No functional
change intended yet.

(Ported from radeon commit 9bc3eef74452d924f9101c024f66ad9b14c404c8)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Michel Dänzer
2017-08-01 17:29:16 +09:00
committed by Michel Dänzer
parent 3e08409344
commit 4441c7c6dd
3 changed files with 15 additions and 9 deletions

View File

@@ -655,14 +655,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++;
}

View File

@@ -228,16 +228,14 @@ amdgpu_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++;
}

View File

@@ -132,6 +132,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)