[PATCH] Fix RandR CRTC transforms

Alex Deucher alexdeucher at gmail.com
Fri Jan 15 07:24:35 PST 2016


On Fri, Jan 15, 2016 at 2:51 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Currently, Xorg will only transform the cursor as of the first time the
> cursor image changes after a transform is set.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80678
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  src/drmmode_display.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 9880ee3..0424dbd 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -673,7 +673,6 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
>                 crtc->x = x;
>                 crtc->y = y;
>                 crtc->rotation = rotation;
> -               crtc->transformPresent = FALSE;
>
>                 output_ids = calloc(sizeof(uint32_t), xf86_config->num_output);
>                 if (!output_ids) {
> @@ -839,6 +838,19 @@ drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
>                 ptr[i] = cpu_to_le32(image[i]);
>  }
>
> +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,903,0)
> +
> +static Bool drmmode_load_cursor_argb_check(xf86CrtcPtr crtc, CARD32 * image)
> +{
> +       /* Fall back to SW cursor if the CRTC is transformed */
> +       if (crtc->transformPresent)
> +               return FALSE;
> +
> +       drmmode_load_cursor_argb(crtc, image);
> +       return TRUE;
> +}
> +
> +#endif
>
>  static void
>  drmmode_hide_cursor (xf86CrtcPtr crtc)
> @@ -995,6 +1007,9 @@ static xf86CrtcFuncsRec drmmode_crtc_funcs = {
>      .show_cursor = drmmode_show_cursor,
>      .hide_cursor = drmmode_hide_cursor,
>      .load_cursor_argb = drmmode_load_cursor_argb,
> +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,903,0)
> +    .load_cursor_argb_check = drmmode_load_cursor_argb_check,
> +#endif
>
>      .gamma_set = drmmode_crtc_gamma_set,
>      .shadow_create = drmmode_crtc_shadow_create,
> --
> 2.6.2
>
> _______________________________________________
> xorg-driver-ati mailing list
> xorg-driver-ati at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati


More information about the xorg-driver-ati mailing list