diff options
Diffstat (limited to 'tests/modetest')
-rw-r--r-- | tests/modetest/Makefile | 14 | ||||
-rw-r--r-- | tests/modetest/modetest.c | 410 | ||||
-rwxr-xr-x | tests/modetest/test | 2 |
3 files changed, 0 insertions, 426 deletions
diff --git a/tests/modetest/Makefile b/tests/modetest/Makefile deleted file mode 100644 index 8583ae82..00000000 --- a/tests/modetest/Makefile +++ /dev/null @@ -1,14 +0,0 @@ - -all: app - -#CFLAGS = -g -ansi -pedantic -DPOSIX_C_SOURCE=199309L \ -# -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE \ - -app: modetest.c - gcc $(CFLAGS) -o app -Wall -I../../libdrm -I../../libdrm/intel -I../../shared-core -L../../libdrm/.libs -L../../libdrm/intel/.libs -ldrm -ldrm_intel modetest.c - -clean: - @rm -f app - -run: app - sudo ./test diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c deleted file mode 100644 index 66c7f9cd..00000000 --- a/tests/modetest/modetest.c +++ /dev/null @@ -1,410 +0,0 @@ -/* - * DRM based mode setting test program - * Copyright 2008 Tungsten Graphics - * Jakob Bornecrantz <jakob@tungstengraphics.com> - * Copyright 2008 Intel Corporation - * Jesse Barnes <jesse.barnes@intel.com> - */ -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <stdint.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> - -#include "xf86drm.h" -#include "xf86drmMode.h" -#include "intel_bufmgr.h" - -drmModeRes *resources; -int fd, modes; - -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) - -struct type_name { - int type; - char *name; -}; - -#define type_name_fn(res) \ -char * res##_str(int type) { \ - int i; \ - for (i = 0; i < ARRAY_SIZE(res##_names); i++) { \ - if (res##_names[i].type == type) \ - return res##_names[i].name; \ - } \ - return "(invalid)"; \ -} - -struct type_name encoder_type_names[] = { - { DRM_MODE_ENCODER_NONE, "none" }, - { DRM_MODE_ENCODER_DAC, "DAC" }, - { DRM_MODE_ENCODER_TMDS, "TMDS" }, - { DRM_MODE_ENCODER_LVDS, "LVDS" }, - { DRM_MODE_ENCODER_TVDAC, "TVDAC" }, -}; - -type_name_fn(encoder_type) - -struct type_name connector_status_names[] = { - { DRM_MODE_CONNECTED, "connected" }, - { DRM_MODE_DISCONNECTED, "disconnected" }, - { DRM_MODE_UNKNOWNCONNECTION, "unknown" }, -}; - -type_name_fn(connector_status) - -struct type_name connector_type_names[] = { - { DRM_MODE_CONNECTOR_Unknown, "unknown" }, - { DRM_MODE_CONNECTOR_VGA, "VGA" }, - { DRM_MODE_CONNECTOR_DVII, "DVI-I" }, - { DRM_MODE_CONNECTOR_DVID, "DVI-D" }, - { DRM_MODE_CONNECTOR_DVIA, "DVI-A" }, - { DRM_MODE_CONNECTOR_Composite, "composite" }, - { DRM_MODE_CONNECTOR_SVIDEO, "s-video" }, - { DRM_MODE_CONNECTOR_LVDS, "LVDS" }, - { DRM_MODE_CONNECTOR_Component, "component" }, - { DRM_MODE_CONNECTOR_9PinDIN, "9-pin DIN" }, - { DRM_MODE_CONNECTOR_DisplayPort, "displayport" }, - { DRM_MODE_CONNECTOR_HDMIA, "HDMI-A" }, - { DRM_MODE_CONNECTOR_HDMIB, "HDMI-B" }, -}; - -type_name_fn(connector_type) - -void dump_encoders(void) -{ - drmModeEncoder *encoder; - int i; - - printf("Encoders:\n"); - printf("id\tcrtc\ttype\tpossible crtcs\tpossible clones\t\n"); - for (i = 0; i < resources->count_encoders; i++) { - encoder = drmModeGetEncoder(fd, resources->encoders[i]); - - if (!encoder) { - fprintf(stderr, "could not get encoder %i: %s\n", - resources->encoders[i], strerror(errno)); - continue; - } - printf("%d\t%d\t%s\t0x%08x\t0x%08x\n", - encoder->encoder_id, - encoder->crtc_id, - encoder_type_str(encoder->encoder_type), - encoder->possible_crtcs, - encoder->possible_clones); - drmModeFreeEncoder(encoder); - } -} - -void dump_connectors(void) -{ - drmModeConnector *connector; - int i, j; - - printf("Connectors:\n"); - printf("id\tencoder\tstatus\t\ttype\tsize (mm)\tmodes\n"); - for (i = 0; i < resources->count_connectors; i++) { - connector = drmModeGetConnector(fd, resources->connectors[i]); - - if (!connector) { - fprintf(stderr, "could not get connector %i: %s\n", - resources->connectors[i], strerror(errno)); - continue; - } - - printf("%d\t%d\t%s\t%s\t%dx%d\t\t%d\n", - connector->connector_id, - connector->encoder_id, - connector_status_str(connector->connection), - connector_type_str(connector->connector_type), - connector->mmWidth, connector->mmHeight, - connector->count_modes); - - if (!connector->count_modes) - continue; - - printf(" modes:\n"); - printf(" name refresh (Hz) hdisp hss hse htot vdisp " - "vss vse vtot)\n"); - for (j = 0; j < connector->count_modes; j++) { - struct drm_mode_modeinfo *mode; - - mode = &connector->modes[j]; - printf(" %s %.02f %d %d %d %d %d %d %d %d\n", - mode->name, - (float)mode->vrefresh / 1000, - mode->hdisplay, - mode->hsync_start, - mode->hsync_end, - mode->htotal, - mode->vdisplay, - mode->vsync_start, - mode->vsync_end, - mode->vtotal); - } - drmModeFreeConnector(connector); - } -} - -void dump_crtcs(void) -{ - drmModeCrtc *crtc; - int i; - - for (i = 0; i < resources->count_crtcs; i++) { - crtc = drmModeGetCrtc(fd, resources->crtcs[i]); - - if (!crtc) { - fprintf(stderr, "could not get crtc %i: %s\n", - resources->crtcs[i], strerror(errno)); - continue; - } - drmModeFreeCrtc(crtc); - } -} - -void dump_framebuffers(void) -{ - drmModeFB *fb; - int i; - - for (i = 0; i < resources->count_fbs; i++) { - fb = drmModeGetFB(fd, resources->fbs[i]); - - if (!fb) { - fprintf(stderr, "could not get fb %i: %s\n", - resources->fbs[i], strerror(errno)); - continue; - } - drmModeFreeFB(fb); - } -} - -void set_mode(int connector_id, char *mode_str) -{ - drmModeConnector *connector; - drmModeEncoder *encoder = NULL; - struct drm_mode_modeinfo *mode = NULL; - drm_intel_bufmgr *bufmgr; - drm_intel_bo *bo; - unsigned int fb_id, *fb_ptr; - int i, j, size, ret, width, height; - - /* First, find the connector & mode */ - for (i = 0; i < resources->count_connectors; i++) { - connector = drmModeGetConnector(fd, resources->connectors[i]); - - if (!connector) { - fprintf(stderr, "could not get connector %i: %s\n", - resources->connectors[i], strerror(errno)); - drmModeFreeConnector(connector); - continue; - } - - if (!connector->count_modes) { - drmModeFreeConnector(connector); - continue; - } - - if (connector->connector_id != connector_id) { - drmModeFreeConnector(connector); - continue; - } - - for (j = 0; j < connector->count_modes; j++) { - mode = &connector->modes[j]; - if (!strcmp(mode->name, mode_str)) - break; - } - - /* Found it, break out */ - if (mode) - break; - - drmModeFreeConnector(connector); - } - - if (!mode) { - fprintf(stderr, "failed to find mode \"%s\"\n", mode_str); - return; - } - - width = mode->hdisplay; - height = mode->vdisplay; - - /* Now get the encoder */ - for (i = 0; i < resources->count_encoders; i++) { - encoder = drmModeGetEncoder(fd, resources->encoders[i]); - - if (!encoder) { - fprintf(stderr, "could not get encoder %i: %s\n", - resources->encoders[i], strerror(errno)); - drmModeFreeEncoder(encoder); - continue; - } - - if (encoder->encoder_id == connector->encoder_id) - break; - - drmModeFreeEncoder(encoder); - } - - bufmgr = drm_intel_bufmgr_gem_init(fd, 2<<20); - if (!bufmgr) { - fprintf(stderr, "failed to init bufmgr: %s\n", strerror(errno)); - return; - } - - /* Mode size at 32 bpp */ - size = width * height * 4; - - bo = drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 4096); - if (!bo) { - fprintf(stderr, "failed to alloc buffer: %s\n", - strerror(errno)); - return; - } - - ret = drm_intel_bo_pin(bo, 4096); - if (ret) { - fprintf(stderr, "failed to pin buffer: %s\n", strerror(errno)); - return; - } - - ret = drm_intel_gem_bo_map_gtt(bo); - if (ret) { - fprintf(stderr, "failed to GTT map buffer: %s\n", - strerror(errno)); - return; - } - - fb_ptr = bo->virtual; - - /* paint the buffer blue */ - for (i = 0; i < width * height; i++) - fb_ptr[i] = 0xff; - - ret = drmModeAddFB(fd, width, height, 32, 32, width * 4, bo->handle, - &fb_id); - if (ret) { - fprintf(stderr, "failed to add fb: %s\n", strerror(errno)); - return; - } - - ret = drmModeSetCrtc(fd, encoder->crtc_id, fb_id, 0, 0, - &connector->connector_id, 1, mode); - if (ret) { - fprintf(stderr, "failed to set mode: %s\n", strerror(errno)); - return; - } -} - -extern char *optarg; -extern int optind, opterr, optopt; -static char optstr[] = "ecpmfs:"; - -void usage(char *name) -{ - fprintf(stderr, "usage: %s [-ecpmf]\n", name); - fprintf(stderr, "\t-e\tlist encoders\n"); - fprintf(stderr, "\t-c\tlist connectors\n"); - fprintf(stderr, "\t-p\tlist CRTCs (pipes)\n"); - fprintf(stderr, "\t-m\tlist modes\n"); - fprintf(stderr, "\t-f\tlist framebuffers\n"); - fprintf(stderr, "\t-s <connector_id>:<mode>\tset a mode\n"); - fprintf(stderr, "\n\tDefault is to dump all info.\n"); - exit(0); -} - -#define dump_resource(res) if (res) dump_##res() - -int main(int argc, char **argv) -{ - int c; - int encoders = 0, connectors = 0, crtcs = 0, framebuffers = 0; - char *modules[] = { "i915", "radeon" }; - char *modeset = NULL, *mode, *connector; - int i, connector_id; - - opterr = 0; - while ((c = getopt(argc, argv, optstr)) != -1) { - switch (c) { - case 'e': - encoders = 1; - break; - case 'c': - connectors = 1; - break; - case 'p': - crtcs = 1; - break; - case 'm': - modes = 1; - break; - case 'f': - framebuffers = 1; - break; - case 's': - modeset = strdup(optarg); - break; - default: - usage(argv[0]); - break; - } - } - - if (argc == 1) - encoders = connectors = crtcs = modes = framebuffers = 1; - - for (i = 0; i < ARRAY_SIZE(modules); i++) { - printf("trying to load module %s...", modules[i]); - fd = drmOpen(modules[i], NULL); - if (fd < 0) { - printf("failed.\n"); - } else { - printf("success.\n"); - break; - } - } - - if (i == ARRAY_SIZE(modules)) { - fprintf(stderr, "failed to load any modules, aborting.\n"); - return -1; - } - - resources = drmModeGetResources(fd); - if (!resources) { - fprintf(stderr, "drmModeGetResources failed: %s\n", - strerror(errno)); - drmClose(fd); - return 1; - } - - dump_resource(encoders); - dump_resource(connectors); - dump_resource(crtcs); - dump_resource(framebuffers); - - if (modeset) { - connector = strtok(modeset, ":"); - if (!connector) - usage(argv[0]); - connector_id = atoi(connector); - - mode = strtok(NULL, ":"); - if (!mode) - usage(argv[0]); - printf("setting connector %d to mode %s\n", connector_id, - mode); - set_mode(connector_id, mode); - sleep(3); - } - - sleep(3); - - drmModeFreeResources(resources); - - return 0; -} diff --git a/tests/modetest/test b/tests/modetest/test deleted file mode 100755 index 5bb552ef..00000000 --- a/tests/modetest/test +++ /dev/null @@ -1,2 +0,0 @@ -export LD_LIBRARY_PATH=../../libdrm/.libs:../../libdrm/intel/.libs -LD_PRELOAD=../../libdrm/.libs/libdrm.so ./app $@ |