[PATCH weston] compositor-drm: disable hardware cursors

Hardening rdp.effort at gmail.com
Tue May 19 01:17:49 PDT 2015


Le 19/05/2015 09:26, Pekka Paalanen a écrit :
> From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> 
> With the recent universal plane and atomic modeset / nuclear pageflip
> development in the kernel, cursor content updates on Intel are currently causing
> an extra wait for vblank. This drops Weston's framerate to a fraction by
> 2 when cursor contents update. This combined with the damage tracking
> bug in Weston which causes cursor content updates on every frame the
> cursor moves makes using hw cursors really bad.
> 
> It is possible that the Intel DRM driver will get fixed and cursor
> updates there revert to their old behaviour on the contemporary KMS API.
> However, it is hardware dependant whether cursor updates can happen
> immediately.  Some other hardware, especially ARM-related, may not be
> able to do immediate updates. Therefore it is better to just not even
> try - we should rely only on the lowest common denominator behaviour
> between hardware and drivers as there is no and will not be any way to
> reliably detect it.
> 
> Note, that while having different drivers do different things (immediate
> update vs. update that gets latched on the next vblank), we cannot
> rearrange the contemporary KMS API calls such that it would always work
> fine. Either some hardware would update the cursor too early, or other
> hardware would update the cursor too late and perhaps cause the
> framerate decimation.
> 
> Mark hardware cursors broken by default. This avoids using them, and
> works around the immediate problem of framerate issues in Weston. This
> follows the same reasoning why hardware overlay planes have been
> disabled by default for a long time.
> 
> This disablement will be removed once the current code for hardware
> planes and cursors is replaced with code using the atomic KMS API.
> 
> The Intel driver change that exposed this problem is
> https://github.com/torvalds/linux/commit/38f3ce3af5742eb5a3e9b01997f5ab85109c5762
> which is first included in Linux 4.0-rc1.
> 
> Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> Cc: nerdopolis <bluescreen_avenger at verizon.net>
> Cc: Daniel Stone <daniel at fooishbar.org>
> Cc: Giulio Camuffo <giuliocamuffo at gmail.com>
> ---
> 
> There are no bug reports or emails to be referenced here, are there?
> At least I couldn't find any.
> 
> Thanks,
> pq
> 
>  src/compositor-drm.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/src/compositor-drm.c b/src/compositor-drm.c
> index 313860b..0a9af5d 100644
> --- a/src/compositor-drm.c
> +++ b/src/compositor-drm.c
> @@ -2817,9 +2817,17 @@ drm_compositor_create(struct wl_display *display,
>  	if (ec == NULL)
>  		return NULL;
>  
> -	/* KMS support for sprites is not complete yet, so disable the
> -	 * functionality for now. */
> +	/*
> +	 * KMS support for hardware planes cannot properly synchronize
> +	 * without nuclear page flip. Without nuclear/atomic, hw plane
> +	 * and cursor plane updates would either tear or cause extra
> +	 * waits for vblanks which means dropping the compositor framerate
> +	 * to a fraction.
> +	 *
> +	 * These can be enabled again when nuclear/atomic support lands.
> +	 */
>  	ec->sprites_are_broken = 1;
> +	ec->cursors_are_broken = 1;
>  
>  	section = weston_config_get_section(config, "core", NULL, NULL);
>  	if (get_gbm_format_from_section(section,
> 
Perhaps it would be nice if the most adventurous of us could re-enable
the cursors using a configuration file option...

Except this non blocking remark,
Reviewed-By: David FORT <contact at hardening-consulting.com>


-- 
David FORT
website: http://www.hardening-consulting.com/



More information about the wayland-devel mailing list