On 05/19/2014 10:01 AM, David Mansfield wrote:
spice-server and downstream code expect that the primary surface will always have surface_id = 0. In a dual head environment, all monitors render portions of the primary surface.

However, when the monitor config events are generated and sent, the primary surface (which has an internal id which is NEVER 0 once it is allocated), is only mapped to the correct identifier (0) for the primary head (where crtc index is 0).

The fix is to look at the "primary" flag in the bo and always use id 0, irrespective of which head is being configured.


Crap. This patch was reversed... Sorry.  Here's the "forward" patch.

Thanks,
David

--- qxl/qxl_display.c	2014-05-19 09:27:28.298217035 -0400
+++ qxl.orig/qxl_display.c	2014-05-19 09:31:00.327028070 -0400
@@ -574,6 +574,10 @@
 			   bo->surf.height, bo->surf.stride, bo->surf.format);
 		qxl_io_create_primary(qdev, base_offset, bo);
 		bo->is_primary = true;
+	}
+
+	if (bo->is_primary) {
+		DRM_DEBUG_KMS("setting surface_id to 0 for primary surface %d on crtc %d\n", bo->surface_id, qcrtc->index);
 		surf_id = 0;
 	} else {
 		surf_id = bo->surface_id;
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to