Commit 6d24c1c5 authored by Michael Zoran's avatar Michael Zoran Committed by Eric Anholt

drm/vc4: Don't wait for vblank when updating the cursor

Commonly used desktop environments such as xfce4 and gnome
on debian sid can flood the graphics drivers with cursor
updates.  Because the current implementation is waiting
for a vblank between cursor updates, this will cause the
display to hang for a long time since a typical refresh
rate is only 60Hz.

This is unnecessary and unexpected by user mode software,
so simply swap out the cursor frame buffer without waiting.
Signed-off-by: default avatarMichael Zoran <mzoran@crowfest.net>
Reviewed-by: default avatarEric Anholt <eric@anholt.net>
Link: http://patchwork.freedesktop.org/patch/msgid/20170224015431.24583-1-mzoran@crowfest.net
parent fb4fe33f
......@@ -20,6 +20,7 @@
#include "vc4_drv.h"
#include "vc4_regs.h"
#include "drm_atomic.h"
#include "drm_atomic_helper.h"
#include "drm_fb_cma_helper.h"
#include "drm_plane_helper.h"
......@@ -769,12 +770,6 @@ vc4_update_plane(struct drm_plane *plane,
if (!plane_state)
goto out;
/* If we're changing the cursor contents, do that in the
* normal vblank-synced atomic path.
*/
if (fb != plane_state->fb)
goto out;
/* No configuring new scaling in the fast path. */
if (crtc_w != plane_state->crtc_w ||
crtc_h != plane_state->crtc_h ||
......@@ -783,6 +778,11 @@ vc4_update_plane(struct drm_plane *plane,
goto out;
}
if (fb != plane_state->fb) {
drm_atomic_set_fb_for_plane(plane->state, fb);
vc4_plane_async_set_fb(plane, fb);
}
/* Set the cursor's position on the screen. This is the
* expected change from the drm_mode_cursor_universal()
* helper.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment