struct drm_encoder encoder;
        struct drm_connector connector;
        struct drm_writeback_connector wb_connector;
+       struct drm_encoder wb_encoder;
        struct hrtimer vblank_hrtimer;
        ktime_t period_ns;
        struct workqueue_struct *composer_workq;
 void vkms_writeback_row(struct vkms_writeback_job *wb, const struct line_buffer *src_buffer, int y);
 
 /* Writeback */
-int vkms_enable_writeback_connector(struct vkms_device *vkmsdev);
+int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct drm_crtc *crtc);
 
 #endif /* _VKMS_DRV_H_ */
 
 
 static const struct drm_connector_funcs vkms_wb_connector_funcs = {
        .fill_modes = drm_helper_probe_single_connector_modes,
-       .destroy = drm_connector_cleanup,
        .reset = drm_atomic_helper_connector_reset,
        .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
        .atomic_check = vkms_wb_atomic_check,
 };
 
-int vkms_enable_writeback_connector(struct vkms_device *vkmsdev)
+int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct drm_crtc *crtc)
 {
        struct drm_writeback_connector *wb = &vkmsdev->output.wb_connector;
+       int ret;
+
+       ret = drmm_encoder_init(&vkmsdev->drm, &vkmsdev->output.wb_encoder,
+                               NULL, DRM_MODE_ENCODER_VIRTUAL, NULL);
+       if (ret)
+               return ret;
+       vkmsdev->output.wb_encoder.possible_crtcs |= drm_crtc_mask(crtc);
 
        drm_connector_helper_add(&wb->base, &vkms_wb_conn_helper_funcs);
 
-       return drm_writeback_connector_init(&vkmsdev->drm, wb,
-                                           &vkms_wb_connector_funcs,
-                                           NULL,
-                                           vkms_wb_formats,
-                                           ARRAY_SIZE(vkms_wb_formats),
-                                           1);
+       return drmm_writeback_connector_init(&vkmsdev->drm, wb,
+                                            &vkms_wb_connector_funcs,
+                                            &vkmsdev->output.wb_encoder,
+                                            vkms_wb_formats,
+                                            ARRAY_SIZE(vkms_wb_formats));
 }