summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2017-08-01 17:29:16 +0900
committerMichel Dänzer <michel@daenzer.net>2017-08-03 17:11:30 +0900
commit4441c7c6dde2d71bd44c3031c5679ee3186ea8f9 (patch)
tree4bc912ce361c932180f106119f7d6fa028469153
parent3e08409344a2fd504429522507592f98555bec05 (diff)
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>
-rw-r--r--src/amdgpu_dri2.c5
-rw-r--r--src/amdgpu_present.c8
-rw-r--r--src/drmmode_display.h11
3 files changed, 15 insertions, 9 deletions
diff --git a/src/amdgpu_dri2.c b/src/amdgpu_dri2.c
index a854ce5..b4cb1ec 100644
--- a/src/amdgpu_dri2.c
+++ b/src/amdgpu_dri2.c
@@ -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++;
}
diff --git a/src/amdgpu_present.c b/src/amdgpu_present.c
index cf11d2b..3754569 100644
--- a/src/amdgpu_present.c
+++ b/src/amdgpu_present.c
@@ -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++;
}
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index 309ec67..677f796 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -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)