Re: [PATCH v2 1/2] drm/cma-helper: Add multi buffer support for cma fbdev
From: Laurent Pinchart
Date: Fri Feb 17 2017 - 06:23:26 EST
On Wednesday 15 Feb 2017 13:38:44 Maxime Ripard wrote:
> On Mon, Feb 13, 2017 at 11:20:51AM +0000, Daniel Stone wrote:
> > On 13 February 2017 at 10:54, Maxime Ripard wrote:
> >> On Sun, Feb 12, 2017 at 02:28:11PM +0200, Laurent Pinchart wrote:
> >>> On Thursday 02 Feb 2017 11:31:56 Maxime Ripard wrote:
> >>>> This patch add a config to support to create multi buffer for cma
> >>>> fbdev. Such as double buffer and triple buffer.
> >>>> Cma fbdev is convient to add a legency fbdev. And still many Android
> >>>> devices use fbdev now and at least double buffer is needed for these
> >>>> Android devices, so that a buffer flip can be operated. It will need
> >>>> some time for Android device vendors to abondon legency fbdev. So
> >>>> multi buffer for fbdev is needed.
> >>> How exactly do we expect Android to move away from fbdev if we add
> >>> features to the fbdev compat layer ? I'd much rather make it clear to
> >>> them that fbdev is a thing from the past and that they'd better
> >>> migrate now.
> >> If your point is that merging this patch will slow down the Android
> >> move away from fbdev, I disagree with that (obviously).
> >> I don't care at all about Android on my platform of choice, but don't
> >> see how that merging this patch will change anything.
> >> Let's be honest, Android trees typically have thousands of patches on
> >> top of mainline. Do you think a simple, 15 LoC, patch will make any
> >> difference to vendors? If they want to stay on fbdev and have that
> >> feature, they'll just merge this patch, done.
> > So, in that case, why not just let them do that? They'd already have
> > to add patches to use this, surely; we don't have anything in mainline
> > kernels which allows people to actually use this larger allocation.
> > Apart from software mmap() and using panning to do flips, but I'm
> > taking it as a given that people shipping Android on their devices
> > aren't using software rendering.
> My point was that you're not doing it more difficult for people not
> willing to contribute upstream, you're just making it more difficult
> for people who want to contribute.
> The whole argument to engage vendors upstream is that we sell them
> that eventually they will be able to just use whatever kernel release
> is on kernel.org or in their distro of choice.
> If those people depend on a feature that is entirely rejected
> upstream, then they'll have to carry that patch in their tree,
> creating a BSP in the process. And that reduces greatly the strength
> of the "you should contribute" argument, making them less involved.
No, they should not carry an out-of-tree patch, they should not use that
feature in the first place. fbdev is a dead-end, Linux has clearly decided to
move to DRM/KMS. Any vendor who wants to keep using fbdev is shooting
themselves in the foot, as the more they depend on fbdev, the more painful it
will be to switch later when they will have no choice. Switching sooner than
later is the best decision, and I'd argue that by making it easier to stay on
fbdev we would actually hurt those vendors in the longer term.
> >> However, what I do see is that three different people/organisations
> >> have now expressed interest in that feature, on three different
> >> SoCs. If that patch needed a significant rework of the fbdev layer,
> >> then yes, I might agree that it's not worth it. But in this case, it's
> >> pretty trivial.
> >> The only people you're "punishing" here with that kind of concern are
> >> the people who actually play fair and want not to have any patches and
> >> everything upstream.
> > I would hazard a guess that most users of this have out-of-tree GPU
> > drivers.
> Out of tree GPU drivers, that can be distributed separately from the
> kernel, just like any out of tree module can. This doesn't require any
> kernel patches at all.
That might be true in some cases, but usually those GPU drivers require heavy
patching of at least the display controller driver.