mirror of
https://github.com/X11Libre/xf86-video-amdgpu.git
synced 2026-03-24 01:24:31 +00:00
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:
committed by
Michel Dänzer
parent
3e08409344
commit
4441c7c6dd
@@ -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++;
|
||||
}
|
||||
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user