struct drm_output {
struct weston_output base;
+ char *name;
uint32_t crtc_id;
uint32_t connector_id;
drmModeCrtcPtr original_crtc;
drmModeFreeConnector(connector);
}
+static const char *connector_type_names[] = {
+ "None",
+ "VGA",
+ "DVI",
+ "DVI",
+ "DVI",
+ "Composite",
+ "TV",
+ "LVDS",
+ "CTV",
+ "DIN",
+ "DP",
+ "HDMI",
+ "HDMI",
+ "TV",
+ "eDP",
+};
+
static int
create_output_for_connector(struct drm_compositor *ec,
drmModeRes *resources,
drmModeModeInfo crtc_mode;
drmModeCrtc *crtc;
int i, ret;
+ char name[32];
+ const char *type_name;
encoder = drmModeGetEncoder(ec->drm.fd, connector->encoders[0]);
if (encoder == NULL) {
output->base.model = "unknown";
wl_list_init(&output->base.mode_list);
+ if (connector->connector_type < ARRAY_LENGTH(connector_type_names))
+ type_name = connector_type_names[connector->connector_type];
+ else
+ type_name = "UNKNOWN";
+ snprintf(name, 32, "%s%d", type_name, connector->connector_type_id);
+ output->name = strdup(name);
+
output->crtc_id = resources->crtcs[i];
ec->crtc_allocator |= (1 << output->crtc_id);
output->connector_id = connector->connector_id;
output->base.set_dpms = drm_set_dpms;
output->base.switch_mode = drm_output_switch_mode;
- weston_log("kms connector %d, crtc %d\n",
- output->connector_id, output->crtc_id);
+ weston_log("Output %s, (connector %d, crtc %d)\n",
+ output->name, output->connector_id, output->crtc_id);
wl_list_for_each(m, &output->base.mode_list, link)
weston_log_continue(" mode %dx%d@%.1f%s%s%s\n",
m->width, m->height, m->refresh / 1000.0,