compositor-drm: Calculate atomic-commit flags earlier

Shift up our calculation of the flags we use for atomic commits. We will
later use this to differentiate between test-only and full commits when
printing debug information inside drm_output_state_apply_atomic.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Daniel Stone 6 years ago
parent ce62cb3d05
commit 3158a2d42e
  1. 25
      libweston/compositor-drm.c

@ -2497,12 +2497,24 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state,
struct drm_output_state *output_state, *tmp; struct drm_output_state *output_state, *tmp;
struct drm_plane *plane; struct drm_plane *plane;
drmModeAtomicReq *req = drmModeAtomicAlloc(); drmModeAtomicReq *req = drmModeAtomicAlloc();
uint32_t flags = 0; uint32_t flags;
int ret = 0; int ret = 0;
if (!req) if (!req)
return -1; return -1;
switch (mode) {
case DRM_STATE_APPLY_SYNC:
flags = 0;
break;
case DRM_STATE_APPLY_ASYNC:
flags = DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_NONBLOCK;
break;
case DRM_STATE_TEST_ONLY:
flags = DRM_MODE_ATOMIC_TEST_ONLY;
break;
}
if (b->state_invalid) { if (b->state_invalid) {
struct weston_head *head_base; struct weston_head *head_base;
struct drm_head *head; struct drm_head *head;
@ -2595,17 +2607,6 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state,
goto out; goto out;
} }
switch (mode) {
case DRM_STATE_APPLY_SYNC:
break;
case DRM_STATE_APPLY_ASYNC:
flags |= DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_NONBLOCK;
break;
case DRM_STATE_TEST_ONLY:
flags |= DRM_MODE_ATOMIC_TEST_ONLY;
break;
}
ret = drmModeAtomicCommit(b->drm.fd, req, flags, b); ret = drmModeAtomicCommit(b->drm.fd, req, flags, b);
/* Test commits do not take ownership of the state; return /* Test commits do not take ownership of the state; return

Loading…
Cancel
Save