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.
--- qxl.orig/qxl_display.c 2014-05-19 09:31:00.327028070 -0400
+++ qxl/qxl_display.c 2014-05-19 09:27:28.298217035 -0400
@@ -574,10 +574,6 @@
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