Re: [PATCH 1/2] [qxl.ko] stability for dual head: use surface_id 0 for primary surface on all monitors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]