From 0f52841b31317787e8d45fb7f5946e8e375fe08a Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 14 Mar 2014 14:17:25 +0000 Subject: [PATCH] intel-virtual-output: Set explicit planning area Otherwise the nvidia driver gets very, very confused. References: https://bugs.freedesktop.org/show_bug.cgi?id=76146 Signed-off-by: Chris Wilson --- tools/virtual.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/virtual.c b/tools/virtual.c index 0dfd308..599eb1e 100644 --- a/tools/virtual.c +++ b/tools/virtual.c @@ -941,6 +941,20 @@ static int clone_init_xfer(struct clone *clone) return 0; } +static XRRPanning *set_panning(XRRPanning *p, struct output *o) +{ + memset(p, 0, sizeof(*p)); + + p->timestamp = CurrentTime; + + p->track_left = p->left = o->x; + p->track_top = p->top = o->y; + p->track_width = p->width = mode_width(&o->mode, o->rotation); + p->track_height = p->height = mode_height(&o->mode, o->rotation); + + return p; +} + static void clone_update(struct clone *clone) { if (!clone->rr_update) @@ -1254,7 +1268,7 @@ err: if (ret) goto err; - ret = XRRSetPanning(dst->dpy, res, rr_crtc, memset(&panning, 0, sizeof(panning))); + ret = XRRSetPanning(dst->dpy, res, rr_crtc, set_panning(&panning, dst)); DBG(("%s-%s: XRRSetPanning %s\n", DisplayString(dst->dpy), dst->name, ret ? "failed" : "success")); (void)ret; -- 1.9.0