From dc88d0b43d0159ebf1dd70b40b286989b812d4eb Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 5 Apr 2019 13:17:34 +0200 Subject: add egltest --- egltest.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 egltest.c (limited to 'egltest.c') diff --git a/egltest.c b/egltest.c new file mode 100644 index 0000000..fdafa14 --- /dev/null +++ b/egltest.c @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include "drmtools.h" +#include "ttytools.h" + +/* ------------------------------------------------------------------ */ + +static void egl_print_info(void) +{ + printf("version: %s\n", glGetString(GL_VERSION)); + printf("vendor: %s\n", glGetString(GL_VENDOR)); + printf("renderer: %s\n", glGetString(GL_RENDERER)); +} + +static void egl_draw(void) +{ + /* green background */ + glClearColor(0.0, 0.6, 0.0, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + glFlush(); +} + +/* ------------------------------------------------------------------ */ + +static void usage(FILE *fp) +{ + fprintf(fp, + "\n" + "usage: egltest [ options ]\n" + "\n" + "options:\n" + " -h print this\n" + " -a autotest mode\n" + " -c pick card\n" + " -s set sleep time (default: 60)\n" + " -i print device info\n" + "\n"); +} + +int main(int argc, char **argv) +{ + int card = 0; + int secs = 60; + char *output = NULL; + char *modename = NULL; + bool printinfo = false; + bool autotest = false; + char buf[32]; + int c; + + for (;;) { + c = getopt(argc, argv, "haic:s:"); + if (c == -1) + break; + switch (c) { + case 'c': + card = atoi(optarg); + break; + case 's': + secs = atoi(optarg); + break; + case 'i': + printinfo = true; + break; + case 'a': + autotest = true; + break; + case 'h': + usage(stdout); + exit(0); + default: + usage(stderr); + exit(1); + } + } + + drm_init_dev(card, output, modename, false); + drm_setup_egl(); + + if (printinfo) { + egl_print_info(); + goto done; + } + + egl_draw(); + drm_egl_flush_display(); + + if (autotest) + fprintf(stdout, "---ok---\n"); + + tty_raw(); + kbd_wait(secs); + read(0, buf, sizeof(buf)); + tty_restore(); + +done: + drm_fini_dev(); + return 0; +} -- cgit