diff options
author | Miguel A. Vico | 2017-02-27 16:17:02 -0800 |
---|---|---|
committer | Miguel A. Vico | 2017-02-27 16:34:57 -0800 |
commit | 0c13397cfb664feded35ae04f83dac78fb7f60bc (patch) | |
tree | 6fb7e205805359f0689c6172d5e8119f1c625a91 /0010-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch | |
parent | 0351b429af478ee4c2b90520bf793438c3526490 (diff) | |
download | aur-0c13397cfb664feded35ae04f83dac78fb7f60bc.tar.gz |
Update to weston 2.0.0
Some of the patches are no longer required as they were merged upstream.
The rest were rebased on top of weston 2.0.0 and conflicts resolved.
Signed-off-by: Miguel A. Vico <mvicomoya@nvidia.com>
Diffstat (limited to '0010-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch')
-rw-r--r-- | 0010-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/0010-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch b/0010-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch deleted file mode 100644 index 355329e0f58d..000000000000 --- a/0010-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch +++ /dev/null @@ -1,86 +0,0 @@ -From e08b0882b29ce39ef67742a1caa53af4b6bb18bd Mon Sep 17 00:00:00 2001 -From: "Miguel A. Vico" <mvicomoya@nvidia.com> -Date: Tue, 1 Mar 2016 22:19:14 +0100 -Subject: [PATCH 10/12] compositor-drm: Gracefully handle vblank and flip - invalid timestamps -X-NVConfidentiality: public - -Instant query for vblank timestamp may always fail, resulting in -never scheduling a full repaint in drm_output_start_repaint_loop(). - -Additionally, timestamp provided in page_flip_handler() may also be -invalid. - -This change makes both drm_output_start_repaint_loop() and -page_flip_handler() to schedule a full repaint in any of the -situations above. - -Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> ---- - libweston/compositor-drm.c | 28 +++++++++++++++++++++++++--- - 1 file changed, 25 insertions(+), 3 deletions(-) - -diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c -index df357c3c809b..044633f7c740 100644 ---- a/libweston/compositor-drm.c -+++ b/libweston/compositor-drm.c -@@ -1,6 +1,7 @@ - /* - * Copyright © 2008-2011 Kristian Høgsberg - * Copyright © 2011 Intel Corporation -+ * Copyright © 2016 NVIDIA Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the -@@ -799,8 +800,16 @@ drm_output_start_repaint_loop(struct weston_output *output_base) - vbl.request.type |= drm_waitvblank_pipe(output); - ret = drmWaitVBlank(backend->drm.fd, &vbl); - -- /* Error ret or zero timestamp means failure to get valid timestamp */ -- if ((ret == 0) && (vbl.reply.tval_sec > 0 || vbl.reply.tval_usec > 0)) { -+ if (ret) { -+ /* Immediate query failed. It may always fail so we'll never get -+ * a valid timestamp to update msc and call into finish frame. -+ * Hence, jump to finish frame here. -+ */ -+ goto finish_frame; -+ } -+ -+ /* Zero timestamp means failure to get valid timestamp */ -+ if (vbl.reply.tval_sec > 0 || vbl.reply.tval_usec > 0) { - ts.tv_sec = vbl.reply.tval_sec; - ts.tv_nsec = vbl.reply.tval_usec * 1000; - -@@ -821,7 +830,7 @@ drm_output_start_repaint_loop(struct weston_output *output_base) - } - } - -- /* Immediate query didn't provide valid timestamp. -+ /* Immediate query succeeded, but didn't provide valid timestamp. - * Use pageflip fallback. - */ - fb_id = output->current->fb_id; -@@ -907,6 +916,19 @@ page_flip_handler(int fd, unsigned int frame, - else if (!output->vblank_pending) { - ts.tv_sec = sec; - ts.tv_nsec = usec * 1000; -+ -+ /* Zero timestamp means failure to get valid timestamp, so -+ * immediately finish frame -+ * -+ * FIXME: Driver should never return an invalid page flip -+ * timestamp */ -+ if (ts.tv_sec == 0 && ts.tv_nsec == 0) { -+ weston_compositor_read_presentation_clock( -+ output->base.compositor, -+ &ts); -+ flags = WP_PRESENTATION_FEEDBACK_INVALID; -+ } -+ - weston_output_finish_frame(&output->base, &ts, flags); - - /* We can't call this from frame_notify, because the output's --- -2.10.2 - |