Use the new util_open() helper instead of open-coding the method for
finding a usable device. While at it, make the command-line interface
more consistent with that of modetest by adding the -D and -M options.

Signed-off-by: Stefan Agner <stefan at agner.ch>
---
 tests/kmstest/Makefile.am |  4 +++-
 tests/kmstest/main.c      | 45 +++++++++++++++++++++++++++++----------------
 2 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/tests/kmstest/Makefile.am b/tests/kmstest/Makefile.am
index fd21e61..100662e 100644
--- a/tests/kmstest/Makefile.am
+++ b/tests/kmstest/Makefile.am
@@ -2,6 +2,7 @@ AM_CFLAGS = \
        $(WARN_CFLAGS)\
        -I$(top_srcdir)/include/drm \
        -I$(top_srcdir)/libkms/ \
+       -I$(top_srcdir)/tests/ \
        -I$(top_srcdir)

 if HAVE_INSTALL_TESTS
@@ -17,7 +18,8 @@ kmstest_SOURCES = \

 kmstest_LDADD = \
        $(top_builddir)/libdrm.la \
-       $(top_builddir)/libkms/libkms.la
+       $(top_builddir)/libkms/libkms.la \
+       $(top_builddir)/tests/util/libutil.la

 run: kmstest
        ./kmstest
diff --git a/tests/kmstest/main.c b/tests/kmstest/main.c
index 120bc0f..fe8f42e 100644
--- a/tests/kmstest/main.c
+++ b/tests/kmstest/main.c
@@ -25,12 +25,14 @@
  *
  **************************************************************************/

-
+#include <getopt.h>
 #include <stdio.h>
 #include <string.h>
 #include "xf86drm.h"
 #include "libkms.h"

+#include "util/kms.h"
+
 #define CHECK_RET_RETURN(ret, str) \
        if (ret < 0) { \
                printf("%s: %s (%s)\n", __func__, str, strerror(-ret)); \
@@ -56,26 +58,37 @@ static int test_bo(struct kms_driver *kms)
        return 0;
 }

-static const char *drivers[] = {
-       "i915",
-       "radeon",
-       "nouveau",
-       "vmwgfx",
-       "exynos",
-       "amdgpu",
-       "imx-drm",
-       "rockchip",
-       "atmel-hlcdc",
-       NULL
-};
+static void usage(const char *program)
+{
+       fprintf(stderr, "Usage: %s [options]\n", program);
+       fprintf(stderr, "\n");
+       fprintf(stderr, "  -D DEVICE  open the given device\n");
+       fprintf(stderr, "  -M MODULE  open the given module\n");
+}

 int main(int argc, char** argv)
 {
+       static const char optstr[] = "D:M:";
        struct kms_driver *kms;
-       int ret, fd, i;
+       int c, fd, ret;
+       char *device = NULL;
+       char *module = NULL;
+
+       while ((c = getopt(argc, argv, optstr)) != -1) {
+               switch (c) {
+               case 'D':
+                       device = optarg;
+                       break;
+               case 'M':
+                       module = optarg;
+                       break;
+               default:
+                       usage(argv[0]);
+                       return 0;
+               }
+       }

-       for (i = 0, fd = -1; fd < 0 && drivers[i]; i++)
-               fd = drmOpen(drivers[i], NULL);
+       fd = util_open(module, device);
        CHECK_RET_RETURN(fd, "Could not open device");

        ret = kms_create(fd, &kms);
-- 
2.6.4

Reply via email to