Introduction and updates from NVIDIA
daniel at ffwll.ch
Mon May 16 09:36:48 UTC 2016
On Sat, May 14, 2016 at 05:46:51PM +0100, Daniel Stone wrote:
> On 12 May 2016 at 00:08, James Jones <jajones at nvidia.com> wrote:
> > The EGLStream encapsulation takes into consideration the new use cases
> > EGLImage, GBM, etc. were intended to address, and restores what I believe to
> > be the minimal amount of the traditional GL+GLX/EGL/etc. model, while still
> > allowing as much of the flexibility of the "a bunch of buffers" mental model
> > as possible. We can re-invent that with GBM API adjustments, a set of
> > restrictions on how the buffers it allocates can be used, and another layer
> > of metadata being pumped into drivers on top of that, but I suspect we'd
> > wind up with something that looks very similar to streams.
> The only allocation GBM does is for buffers produced by the compositor
> and used for scanout, so in this regard it's quite straightforward.
> Client buffers are a separate topic, and I don't buy that the
> non-Streams model precludes things like render compression. In fact,
> Ben Widawsky, Dan Vetter, and some others are as we speak working on
> support for render compression within both Wayland EGL and GBM itself
> (for direct scanout from compressed buffers with an auxiliary plane).
> So far, the only external impact has been a very small extension to
> the GBM API to allow use of multiple planes and FB modifiers: a far
> smaller change than implementing the whole of Streams and all its
> future extensions (Switch et al).
Just a quick correction: For render compression we also do need some
allocation hinting interface, since on intel gpus you can't always scan
out render compressed buffers. So exactly what EGLstreams tries to also
solve (at least if my understanding is correct). So we need a bit more in
gbm than just be able to pass fb modifiers around.
I still think it's the better approach though since it's still fairly
incremental. And exposing the allocation hints and making them explicitly
will avoid the need to teach everything in the world about EGLstreams (vk,
v4l, drm, ...). Which as Daniel Stone pointed out, doesn't really work
well if you have IP blocks from multiple vendors on your SoC.
Software Engineer, Intel Corporation
More information about the wayland-devel