compositor, drm: set per-surface Presentation feedback flags

PRESENTATION_FEEDBACK_KIND_ZERO_COPY is a flag that needs to be set for
each surface separately. Some surfaces may be zero-copy (as defined by
Presentation feedback) while some are not.

A complication with Weston is that a surface may have multiple views on
screen. All copies (views) of the surface are required to be zero-copy
for the ZERO_COPY flag to be set.

Backends set per-view feedback flags during the assing_planes hook, and
then Weston core collects the flags from all views of a surface.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>
diff --git a/src/compositor.h b/src/compositor.h
index 3a26635..aa87ec0 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -815,6 +815,9 @@
 	 * displayed on.
 	 */
 	uint32_t output_mask;
+
+	/* Per-surface Presentation feedback flags, controlled by backend. */
+	uint32_t psf_flags;
 };
 
 struct weston_surface_state {