Re: [Intel-gfx] [BUG, bisect] drm/i915: mouse pointer lags and overshoots

Chris Wilson
2015-01-19T20:43:55Z

On Mon, Jan 19, 2015 at 08:40:24AM -0800, Matt Roper wrote:
> On Mon, Jan 19, 2015 at 11:04:04AM +0000, Chris Wilson wrote:
> > On Mon, Jan 19, 2015 at 11:51:43AM +0100, Daniel Vetter wrote:
> > > There's also an issue in (most) X drivers which exaberates this
> > > issues: When changing the cursor buffer the X cursor code does a a)
> > > disable cursor b) update cursor image c) enable cursor cycle.
> >
> > Notably not -intel on which the bug has been observed. And more
> > importantly, the slow downs don't seem to correlate with cursor change,
> > just cursor movement.
> > -Chris
> >
> > --
> > Chris Wilson, Intel Open Source Technology Centre
>
> It seems that the simple fix for this case (movement only) is to just
> skip the prepare_fb/cleanup_fb calls (and the associated vblank wait) in
> the transitional plane helper when newfb == oldfb. I just posted a
> small patch that makes that change (and solves the cursor lag for me).
>
> This won't solve the case if userspace uses a different framebuffer for
> each update (while trying to update faster than the refresh rate). Is
> there any existing userspace that behaves this way that we can test
> with?

-modesetting and say moving the cursor in/out of an xterm very fast. or
similarly with

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 5b45618..3873893 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -5182,7 +5182,6 @@ sna_cursors_init(ScreenPtr screen, struct sna *sna)
cursor_info->MaxWidth = sna->cursor.max_size;
cursor_info->MaxHeight = sna->cursor.max_size;
cursor_info->Flags = (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
- HARDWARE_CURSOR_UPDATE_UNHIDDEN |
HARDWARE_CURSOR_ARGB);

cursor_info->RealizeCursor = sna_realize_cursor;

--
Chris Wilson, Intel Open Source Technology Centre