From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH IGT] tests/kms_setmode: avoid 2 connectors on the same encoder Date: Mon, 09 Dec 2013 22:52:17 +0200 Message-ID: <1386622337.4318.0.camel@ideak-mobl> References: <1386092298-13113-1-git-send-email-przanoni@gmail.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id CB064FB6A0 for ; Mon, 9 Dec 2013 12:52:39 -0800 (PST) In-Reply-To: <1386092298-13113-1-git-send-email-przanoni@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org On Tue, 2013-12-03 at 15:38 -0200, Paulo Zanoni wrote: > From: Paulo Zanoni > > 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 > Signed-off-by: Paulo Zanoni Looks ok: Reviewed-by: Imre Deak > --- > tests/kms_setmode.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c > index 3d18fc7..e1c9c5a 100644 > --- a/tests/kms_setmode.c > +++ b/tests/kms_setmode.c > @@ -275,6 +275,7 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf, > int crtc_count; > bool config_valid; > int i; > + int encoder_usage_count[resources->count_encoders]; > > i = 0; > crtc_count = 0; > @@ -337,6 +338,20 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf, > 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; > *config_valid_ret = config_valid; > }