diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 0ecfc90..628f7cb 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -1750,26 +1750,11 @@
 				struct weston_view *ev)
 {
 	struct drm_output *output = output_state->output;
-	struct drm_backend *b = to_drm_backend(output->base.compositor);
 	struct drm_plane *scanout_plane = output->scanout_plane;
 	struct drm_plane_state *state;
-	struct weston_buffer *buffer = ev->surface->buffer_ref.buffer;
-	struct gbm_bo *bo;
+	struct drm_fb *fb;
 	pixman_box32_t *extents;
 
-	/* Don't import buffers which span multiple outputs. */
-	if (ev->output_mask != (1u << output->base.id))
-		return NULL;
-
-	/* We use GBM to import buffers. */
-	if (b->gbm == NULL)
-		return NULL;
-
-	if (buffer == NULL)
-		return NULL;
-	if (wl_shm_buffer_get(buffer->resource))
-		return NULL;
-
 	/* Check the view spans exactly the output size, calculated in the
 	 * logical co-ordinate space. */
 	extents = pixman_region32_extents(&ev->transform.boundingbox);
@@ -1782,15 +1767,27 @@
 	if (ev->alpha != 1.0f)
 		return NULL;
 
+	fb = drm_fb_get_from_view(output_state, ev);
+	if (!fb)
+		return NULL;
+
+	/* Can't change formats with just a pageflip */
+	if (fb->format->format != output->gbm_format) {
+		drm_fb_unref(fb);
+		return NULL;
+	}
+
 	state = drm_output_state_get_plane(output_state, scanout_plane);
 	if (state->fb) {
 		/* If there is already a framebuffer on the scanout plane,
 		 * a client view has already been placed on the scanout
 		 * view. In that case, do not free or put back the state,
 		 * but just leave it in place and quietly exit. */
+		drm_fb_unref(fb);
 		return NULL;
 	}
 
+	state->fb = fb;
 	state->output = output;
 	if (!drm_plane_state_coords_for_view(state, ev))
 		goto err;
@@ -1804,30 +1801,6 @@
 	    state->dest_h != (unsigned) output->base.current_mode->height)
 		goto err;
 
-	bo = gbm_bo_import(b->gbm, GBM_BO_IMPORT_WL_BUFFER,
-			   buffer->resource, GBM_BO_USE_SCANOUT);
-
-	/* Unable to use the buffer for scanout */
-	if (!bo)
-		goto err;
-
-	state->fb = drm_fb_get_from_bo(bo, b, drm_view_is_opaque(ev),
-				       BUFFER_CLIENT);
-	if (!state->fb) {
-		/* We need to explicitly destroy the BO. */
-		gbm_bo_destroy(bo);
-		goto err;
-	}
-
-	/* Can't change formats with just a pageflip */
-	if (state->fb->format->format != output->gbm_format) {
-		/* No need to destroy the GBM BO here, as it's now owned
-		 * by the FB. */
-		goto err;
-	}
-
-	drm_fb_set_buffer(state->fb, buffer);
-
 	return &scanout_plane->base;
 
 err:
