mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
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: Michael Zoran <mzoran@crowfest.net> Reviewed-by: Eric Anholt <eric@anholt.net> Link: http://patchwork.freedesktop.org/patch/msgid/20170224015431.24583-1-mzoran@crowfest.net
This commit is contained in:
parent
fb4fe33f93
commit
6d24c1c591
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user