mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-12 02:16:17 +00:00
tests/kms_setmode: Handle MST correctly.
There is a MST encoder for each crtc, and each MST connector will be connected to the encoder bound to that crtc. This breaks the kms_setmode assertion that is only 1 encoder per connector, so make an exception to that rule for displayport. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
This commit is contained in:
parent
4c14aa18c1
commit
464424dcee
@ -306,9 +306,17 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
|
|||||||
connector = cconf[i + j].connector;
|
connector = cconf[i + j].connector;
|
||||||
|
|
||||||
/* Intel connectors have only a single encoder */
|
/* Intel connectors have only a single encoder */
|
||||||
igt_assert(connector->count_encoders == 1);
|
if (connector->count_encoders == 1) {
|
||||||
encoder = drmModeGetEncoder(drm_fd,
|
encoder = drmModeGetEncoder(drm_fd,
|
||||||
connector->encoders[0]);
|
connector->encoders[0]);
|
||||||
|
} else {
|
||||||
|
igt_assert_eq(connector->connector_type,
|
||||||
|
DRM_MODE_CONNECTOR_DisplayPort);
|
||||||
|
|
||||||
|
igt_assert(connector->count_encoders >= crtc->crtc_idx);
|
||||||
|
encoder = drmModeGetEncoder(drm_fd,
|
||||||
|
connector->encoders[crtc_count]);
|
||||||
|
}
|
||||||
igt_assert(encoder);
|
igt_assert(encoder);
|
||||||
|
|
||||||
config_valid &= !!(encoder->possible_crtcs &
|
config_valid &= !!(encoder->possible_crtcs &
|
||||||
@ -333,9 +341,13 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
|
|||||||
for (i = 0; i < connector_count; i++) {
|
for (i = 0; i < connector_count; i++) {
|
||||||
drmModeConnector *connector = cconf[i].connector;
|
drmModeConnector *connector = cconf[i].connector;
|
||||||
drmModeEncoder *encoder;
|
drmModeEncoder *encoder;
|
||||||
|
int idx = 0;
|
||||||
|
|
||||||
igt_assert(connector->count_encoders == 1);
|
/* DP MST configs are presumed valid */
|
||||||
encoder = drmModeGetEncoder(drm_fd, connector->encoders[0]);
|
if (connector->count_encoders > 1)
|
||||||
|
idx = cconf[i].crtc_idx;
|
||||||
|
|
||||||
|
encoder = drmModeGetEncoder(drm_fd, connector->encoders[idx]);
|
||||||
encoder_usage_count[get_encoder_idx(resources, encoder)]++;
|
encoder_usage_count[get_encoder_idx(resources, encoder)]++;
|
||||||
drmModeFreeEncoder(encoder);
|
drmModeFreeEncoder(encoder);
|
||||||
}
|
}
|
||||||
@ -417,7 +429,7 @@ static void test_crtc_config(const struct test_config *tconf,
|
|||||||
free(ids);
|
free(ids);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
igt_assert(errno == EINVAL);
|
igt_assert_eq(errno, EINVAL);
|
||||||
config_failed = true;
|
config_failed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -534,7 +546,7 @@ static int get_connectors(drmModeRes *resources, int *connector_idxs,
|
|||||||
int connector_id;
|
int connector_id;
|
||||||
|
|
||||||
connector_idx = connector_idxs[i];
|
connector_idx = connector_idxs[i];
|
||||||
igt_assert(connector_idx < resources->count_connectors);
|
igt_assert_lt(connector_idx, resources->count_connectors);
|
||||||
connector_id = resources->connectors[connector_idx];
|
connector_id = resources->connectors[connector_idx];
|
||||||
|
|
||||||
if (get_one_connector(resources, connector_id, &cconfs[i]) < 0)
|
if (get_one_connector(resources, connector_id, &cconfs[i]) < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user