tests/kms_setmode: avoid 2 connectors on the same encoder

Don't try to set modes on two connectors that share the same encoder.
That will just fail.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68463
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
This commit is contained in:
Paulo Zanoni 2013-12-03 15:03:02 -02:00
parent 13ef9e8d54
commit 36f017dfd1

View File

@ -275,6 +275,7 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
int crtc_count; int crtc_count;
bool config_valid; bool config_valid;
int i; int i;
int encoder_usage_count[resources->count_encoders];
i = 0; i = 0;
crtc_count = 0; crtc_count = 0;
@ -337,6 +338,20 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
crtc++; crtc++;
} }
memset(encoder_usage_count, 0, sizeof(encoder_usage_count));
for (i = 0; i < connector_count; i++) {
drmModeConnector *connector = cconf[i].connector;
drmModeEncoder *encoder;
igt_assert(connector->count_encoders == 1);
encoder = drmModeGetEncoder(drm_fd, connector->encoders[0]);
encoder_usage_count[get_encoder_idx(resources, encoder)]++;
drmModeFreeEncoder(encoder);
}
for (i = 0; i < resources->count_encoders; i++)
if (encoder_usage_count[i] > 1)
config_valid = false;
*crtc_count_ret = crtc_count; *crtc_count_ret = crtc_count;
*config_valid_ret = config_valid; *config_valid_ret = config_valid;
} }