- 14 Mar, 2017 1 commit
-
-
Daniel Stone authored
In preparation for grouping output repaint together where possible, switch the per-output repaint timer, to a global timer which iterates across all outputs. This is implemented by storing the absolute time for the next repaint for each output locally, and maintaining a global timer which iterates all of them, scheduling the repaint for the first available time. Signed-off-by:
Daniel Stone <daniels@collabora.com> Cc: Mario Kleiner <mario.kleiner.de@gmail.com> Cc: Pekka Paalanen <pekka.paalanen@collabora.co.uk> [Pekka: The comment about 1 ms delay.] Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 13 Mar, 2017 8 commits
-
-
Daniel Stone authored
glibc 2.25 produces a warning when sysmacros.h is not directly included but major() is used, as it is intended to be moved to sysmacros.h and only there. Include it to keep the build happy. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>
-
Daniel Stone authored
GCC 7 now warns on case statements falling through without an explicit comment that falling through is OK. Insert some to make it happy. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>
-
Daniel Stone authored
repaint_scheduled is actually cleverly a quad-state, disguised as a boolean. There are four possible conditions for the repaint loop to be in at any time: - loop idle; no repaint will occur until specifically requested, which may be never (repaint_scheduled == 0) - loop schedule to begin: the loop was previously idle, but due to a repaint-schedule request, we will call the start_repaint_loop hook in the next idle task - repaint scheduled: the compositor has definitively scheduled a repaint request for this output, which will occur in fixed time - awaiting repaint completion: the backend has not yet signaled completion of the last repaint request, and the compositor will not schedule another until it does so All but the first condition were previously conflated as repaint_scheduled == 1, but break them out into separate conditions to aid clarity, backed up by some asserts. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
It is only used as a binary value. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
On startup, we cannot lock on to the repaint timer because it is unknown to us. We deal with this by claiming that the moment of entry into the repaint loop is the moment a frame returned, causing finish_frame to delay our initial repaint to (refresh_time - repaint_delay), typically around 9ms of utterly wasted time. Add an explicit stamp == NULL, to determine that we are just beginning our repaint loop, that the timings are in fact totally invalid, and that it would be beneficial to repaint the output immediately. This will only trigger when the display had previously been disabled or the previous state is unknown, e.g. at startup, or coming back from DPMS off. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
Rather than determining the time until next-frame repaint in relative space (time until repaint), determine it first in absolute space, and then later convert this to relative. This will later allow us to store these per-output, so we can have a single idle timer which will allow us to aggregate multiple repaints together when timing allows. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
Add helpers to subtract two timespecs, then return the difference in either milliseconds or nanoseconds. These will be used to compare timestamps during the repaint cycle. Signed-off-by:
Daniel Stone <daniels@collabora.com> Suggested-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
Paralleling timespec_to_nsec, converts to milliseconds. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> [Pekka: added doc about flooring] Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 08 Mar, 2017 2 commits
-
-
Daniel Stone authored
Add a (timespec) = (timespec) + (msec) helper, to save intermediate conversions in its users. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
Add a (timespec) = (timespec) + (nsec) helper, to save intermediate conversions to nanoseconds in its users. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 07 Mar, 2017 1 commit
-
-
Emmanuel Gil Peyrot authored
Weston will not repaint until previous update has been acked by a pageflip event coming from the drm driver. However, some buggy drivers won’t return those events or will stop sending them at some point and Weston output repaints will completely freeze. To ease developers’ task in testing their drivers, this patch makes compositor-drm use a timer to detect cases where those pageflip events stop coming. This timeout implementation is software only and includes basic features usually found in a watchdog. We simply exit Weston gracefully with a log message and an exit code when the timout is reached. The timeout value can be set via weston.ini by adding a pageflip-timeout=<MILLISECONDS> entry under [core] section. Setting it to 0 disables the timeout feature. v2: - Made sure we would get both the pageflip and the vblank events before stopping the timer. - Reordered the error and success cases in drm_output_pageflip_timer_create() to be more in line with the rest of the code. v3: - Reordered (de)arming of the timer with the code around it to avoid it being rearmed before the current dearming. - Return the proper value for the dispatcher in the pageflip_timeout callback. - Also display the output name in case the timer fires. v4: - Reordered a forgotten timer rearming after its drmModePageFlip(). Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=83884 Signed-off-by: Frederic Plourde <frederic.plourde at collabora.co.uk> Signed-off-by:
Emmanuel Gil Peyrot <emmanuel.peyrot@collabora.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 28 Feb, 2017 2 commits
-
-
Eero Tamminen authored
This emulates extra drawing work by usleep(). This is an enhancement to reproduce the problem in the bug report. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=98833 [Pekka: reordered the help text] Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Eric Engestrom <eric.engestrom@imgtec.com>
-
Pekka Paalanen authored
Don't just dump the raw 32-bit values, try to interpret it as a DRM fourcc too. This prints properly the formats YUYV, NV12 and YU12 supported by Weston. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Eric Engestrom <eric.engestrom@imgtec.com>
-
- 27 Feb, 2017 7 commits
-
-
Emil Velikov authored
Makes the code easier to read and browse through. Signed-off-by:
Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by:
Daniel Stone <daniels@collabora.com>
-
Emil Velikov authored
Already considered and handled as such. Signed-off-by:
Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
Don't import buffers which span multiple outputs, short-cut any attempt to import SHM buffers, and ignore buffers with a global alpha set. I'm not convinced all of these conditions entirely make sense, but this at least makes them equally nonsensical. Differential Revision: https://phabricator.freedesktop.org/D1414Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com>
-
Armin Krezović authored
And properly deconstruct it in drm_output_destroy. Might be useful for finding out which modes are supported before even setting them, in case we want to extend the modesetting API. Signed-off-by:
Armin Krezović <krezovic.armin@gmail.com> Reviewed-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
Previously in picking CRTC -> encoder -> connecting routing, we went for the first triplet we found which claimed to work. Preserving the existing routing means that startup will be faster: on a multi-head system, changing the routing implies disabling both CRTCs, then re-enabling them with a new configuration, which may involve retraining links etc. Furthermore, the existing routing may be set for a reason; each CRTC/encoder is not necessarily as capable as the other, so the routing may be configured to stay within such device limits. Try where possible to respect the routing we pick up, rather than blithely configuring our own. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Daniel Stone authored
Given that we can have render-only devices, or vgem in a class of its own, ignore any non-KMS devices in compositor-drm's device selection. For x86 platforms, this is mostly a non-issue since we look at the udev boot_vga issue, but other architectures which lack this, and have multiple KMS devices present, will hit this. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Emil Velikov <emil.velikov@collabora.com> Reported-by:
Thierry Reding <treding@nvidia.com> Reported-by:
Daniel Vetter <daniel.vetter@intel.com>
-
Bryce Harrington authored
-
- 25 Feb, 2017 1 commit
-
-
Bryce Harrington authored
-
- 21 Feb, 2017 6 commits
-
-
Bryce Harrington authored
-
Bryce Harrington authored
-
Emmanuel Gil Peyrot authored
This symbol wasn’t exported from the weston binary, most likely due to an oversight in 6e2c1249, and because internal modules can link against libshared.la directly it hasn’t been found ever since. This commit makes it possible for external modules to iterate over the configuration file. Signed-off-by:
Emmanuel Gil Peyrot <emmanuel.peyrot@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Acked-by:
Bryce Harrington <bryce@osg.samsung.com>
-
Daniel Stone authored
If we're building with EGL support generally, but without Cairo/GLESv2, building the clients fail, because window.c defines the EGL native types, however platform.h also brings these in. Signed-off-by:
Daniel Stone <daniels@collabora.com> Cc: Emil Velikov <emil.velikov@collabora.com> Cc: Bryce Harrington <brycef@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Tested-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Emil Velikov <emil.velikov@collabora.com> Acked-by:
Bryce Harrington <bryce@osg.samsung.com>
-
Daniel Stone authored
Destroying the shared seat removes the link from so->seat_list. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Acked-by:
Bryce Harrington <bryce@osg.samsung.com>
-
Daniel Stone authored
Don't try to dereference the seat if it's NULL. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com>
-
- 14 Feb, 2017 1 commit
-
-
Bryce Harrington authored
-
- 13 Feb, 2017 2 commits
-
-
Yong Bakos authored
A handful of source files were not using the MIT Expat text in COPYING. Update these files to bring them inline with the rest, standardizing on the MIT Expat text. Signed-off-by:
Yong Bakos <ybakos@humanoriented.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Armin Krezović authored
Signed-off-by:
Armin Krezović <krezovic.armin@gmail.com> Reviewed-by:
Daniel Stone <daniels@collabora.com>
-
- 09 Feb, 2017 4 commits
-
-
Armin Krezović authored
And fix formatting. Signed-off-by:
Armin Krezović <krezovic.armin@gmail.com> Reviewed-by:
Quentin Glidic <sardemff7+git@sardemff7.net>
-
Daniel Stone authored
Remove the last usage of connector_allocator, which was to check for displays which have been hot-unplugged, and replace it with an array which doesn't rely on the connector IDs remaining below 32 (or 64). Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Quentin Glidic <sardemff7+git@sardemff7.net> Reported-by:
Peter Senna Tschudin <peter.senna@collabora.com>
-
Daniel Stone authored
Rather than using connector_allocator to determine whether an output is newly connected or not, use a list walk across all outputs instead. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Quentin Glidic <sardemff7+git@sardemff7.net> Reported-by:
Peter Senna Tschudin <peter.senna@collabora.com>
-
Daniel Stone authored
crtc_allocator was used as a bitmask of CRTC IDs, so we didn't try to use the same CRTC for multiple outputs. Unfortunately, this only works to the extent that CRTC object IDs fit within the bitmask; though they were previously, they are not guaranteed to be under 32 or even 64. Replace the only use of crtc_allocator with a list walk across outputs. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Quentin Glidic <sardemff7+git@sardemff7.net> Reported-by:
Peter Senna Tschudin <peter.senna@collabora.com>
-
- 08 Feb, 2017 2 commits
-
-
Bryce Harrington authored
-
Daniel Stone authored
This reverts commit 0fee977c. This commit introduces a requirement on v4l2_query_ext_ctrl and VIDIOC_QUERY_EXT_CTRL, which were introduced in kernel 3.17. Some Ubuntu LTS releases ship with much older kernels (and, significantly, UAPI), which don't have these. Signed-off-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
- 07 Feb, 2017 3 commits
-
-
Giulio Camuffo authored
Signed-off-by:
Giulio Camuffo <giuliocamuffo@gmail.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
eucan authored
If ivilayer or ivisurf of ivi_view is made invisible in the commit_changes call, we have to damage the weston_view below this ivi_view. Otherwise content of this ivi_view will stay visible. Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
The iteration counter cannot be used to detect non-iterated tests defined with TEST and FAIL_TEST. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Quentin Glidic <sardemff7+git@sardemff7.net>
-