diff options
Diffstat (limited to 'common/recipes-graphics/drm')
4 files changed, 185 insertions, 0 deletions
diff --git a/common/recipes-graphics/drm/libdrm/0001-modetest-add-the-possibility-to-select-the-refresh-f.patch b/common/recipes-graphics/drm/libdrm/0001-modetest-add-the-possibility-to-select-the-refresh-f.patch new file mode 100644 index 0000000..090cc00 --- /dev/null +++ b/common/recipes-graphics/drm/libdrm/0001-modetest-add-the-possibility-to-select-the-refresh-f.patch @@ -0,0 +1,118 @@ +From de0970203091618834e4753c14d5169770797800 Mon Sep 17 00:00:00 2001 +From: Vincent ABRIOU <vincent.abriou@st.com> +Date: Fri, 10 Jan 2014 11:02:33 +0100 +Subject: [PATCH] modetest: add the possibility to select the refresh + frequency for a mode + +When mode is selected we only give the name of the mode as parameter. +But sometime, two different modes have the same name but not +the same vrefresh frequency. +This patch give the possibility to select a mode by its name +and optionally by its refresh frequency. + +Signed-off-by: Vincent Abriou <vincent.abriou@st.com> +Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> +Signed-off-by: Rob Clark <robclark@freedesktop.org> +--- + tests/modetest/modetest.c | 35 +++++++++++++++++++++++++++-------- + 1 file changed, 27 insertions(+), 8 deletions(-) + +diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c +index 0afd1c8..12365d4 100644 +--- a/tests/modetest/modetest.c ++++ b/tests/modetest/modetest.c +@@ -753,6 +753,7 @@ struct pipe_arg { + uint32_t crtc_id; + char mode_str[64]; + char format_str[5]; ++ unsigned int vrefresh; + unsigned int fourcc; + drmModeModeInfo *mode; + struct crtc *crtc; +@@ -774,7 +775,8 @@ struct plane_arg { + }; + + static drmModeModeInfo * +-connector_find_mode(struct device *dev, uint32_t con_id, const char *mode_str) ++connector_find_mode(struct device *dev, uint32_t con_id, const char *mode_str, ++ const unsigned int vrefresh) + { + drmModeConnector *connector; + drmModeModeInfo *mode; +@@ -786,8 +788,16 @@ connector_find_mode(struct device *dev, uint32_t con_id, const char *mode_str) + + for (i = 0; i < connector->count_modes; i++) { + mode = &connector->modes[i]; +- if (!strcmp(mode->name, mode_str)) +- return mode; ++ if (!strcmp(mode->name, mode_str)) { ++ /* If the vertical refresh frequency is not specified then return the ++ * first mode that match with the name. Else, return the mode that match ++ * the name and the specified vertical refresh frequency. ++ */ ++ if (vrefresh == 0) ++ return mode; ++ else if (mode->vrefresh == vrefresh) ++ return mode; ++ } + } + + return NULL; +@@ -849,7 +859,7 @@ static int pipe_find_crtc_and_mode(struct device *dev, struct pipe_arg *pipe) + + for (i = 0; i < (int)pipe->num_cons; i++) { + mode = connector_find_mode(dev, pipe->con_ids[i], +- pipe->mode_str); ++ pipe->mode_str, pipe->vrefresh); + if (mode == NULL) { + fprintf(stderr, + "failed to find mode \"%s\" for connector %u\n", +@@ -1175,8 +1185,8 @@ static void set_mode(struct device *dev, struct pipe_arg *pipes, unsigned int co + if (pipe->mode == NULL) + continue; + +- printf("setting mode %s@%s on connectors ", +- pipe->mode_str, pipe->format_str); ++ printf("setting mode %s-%dHz@%s on connectors ", ++ pipe->mode_str, pipe->mode->vrefresh, pipe->format_str); + for (j = 0; j < pipe->num_cons; ++j) + printf("%u, ", pipe->con_ids[j]); + printf("crtc %d\n", pipe->crtc->crtc->crtc_id); +@@ -1308,6 +1318,7 @@ static int parse_connector(struct pipe_arg *pipe, const char *arg) + const char *p; + char *endp; + ++ pipe->vrefresh = 0; + pipe->crtc_id = (uint32_t)-1; + strcpy(pipe->format_str, "XR24"); + +@@ -1342,11 +1353,19 @@ static int parse_connector(struct pipe_arg *pipe, const char *arg) + + arg = endp + 1; + +- p = strchrnul(arg, '@'); ++ /* Search for the vertical refresh or the format. */ ++ p = strpbrk(arg, "-@"); ++ if (p == NULL) ++ p = arg + strlen(arg); + len = min(sizeof pipe->mode_str - 1, (unsigned int)(p - arg)); + strncpy(pipe->mode_str, arg, len); + pipe->mode_str[len] = '\0'; + ++ if (*p == '-') { ++ pipe->vrefresh = strtoul(p + 1, &endp, 10); ++ p = endp; ++ } ++ + if (*p == '@') { + strncpy(pipe->format_str, p + 1, 4); + pipe->format_str[4] = '\0'; +@@ -1434,7 +1453,7 @@ static void usage(char *name) + + fprintf(stderr, "\n Test options:\n\n"); + fprintf(stderr, "\t-P <crtc_id>[@<source_id>]:<w>x<h>[+<x>+<y>][@<format>]\tset a plane\n"); +- fprintf(stderr, "\t-s <connector_id>[,<connector_id>][@<crtc_id>]:<mode>[@<format>]\tset a mode\n"); ++ fprintf(stderr, "\t-s <connector_id>[,<connector_id>][@<crtc_id>]:<mode>[-<vrefresh>][@<format>]\tset a mode\n"); + fprintf(stderr, "\t-v\ttest vsynced page flipping\n"); + fprintf(stderr, "\t-w <obj_id>:<prop_name>:<value>\tset property\n"); + diff --git a/common/recipes-graphics/drm/libdrm/GNU_SOURCE_definition.patch b/common/recipes-graphics/drm/libdrm/GNU_SOURCE_definition.patch new file mode 100644 index 0000000..8eb1d5e --- /dev/null +++ b/common/recipes-graphics/drm/libdrm/GNU_SOURCE_definition.patch @@ -0,0 +1,30 @@ +uclibc headers need to know if _GNU_SOURCE is defined or not and its defined +in config.h so include it first to get the definition if its there fixed build +problems on uclibc + +test_decode.c:107:2: error: implicit declaration of function 'open_memstream' [-Werror=implicit-function-declaration] + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending + +Index: libdrm-2.4.30/intel/test_decode.c +=================================================================== +--- libdrm-2.4.30.orig/intel/test_decode.c 2012-02-03 14:28:46.409355918 -0800 ++++ libdrm-2.4.30/intel/test_decode.c 2012-02-03 14:29:02.357356689 -0800 +@@ -21,6 +21,8 @@ + * IN THE SOFTWARE. + */ + ++#include "config.h" ++ + #include <string.h> + #include <stdlib.h> + #include <stdio.h> +@@ -31,7 +33,6 @@ + #include <sys/mman.h> + #include <err.h> + +-#include "config.h" + #include "intel_bufmgr.h" + #include "intel_chipset.h" + diff --git a/common/recipes-graphics/drm/libdrm/installtests.patch b/common/recipes-graphics/drm/libdrm/installtests.patch new file mode 100644 index 0000000..7d443af --- /dev/null +++ b/common/recipes-graphics/drm/libdrm/installtests.patch @@ -0,0 +1,23 @@ +tests: also install tests app + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Yu Ke <ke.yu@intel.com> + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index bf1987f..d909e19 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -6,10 +6,11 @@ AM_CPPFLAGS = \ + + LDADD = $(top_builddir)/libdrm.la + +-check_PROGRAMS = \ ++bin_PROGRAMS = \ + dristat \ + drmstat + ++check_PROGRAMS = + SUBDIRS = modeprint + + if HAVE_LIBKMS diff --git a/common/recipes-graphics/drm/libdrm_2.4.45.bb b/common/recipes-graphics/drm/libdrm_2.4.45.bb new file mode 100644 index 0000000..c76af78 --- /dev/null +++ b/common/recipes-graphics/drm/libdrm_2.4.45.bb @@ -0,0 +1,14 @@ +require recipes-graphics/drm/libdrm.inc + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRCREV = "4d8674077c006f68ec4771530891df8231da839d" +SRC_URI = "git://git.ideasonboard.com/renesas/drm.git;protocol=git;branch=live \ + file://installtests.patch \ + file://GNU_SOURCE_definition.patch \ + file://0001-modetest-add-the-possibility-to-select-the-refresh-f.patch \ + " + +PV_append = "+git${SRCREV}" +S = "${WORKDIR}/git" +EXTRA_OECONF += "--enable-install-test-programs" |