[PATCH xserver] prime: Damage full destination rectangle when we start dirty tracking
Alex Deucher
alexdeucher at gmail.com
Thu Dec 3 09:38:33 PST 2015
On Thu, Dec 3, 2015 at 3:04 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> This makes sure that the destination pixmap contents will be fully
> initialized. Without this, a PRIME output starts out with garbage.
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> dix/pixmap.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/dix/pixmap.c b/dix/pixmap.c
> index 05aebc4..11d83fe 100644
> --- a/dix/pixmap.c
> +++ b/dix/pixmap.c
> @@ -173,6 +173,9 @@ PixmapStartDirtyTracking(PixmapPtr src,
> {
> ScreenPtr screen = src->drawable.pScreen;
> PixmapDirtyUpdatePtr dirty_update;
> + RegionPtr damageregion;
> + RegionRec dstregion;
> + BoxRec box;
>
> dirty_update = calloc(1, sizeof(PixmapDirtyUpdateRec));
> if (!dirty_update)
> @@ -205,6 +208,24 @@ PixmapStartDirtyTracking(PixmapPtr src,
> return FALSE;
> }
>
> + /* Damage destination rectangle so that the destination pixmap contents
> + * will get fully initialized
> + */
> + box.x1 = dirty_update->x;
> + box.y1 = dirty_update->y;
> + if (dirty_update->rotation == RR_Rotate_90 ||
> + dirty_update->rotation == RR_Rotate_270) {
> + box.x2 = dirty_update->x + slave_dst->drawable.height;
> + box.y2 = dirty_update->y + slave_dst->drawable.width;
> + } else {
> + box.x2 = dirty_update->x + slave_dst->drawable.width;
> + box.y2 = dirty_update->y + slave_dst->drawable.height;
> + }
> + RegionInit(&dstregion, &box, 1);
> + damageregion = DamageRegion(dirty_update->damage);
> + RegionUnion(damageregion, damageregion, &dstregion);
> + RegionUninit(&dstregion);
> +
> DamageRegister(&src->drawable, dirty_update->damage);
> xorg_list_add(&dirty_update->ent, &screen->pixmap_dirty_list);
> return TRUE;
> --
> 2.6.2
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list