int vblank_pending;
int page_flip_pending;
int destroy_pending;
+ int force_modeset;
struct gbm_surface *surface;
struct gbm_bo *cursor_bo[2];
mode = container_of(output->base.current_mode, struct drm_mode, base);
if (!output->current ||
- output->current->stride != output->next->stride) {
+ output->current->stride != output->next->stride ||
+ output->force_modeset) {
ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
output->next->fb_id, 0, 0,
&output->connector_id, 1,
goto err_pageflip;
}
output_base->set_dpms(output_base, WESTON_DPMS_ON);
+ output->force_modeset = 0;
}
if (drmModePageFlip(compositor->drm.fd, output->crtc_id,
assert(0);
}
- wl_list_for_each(output, &c->base.output_list, base.link)
+ wl_list_for_each(output, &c->base.output_list, base.link) {
+ /* Workaround page flip not setting the tiling mode on BYT */
+ output->force_modeset = 1;
drm_output_init_egl(output, c);
+ }
c->use_pixman = 0;
}