AES stylus displays significantly more aliasing with libinput than with xinput
This is an enhancement request to reach feature parity with xinput. It is a followup on issue #94 (closed).
- Product: libinput 1.12.0+ (master)
- Distribution: Fedora 28
- Input device: Wacom HID 486A Pen
- Type: enhancement / performance regression vs. xinput
Using a Wacom AES pen with libinput results in significantly more aliasing than when using xinput. In practice, this means that users migrating from Xorg to Wayland will notice a significant performance regression when using an AES pen. @jigpu suggested on GitHub that this might be due to a lack of smoothing.
Below are attached three PDF documents demonstrating the issue. They were all generated under very similar conditions using Xournal, writing in portrait mode on an A4 page maximized to fit the screen height. The issue can be reproduced using different programs, using both GTK2 (Xournal, GIMP, Krita) or GTK3 (MyPaint). Whether the palm was touching the screen or not did not seem to make any difference.
The three configurations are:
- The reference: stock Fedora 28 with Xorg (xinput 1.6.2) -> Xorg-xinput.pdf
- Before fix !58 (closed): stock Fedora 28 with Wayland (libinput 1.11.902) -> Wayland-libinput-1-11-902.pdf
- Current master: Fedora 28 with Gnome Shell master & libinput master (1.12.0+), built today using jhbuild -> Wayland-libinput-1-12-0.pdf
The aliasing issue can easily be seen by zooming at 400%. It is quite noticeable without zoom on a HiDPI screen.
The artifacts have indeed disappeared after fix !58 (closed), however both xinput and libinput master still show small jumps at the beginning of strokes. This is probably due to the AES technology, but we might still be able to do something about it (and maybe even improve on xinput).
Overall, the current result from xinput seems more aesthetically pleasing.
I have also recorded the raw input -> recording.yml
(using sudo (which libinput) record -o recording.yml /dev/input/event13
in fish
syntax)
As well as the event log -> debug-events.log
(using sudo (which libinput) debug-events > debug-events.log
)
Finally, I am not sure whether smoothing should be handled by libinput or by the application. If we decide to implement it in libinput, then it might be a good idea to make it optional or configurable (possibly at a later time), so that sufficiently clever applications can still access the raw data and apply their own smoothing. But having good defaults would be nice to ease the Xorg -> Wayland transition, and none of the applications that I have tested so far seemed to apply any kind of smoothing. So, given the current context, I would rather have some smoothing applied directly by libinput.
Let me know if you need any further information.