compositor: reorganize struct weston_buffer_viewport

Queueing in the Presentation extension requires splitting the viewport
state into buffer state and surface state. To conveniently allow
assigning only one, the other, or both, reorganize the
weston_buffer_viewport structure.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 32d0769..77caddf 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -455,6 +455,7 @@
 	struct drm_compositor *c =
 		(struct drm_compositor *) output->base.compositor;
 	struct weston_buffer *buffer = ev->surface->buffer_ref.buffer;
+	struct weston_buffer_viewport *viewport = &ev->surface->buffer_viewport;
 	struct gbm_bo *bo;
 	uint32_t format;
 
@@ -463,7 +464,7 @@
 	    buffer == NULL || c->gbm == NULL ||
 	    buffer->width != output->base.current_mode->width ||
 	    buffer->height != output->base.current_mode->height ||
-	    output->base.transform != ev->surface->buffer_viewport.transform ||
+	    output->base.transform != viewport->buffer.transform ||
 	    ev->transform.enabled)
 		return NULL;
 
@@ -808,6 +809,7 @@
 {
 	struct weston_compositor *ec = output_base->compositor;
 	struct drm_compositor *c =(struct drm_compositor *) ec;
+	struct weston_buffer_viewport *viewport = &ev->surface->buffer_viewport;
 	struct drm_sprite *s;
 	int found = 0;
 	struct gbm_bo *bo;
@@ -819,10 +821,10 @@
 	if (c->gbm == NULL)
 		return NULL;
 
-	if (ev->surface->buffer_viewport.transform != output_base->transform)
+	if (viewport->buffer.transform != output_base->transform)
 		return NULL;
 
-	if (ev->surface->buffer_viewport.scale != output_base->current_scale)
+	if (viewport->buffer.scale != output_base->current_scale)
 		return NULL;
 
 	if (c->sprites_are_broken)
@@ -932,8 +934,8 @@
 
 	tbox = weston_transformed_rect(wl_fixed_from_int(ev->surface->width),
 				       wl_fixed_from_int(ev->surface->height),
-				       ev->surface->buffer_viewport.transform,
-				       ev->surface->buffer_viewport.scale,
+				       viewport->buffer.transform,
+				       viewport->buffer.scale,
 				       tbox);
 
 	s->src_x = tbox.x1 << 8;