dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>
Subject: Re: Implementing Miracast?
Date: Thu, 03 Dec 2015 18:10:57 +0200	[thread overview]
Message-ID: <7361240.OtH2tnSePd@avalon> (raw)
In-Reply-To: <CAKb7UvgR=9eWf0wY-jaR4zOAtLZhu_yEmbFn3mQdvFkjOUZj9w@mail.gmail.com>

Hi Ilia,

On Thursday 03 December 2015 11:03:28 Ilia Mirkin wrote:
> On Thu, Dec 3, 2015 at 10:53 AM, Laurent Pinchart wrote:
> > On Thursday 03 December 2015 10:42:50 Ilia Mirkin wrote:
> >> On Thu, Dec 3, 2015 at 10:34 AM, Laurent Pinchart wrote:
> >>> On Thursday 03 December 2015 14:42:51 Hannikainen, Jaakko wrote:
> >>>> Hello,
> >>>> 
> >>>> We're developing Miracast (HDMI over Wireless connections). The
> >>>> current progress is that it 'works' in the userspace but doesn't have
> >>>> any integration with X/Wayland and can only mirror the current desktop
> >>>> using gstreamer.
> >>>> 
> >>>> We're looking into extending the implementation so that we would be
> >>>> able to use the remote screens just as any other connected screen, but
> >>>> we're not quite sure where we should implement it.
> >>>> 
> >>>> The DRM interface seems like the perfect fit since we wouldn't need to
> >>>> patch every compositor.
> >>>> 
> >>>> Right now, gstreamer is the equivalent of the crtc/encoder, in the DRM
> >>>> model. Screens / crtcs are discovered using a WiFi's p2p protocol
> >>>> which means that screens should be hotpluggable. Since we cannot
> >>>> change the number of crtcs of a driver on the fly, we propose adding
> >>>> and removing gpus with one crtc attached and no rendering
> >>>> capabilities.
> >>>> 
> >>>> Compositors and X currently use udev to list gpus and get run-time
> >>>> events for gpu hot-plugging (see the work from Dave Airlie for USB
> >>>> GPUs, using the modesetting X driver). We did not find a way to tell
> >>>> udev that we have a new device and it seems like the only way to get
> >>>> it to pick up our driver is from a uevent which can only be generated
> >>>> from the kernel.
> >>>> 
> >>>> Since we have so many userspace components, it doesn't make sense to
> >>>> implement the entire driver in the kernel.
> >>>> 
> >>>> We would thus need to have a communication from the kernel space to
> >>>> the userspace at least to send the flip commands to the fake crtc.
> >>>> Since we need this, why not implement everything in the userspace and
> >>>> just redirect the ioctls to the userspace driver?
> >>>> 
> >>>> This is exactly what fuse / cuse [1] does, with the minor catch that
> >>>> it creates devices in /sys/class/cuse instead of drm. This prevents
> >>>> the wayland compositors and X to pick it up as a normal drm driver...
> >>>> 
> >>>> We would thus need to have the drm subsystem create the device nodes
> >>>> for us when the userspace needs to create a new gpu. We could create a
> >>>> node named /dev/dri/cuse_card that, when opened, would allocate a node
> >>>> (/dev/dri/cardX) and would use cuse/fuse to redirect the ioctls to the
> >>>> process who opened /dev/dri/cuse_card.
> >>>> 
> >>>> The process would then be responsible for decoding the ioctl and
> >>>> implementing the drm API.
> >>>> 
> >>>> Since this is a major change which would allow proprietary drivers to
> >>>> be implemented in the userspace and since we may have missed something
> >>>> obvious, we would like to start a discussion on this. What are your
> >>>> thoughts?
> >>> 
> >>> As you raise the issue, how would you prevent proprietary userspace
> >>> drivers to be implemented ? Anything that would allow vendors to
> >>> destroy the Linux graphics ecosystem would receive a big nack from me.
> >> 
> >> AFAIK the displaylink people already have precisely such a driver -- a
> >> (open-source) kernel module that allows their (closed-source)
> >> userspace blob to present a drm node to pass through modesetting/etc
> >> ioctl's.
> > 
> > Are you talking about the drivers/gpu/drm/udl/ driver ? I might be wrong
> > but I'm not aware of that kernel driver requiring a closed-source
> > userspace blob.
> Nope. That driver only works for their USB2 parts. This is what I mean:
> 
> https://github.com/DisplayLink/evdi
> http://support.displaylink.com/knowledgebase/articles/679060
> http://support.displaylink.com/knowledgebase/articles/615714#ubuntu

Right. That's out-of-tree, people are free to screw up on their own there ;-)

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2015-12-03 16:10 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-03 14:42 Implementing Miracast? Hannikainen, Jaakko
2015-12-03 15:34 ` Laurent Pinchart
2015-12-03 15:42   ` Ilia Mirkin
2015-12-03 15:53     ` Laurent Pinchart
2015-12-03 16:03       ` Ilia Mirkin
2015-12-03 16:10         ` Laurent Pinchart [this message]
2015-12-03 16:38           ` Ilia Mirkin
2015-12-03 17:26             ` Martin Peres
2015-12-04  8:07               ` Daniel Vetter
2015-12-04  9:10                 ` Ernst Sjöstrand
2015-12-04 13:22                 ` Martin Peres
2015-12-08 11:59                 ` David Herrmann
2015-12-08 16:39                   ` Martin Peres
2015-12-08 17:24                     ` David Herrmann
2015-12-10 13:28                       ` Martin Peres
2015-12-14 14:54                         ` David Herrmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7361240.OtH2tnSePd@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=imirkin@alum.mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox