* select the current CRTC display mode if it is valid Signed-off-by: Jacob Stiffler <[email protected]> --- ...nit_drm-select-the-current-CRTC-display-m.patch | 76 ++++++++++++++++++++++ .../recipes-graphics/kmscube/kmscube_1.0.0.bb | 7 +- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 meta-arago-extras/recipes-graphics/kmscube/kmscube/0001-kmscube.c-init_drm-select-the-current-CRTC-display-m.patch
diff --git a/meta-arago-extras/recipes-graphics/kmscube/kmscube/0001-kmscube.c-init_drm-select-the-current-CRTC-display-m.patch b/meta-arago-extras/recipes-graphics/kmscube/kmscube/0001-kmscube.c-init_drm-select-the-current-CRTC-display-m.patch new file mode 100644 index 0000000..e6db0a3 --- /dev/null +++ b/meta-arago-extras/recipes-graphics/kmscube/kmscube/0001-kmscube.c-init_drm-select-the-current-CRTC-display-m.patch @@ -0,0 +1,76 @@ +From c2fd69466fcf1de1d20ee437470b40584964b32d Mon Sep 17 00:00:00 2001 +From: Eric Ruei <[email protected]> +Date: Thu, 10 Dec 2015 12:41:15 -0500 +Subject: [PATCH] kmscube.c: init_drm(): select the current CRTC display mode + is valid + +Signed-off-by: Eric Ruei <[email protected]> +--- + kmscube.c | 35 ++++++++++++++++++++++++++++++++--- + 1 file changed, 32 insertions(+), 3 deletions(-) + +diff --git a/kmscube.c b/kmscube.c +index 5a18c32..51a2c28 100644 +--- a/kmscube.c ++++ b/kmscube.c +@@ -89,6 +89,8 @@ static int init_drm(void) + drmModeRes *resources; + drmModeConnector *connector = NULL; + drmModeEncoder *encoder = NULL; ++ drmModeCrtc *crtc = NULL; ++ + int i, j; + uint32_t maxRes, curRes; + +@@ -119,10 +121,8 @@ static int init_drm(void) + for (i = 0; i < resources->count_connectors; i++) { + connector = drmModeGetConnector(drm.fd, resources->connectors[i]); + if (connector->connection == DRM_MODE_CONNECTED) { +- /* choose the first supported mode */ +- drm.mode[drm.ndisp] = &connector->modes[0]; +- drm.connector_id[drm.ndisp] = connector->connector_id; + ++ /* find the matched encoders */ + for (j=0; j<resources->count_encoders; j++) { + encoder = drmModeGetEncoder(drm.fd, resources->encoders[j]); + if (encoder->encoder_id == connector->encoder_id) +@@ -137,6 +137,35 @@ static int init_drm(void) + return -1; + } + ++ /* choose the current or first supported mode */ ++ crtc = drmModeGetCrtc(drm.fd, encoder->crtc_id); ++ for (j = 0; j < connector->count_modes; j++) ++ { ++ if (crtc->mode_valid) ++ { ++ if ((connector->modes[j].hdisplay == crtc->width) && ++ (connector->modes[j].vdisplay == crtc->height)) ++ { ++ drm.mode[drm.ndisp] = &connector->modes[j]; ++ break; ++ } ++ } ++ else ++ { ++ if ((connector->modes[j].hdisplay == crtc->x) && ++ (connector->modes[j].vdisplay == crtc->y)) ++ { ++ drm.mode[drm.ndisp] = &connector->modes[j]; ++ break; ++ } ++ } ++ } ++ ++ if(j >= connector->count_modes) ++ drm.mode[drm.ndisp] = &connector->modes[0]; ++ ++ drm.connector_id[drm.ndisp] = connector->connector_id; ++ + drm.encoder[drm.ndisp] = (uint32_t) encoder; + drm.crtc_id[drm.ndisp] = encoder->crtc_id; + drm.connectors[drm.ndisp] = connector; +-- +1.9.1 + + diff --git a/meta-arago-extras/recipes-graphics/kmscube/kmscube_1.0.0.bb b/meta-arago-extras/recipes-graphics/kmscube/kmscube_1.0.0.bb index 3e088d8..484a46b 100644 --- a/meta-arago-extras/recipes-graphics/kmscube/kmscube_1.0.0.bb +++ b/meta-arago-extras/recipes-graphics/kmscube/kmscube_1.0.0.bb @@ -6,14 +6,19 @@ LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=e760965096e52da8 DEPENDS = "libdrm libgbm omap5-sgx-ddk-um-linux" COMPATIBLE_MACHINE = "ti43x|omap-a15" +PACKAGE_ARCH = "${MACHINE_ARCH}" inherit autotools pkgconfig -PR = "r3" +PR = "r4" SRCREV = "1c8a0d26c5b1918432fd94d2ac9894b3dcdb2814" SRC_URI = "git://git.ti.com/glsdk/kmscube.git;protocol=git" +SRC_URI_append_ti43x = " \ + file://0001-kmscube.c-init_drm-select-the-current-CRTC-display-m.patch \ +" + S = "${WORKDIR}/git" INSANE_SKIP_kmscube += "dev-deps" -- 1.9.1 _______________________________________________ meta-arago mailing list [email protected] http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago
