Skip to contentSkip to conversation

Use surface_id 0 for primary surface on all monitors

PATCH In review David Mansfield 2 participants 2 messages Jun 3, 2014 – Jun 4, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Use surface_id 0 for primary surface on all monitors

spice-server and downstream code expect that the primary surface will always have surface_id = 0, while in reality, once allocated, the surface_id in qxl.ko is NEVER 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 is only mapped to the correct identifier (i.e. 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.

Signature · 3 lines
Thanks,
David Mansfield
Cobite, INC.
qxl_display.c +4 -0
@@ -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;

_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel

#1 lore raw

I've hand fixed this up and applied it, but please in future submit patches using the guidelines in Documentation/SubmittingPatches.

Dave.

Quoted 5 lines · David Mansfield

spice-server and downstream code expect that the primary surface will always have surface_id = 0, while in reality, once allocated, the surface_id in qxl.ko is NEVER 0. In a dual head environment, all monitors render portions of the primary surface.

Quoted 7 lines

However, when the monitor config events are generated and sent, the primary surface is only mapped to the correct identifier (i.e. 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.

I've hand fixed this up and applied it, but please in future submit patches using the guidelines in Documentation/SubmittingPatches.

Dave.