From patchwork Mon Jun 24 20:27:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 11014063 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A9A4614BB for ; Mon, 24 Jun 2019 20:27:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8F4132880C for ; Mon, 24 Jun 2019 20:27:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 82FB028AD7; Mon, 24 Jun 2019 20:27:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1C03C2880C for ; Mon, 24 Jun 2019 20:27:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8EC8D89D79; Mon, 24 Jun 2019 20:27:42 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0705089D79 for ; Mon, 24 Jun 2019 20:27:42 +0000 (UTC) Received: by mail-pg1-x543.google.com with SMTP id 145so7710897pgh.4 for ; Mon, 24 Jun 2019 13:27:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Xm3E2aGr5dZvLkpn1QbXOhXQmIbRzV9KHBP8zZjQp7Y=; b=hqXQ31wYyp7qlzvB7l/+GmblgKNAywF9lut8NrSJHAaXZPcsKUELWqHV9f0kNYgy3S bsTSgxcYEWdm7Mr+eh+iRel7LGsxHo5Hqtmcn450Q/MZeqXzYqX76HQOnTtGVSbRWMJO fPqNj1NDi0m9OlluPJJg2yvhXu0Gk8SZ32uH4kj6dSW68K+oNexmk8V1q4XhD4gnmEVE s+AjJHwSNE8OpJ65J25qreCyZ7d8pyTiub2KyxrpSr/sMSz8zzFR1FHplQgwhTmGSy4j UHSUYffCJ2XcRLNUZ4raf+FkUSs/DSgU/Yosny9iPaA+CWXpUXYWF5DByKk6sYRbeDOi Yj+g== X-Gm-Message-State: APjAAAXnLtDXVvRH+1B3NZ/M5ff+H/1L9CFyEePTD4AfWpBIBcqQbwgf 2I3aVIeWRdKvsSALpgKbm5wVRo6+fzU= X-Google-Smtp-Source: APXvYqwTdunXVLHzE98ld4jY9SPbBpG1RfzwPwbc0dz5O1z2DA5FG4FNhdVPjdxui0JexmKV10pU6g== X-Received: by 2002:a63:4e58:: with SMTP id o24mr6317258pgl.366.1561408060852; Mon, 24 Jun 2019 13:27:40 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id y12sm11466778pgi.10.2019.06.24.13.27.39 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 13:27:40 -0700 (PDT) From: John Stultz To: dri-devel Subject: [PATCH v2] libdrm: modetest: Allow selecting modes by index Date: Mon, 24 Jun 2019 20:27:35 +0000 Message-Id: <20190624202735.125139-1-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=Xm3E2aGr5dZvLkpn1QbXOhXQmIbRzV9KHBP8zZjQp7Y=; b=hVIJS0MK27V9qFYbti2Qc+HlVtqB9uaniCdnm5dMUAtDQP+o+v/SSmz0KeLVIyArq/ E97JrMzLhsq+lcR40Bm79qD/yfUGYLtTcDgUl5aq1TO12UmzFeYnaP23IAKe2YC2w+hX HaFD5ZQMrv1C6tA+bv3dx9WtYmsvCcAxbPxCHWXbVinwOoxuggNxUCsFnQs2Kn+zJ6W9 c8gbNc/oSCrd6H9ArHhF+UYt9q0gk9QgdYAFGsdph68p0nhSeidNG9wK8jMpz12bL2+C Zsl+vj2o3kurawIvRntaP9prlcJm7PV4d/+4/WtgjN1kPl/v7AqdK9i0z8tpIGPcc9QY COPw== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , Bjorn Andersson MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Often there are many similar modes, which cannot be selected via modetest due to its simple string matching. This change adds a mode index in the display output, which can then be used to specify a specific modeline to be set. Cc: Ilia Mirkin Cc: Rob Clark Cc: Bjorn Andersson Cc: Sumit Semwal Signed-off-by: John Stultz Reviewed-by: Ilia Mirkin --- v2: Reworked mode_str check per Ilia's suggestion --- tests/modetest/modetest.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 9c85c07b..5a04190c 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -204,9 +204,10 @@ static void dump_encoders(struct device *dev) printf("\n"); } -static void dump_mode(drmModeModeInfo *mode) +static void dump_mode(drmModeModeInfo *mode, int index) { - printf(" %s %d %d %d %d %d %d %d %d %d %d", + printf(" #%i %s %d %d %d %d %d %d %d %d %d %d", + index, mode->name, mode->vrefresh, mode->hdisplay, @@ -443,10 +444,10 @@ static void dump_connectors(struct device *dev) if (connector->count_modes) { printf(" modes:\n"); - printf("\tname refresh (Hz) hdisp hss hse htot vdisp " + printf("\tindex name refresh (Hz) hdisp hss hse htot vdisp " "vss vse vtot)\n"); for (j = 0; j < connector->count_modes; j++) - dump_mode(&connector->modes[j]); + dump_mode(&connector->modes[j], j); } if (_connector->props) { @@ -478,7 +479,7 @@ static void dump_crtcs(struct device *dev) crtc->buffer_id, crtc->x, crtc->y, crtc->width, crtc->height); - dump_mode(&crtc->mode); + dump_mode(&crtc->mode, 0); if (_crtc->props) { printf(" props:\n"); @@ -829,6 +830,16 @@ connector_find_mode(struct device *dev, uint32_t con_id, const char *mode_str, if (!connector || !connector->count_modes) return NULL; + /* Pick by Index */ + if (mode_str[0] == '#') { + int index = atoi(mode_str + 1); + + if (index >= connector->count_modes) + return NULL; + return &connector->modes[index]; + } + + /* Pick by Name */ for (i = 0; i < connector->count_modes; i++) { mode = &connector->modes[i]; if (!strcmp(mode->name, mode_str)) { @@ -1752,7 +1763,7 @@ static void usage(char *name) fprintf(stderr, "\n Test options:\n\n"); fprintf(stderr, "\t-P @:x[++][*][@]\tset a plane\n"); - fprintf(stderr, "\t-s [,][@]:[-][@]\tset a mode\n"); + fprintf(stderr, "\t-s [,][@]:[#][-][@]\tset a mode\n"); fprintf(stderr, "\t-C\ttest hw cursor\n"); fprintf(stderr, "\t-v\ttest vsynced page flipping\n"); fprintf(stderr, "\t-w ::\tset property\n");