Skip to content

Debug protocol

Daniel Stone requested to merge daniels/weston:debug-protocol into master

This MR adds a debug protocol to Weston.

The debug protocol provides compositor -> client streams of no fixed structure, intended for providing debugging information which would not be suitable for ordinary logging. This includes an example client which can bind to the streams and send their content to a particular file or stdout.

Several debug streams are provided:

  • log: the log output which would ordinarily be provided through the --log argument to Weston on startup
  • proto: output similar to starting Weston with WAYLAND_DEBUG=server, annotated with client arguments
  • scene-graph: a dump of how Weston output is painted, including each output and the status of its repaint loop, and a walk through layers/views/surfaces/buffers dumping information about how they were painted
  • xwm-wm-x11: information about the built-in XWayland X11 window manager, previously available by compiling with the WM_DEBUG define
  • drm-backend: information from a patch previously available as 'drm debug', providing information about assignment of views to planes, application of output status (atomic commits or drmModeSetCrtc/drmModePageFlip), which is not suitable for the main log due to sheer volume

This is v6 of a previous patchset; v5 was on wayland-devel@. Changes from v5 include:

  • add description argument to protocol to provide human-readable descriptions of each scope
  • tighten up weston-debug option handling, particularly when requesting non-existent scope names
  • take d117f33d into account by changing __version__ to @version@ in weston-debug manpage
  • make libweston debug internals safe against NULL scopes
  • cosmetic fixes to scene-graph printing
  • signedness fixes for DRM backend prints
  • mystery crash fix, by not reusing varargs

Fixes #133 (closed)

Merge request reports