[Mesa-dev] GBM Surface
Kristian Høgsberg
krh at bitplanet.net
Tue Mar 27 12:11:17 PDT 2012
On Tue, Mar 27, 2012 at 3:08 PM, Kristian Høgsberg <krh at bitplanet.net> wrote:
> Hi,
>
> Here's a patch series from Ander to implement a new gbm feature: gbm
> surface. The gbm library is useful for allocating surface for scanout
> and rendering, but the application needs to create EGLImages for the
> gbm bos and then renderbuffers and then render using an FBO. On top
> of that, we have to rely on the (awkward) surfaceless extension to
> make it all work. So gbm surface gives us a few things:
>
> 1) Independent from KMS. The API could be a lot simpler if we just
> could say "EGL surface on this KMS crtc", we didn't want to tie it
> to KMS for a few reasons: we need to be able to pageflip to gbm bos
> from different sources (wayland clients); without the kms
> integration we can do headless EGL; gbm is usable with OpenWF as
> well; and finally, we may be able to implement the wayland egl
> backend in terms of gbm surface, which will greatly simplify that.
>
> 2) Go through eglSwapBuffers as a end-of-frame indicator. This is
> mainly to cover our back on architectures that require explicit
> synchronization between multiple queues, or for deferred rendering
> architectures that relies on eglSwapBuffers to trigger the actual
> rendering.
>
> 3) Let the EGL implementation manage number of buffers (double or
> triple buffer decision etc)
>
> 4) Provide a native window type for EGL on GBM. We avoid the
> surfaceless extension.
>
> 5) Reduce boilerplate code for applications using GBM, EGL and KMS.
>
> Here's how the eglkms.c example looks converted to gbm surface.
>
> http://cgit.freedesktop.org/~krh/mesa-demos/diff/src/egl/opengl/eglkms.c?id=1c78c24366c24786eff3e08132754f7876539e57
Ooops, wrong link, try this one:
http://cgit.freedesktop.org/~krh/mesa-demos/tree/src/egl/opengl/eglkms.c?h=gbm-surface
Kristian
More information about the mesa-dev
mailing list