diff options
Diffstat (limited to 'recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0028-kmssink-use-control-node-to-setplane-to-.patch')
-rw-r--r-- | recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0028-kmssink-use-control-node-to-setplane-to-.patch | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0028-kmssink-use-control-node-to-setplane-to-.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0028-kmssink-use-control-node-to-setplane-to-.patch deleted file mode 100644 index 2edd593..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0028-kmssink-use-control-node-to-setplane-to-.patch +++ /dev/null @@ -1,108 +0,0 @@ -From c2dd58fac7dc43280fab80d2234193993076665c Mon Sep 17 00:00:00 2001 -From: Haihua Hu <jared.hu@nxp.com> -Date: Tue, 8 Aug 2017 12:55:42 +0800 -Subject: [PATCH 1/3] [MMFMWK-7567] kmssink: use control node to setplane to - avoid getting DRM-Master - -a workaround on Linux 4.9 for kmssink multi-user - -Upstream-Status: Inappropriate [i.MX specific] - -Signed-off-by: Haihua Hu <jared.hu@nxp.com> ---- - sys/kms/gstkmssink.c | 31 +++++++++++++++++++++++++++++-- - sys/kms/gstkmssink.h | 1 + - 2 files changed, 30 insertions(+), 2 deletions(-) - -diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c -index d19e19e..e91c211 100644 ---- a/sys/kms/gstkmssink.c -+++ b/sys/kms/gstkmssink.c -@@ -51,6 +51,8 @@ - #include <drm_fourcc.h> - - #include <string.h> -+#include <fcntl.h> -+#include <unistd.h> - - #include "gstkmssink.h" - #include "gstkmsutils.h" -@@ -485,6 +487,21 @@ ensure_allowed_caps (GstKMSSink * self, drmModeConnector * conn, - return (self->allowed_caps && !gst_caps_is_empty (self->allowed_caps)); - } - -+static gint -+get_drm_minor_base (gint type) -+{ -+ switch (type) { -+ case DRM_NODE_PRIMARY: -+ return 0; -+ case DRM_NODE_CONTROL: -+ return 64; -+ case DRM_NODE_RENDER: -+ return 128; -+ default: -+ return -1; -+ } -+} -+ - static gboolean - gst_kms_sink_start (GstBaseSink * bsink) - { -@@ -496,6 +513,7 @@ gst_kms_sink_start (GstBaseSink * bsink) - drmModePlane *plane; - gboolean universal_planes; - gboolean ret; -+ gint minor; - - self = GST_KMS_SINK (bsink); - universal_planes = FALSE; -@@ -510,7 +528,11 @@ gst_kms_sink_start (GstBaseSink * bsink) - self->fd = drmOpen (self->devname, NULL); - else - self->fd = kms_open (&self->devname); -- if (self->fd < 0) -+ -+ minor = get_drm_minor_base (DRM_NODE_CONTROL); -+ self->ctrl_fd = drmOpenControl(minor); -+ -+ if (self->fd < 0 || self->ctrl_fd < 0) - goto open_failed; - - log_drm_version (self); -@@ -689,6 +711,11 @@ gst_kms_sink_stop (GstBaseSink * bsink) - self->fd = -1; - } - -+ if (self->ctrl_fd >= 0) { -+ drmClose (self->ctrl_fd); -+ self->ctrl_fd = -1; -+ } -+ - return TRUE; - } - -@@ -1278,7 +1305,7 @@ retry_set_plane: - "drmModeSetPlane at (%i,%i) %ix%i sourcing at (%i,%i) %ix%i", - result.x, result.y, result.w, result.h, src.x, src.y, src.w, src.h); - -- ret = drmModeSetPlane (self->fd, self->plane_id, self->crtc_id, fb_id, 0, -+ ret = drmModeSetPlane (self->ctrl_fd, self->plane_id, self->crtc_id, fb_id, 0, - result.x, result.y, result.w, result.h, - /* source/cropping coordinates are given in Q16 */ - src.x << 16, src.y << 16, src.w << 16, src.h << 16); -diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h -index 214f3ad..f2ab4d4 100644 ---- a/sys/kms/gstkmssink.h -+++ b/sys/kms/gstkmssink.h -@@ -49,6 +49,7 @@ struct _GstKMSSink { - - /*< private >*/ - gint fd; -+ gint ctrl_fd; - gint conn_id; - gint crtc_id; - gint plane_id; --- -1.9.1 - |