On Fri, Nov 1, 2013 at 12:00 AM, Daniel Vetter daniel@ffwll.ch wrote:
On Thu, Oct 31, 2013 at 10:07:25PM +0100, Thomas Hellstrom wrote:
On 10/31/2013 09:48 PM, Dave Airlie wrote:
On Fri, Nov 1, 2013 at 6:40 AM, Thomas Hellstrom thellstrom@vmware.com wrote:
Well, I'd be happy to avoid mmap, but then what does optional mean in this context? That all generic user-space apps *must* implement a workaround if mmap isn't implemented?
It's unfortunate a bit like implicit synchronization mentioned in section 3) in Direct Userspace Access/mmap Support in the kernel dma-buf doc: It should be avoided, otherwise it might be relied upon by userspace and exporters not implementing it will suffer.
In reality, people will start using mmap() and won't care to implement workarounds if it's not supported, and drivers like vmwgfx and non-coherent architectures will suffer.
I haven't looked closely at how DRI3 or Wayland/weston use or will use dma-buf, but if they rely on mmap, we're sort of lost. MIR uses the following scheme:
DRI3 and wayland won't use dma-buf mmap directly,
using dma-buf mmap directly is wrong for anything that shares objects with itself.
That sounds good to hear. Perhaps we should add that to the dma-buf docs.
Userspace mmap was essentially added as a concession to the android ion guys since they really, really wanted it. We've tried to tell them that it's a horrible idea (see all the fun with coherency and syncing), but they said that they have userspace for it already and so we let it be.
Imo if you're not running Android userspace there's no need for this at all.
But now it turns out that gstreamer is using it and our life is hell. We should have made it not work for _any_ driver if CONFIG_ANDRIOD wasn't set.
Cheers, Jakob.