1 diff --git a/src/compositor-drm.c b/src/compositor-drm.c
2 index 4dffa1d..6239f91 100644
3 --- a/src/compositor-drm.c
4 +++ b/src/compositor-drm.c
5 @@ -143,6 +143,16 @@ struct drm_sprite {
9 +static drmModeModeInfo builtin_800x480 = {
11 + 800, 864, 976, 1088, 0,
12 + 480, 486, 494, 517, 0,
14 + DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC,
20 surface_is_primary(struct weston_compositor *ec, struct weston_surface *es)
22 @@ -1344,13 +1354,30 @@ create_output_for_connector(struct drm_compositor *ec,
23 drmModeFreeEncoder(encoder);
26 - crtc_mode = crtc->mode;
28 + /* if don't get mode from drm driver, use default 800x480 */
29 + if (crtc->mode.clock != 0)
31 + crtc_mode = crtc->mode;
33 + if (connector->count_modes == 0)
34 + crtc_mode = builtin_800x480;
36 + crtc_mode = connector->modes[0];
39 drmModeFreeCrtc(crtc);
41 - for (i = 0; i < connector->count_modes; i++) {
42 - ret = drm_output_add_mode(output, &connector->modes[i]);
43 + if (connector->count_modes == 0) {
44 + ret = drm_output_add_mode(output, &crtc_mode);
48 + for (i = 0; i < connector->count_modes; i++) {
49 + ret = drm_output_add_mode(output, &connector->modes[i]);