mirror of https://gitlab.freedesktop.org/mesa/mesa
102 lines
3.1 KiB
Plaintext
102 lines
3.1 KiB
Plaintext
Name
|
|
|
|
WL_create_wayland_buffer_from_image
|
|
|
|
Name Strings
|
|
|
|
EGL_WL_create_wayland_buffer_from_image
|
|
|
|
Contributors
|
|
|
|
Neil Roberts
|
|
Axel Davy
|
|
Daniel Stone
|
|
|
|
Contact
|
|
|
|
Neil Roberts <neil.s.roberts@intel.com>
|
|
|
|
Status
|
|
|
|
Proposal
|
|
|
|
Version
|
|
|
|
Version 2, October 25, 2013
|
|
|
|
Number
|
|
|
|
EGL Extension #not assigned
|
|
|
|
Dependencies
|
|
|
|
Requires EGL 1.4 or later. This extension is written against the
|
|
wording of the EGL 1.4 specification.
|
|
|
|
EGL_KHR_base_image is required.
|
|
|
|
Overview
|
|
|
|
This extension provides an entry point to create a wl_buffer which shares
|
|
its contents with a given EGLImage. The expected use case for this is in a
|
|
nested Wayland compositor which is using subsurfaces to present buffers
|
|
from its clients. Using this extension it can attach the client buffers
|
|
directly to the subsurface without having to blit the contents into an
|
|
intermediate buffer. The compositing can then be done in the parent
|
|
compositor.
|
|
|
|
The nested compositor can create an EGLImage from a client buffer resource
|
|
using the existing WL_bind_wayland_display extension. It should also be
|
|
possible to create buffers using other types of images although there is
|
|
no expected use case for that.
|
|
|
|
IP Status
|
|
|
|
Open-source; freely implementable.
|
|
|
|
New Procedures and Functions
|
|
|
|
struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
|
|
EGLImageKHR image);
|
|
|
|
New Tokens
|
|
|
|
None.
|
|
|
|
Additions to the EGL 1.4 Specification:
|
|
|
|
To create a client-side wl_buffer from an EGLImage call
|
|
|
|
struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
|
|
EGLImageKHR image);
|
|
|
|
The returned buffer will share the contents with the given EGLImage. Any
|
|
updates to the image will also be updated in the wl_buffer. Typically the
|
|
EGLImage will be generated in a nested Wayland compositor using a buffer
|
|
resource from a client via the EGL_WL_bind_wayland_display extension.
|
|
|
|
If there was an error then the function will return NULL. In particular it
|
|
will generate EGL_BAD_MATCH if the implementation is not able to represent
|
|
the image as a wl_buffer. The possible reasons for this error are
|
|
implementation-dependant but may include problems such as an unsupported
|
|
format or tiling mode or that the buffer is in memory that is inaccessible
|
|
to the GPU that the given EGLDisplay is using.
|
|
|
|
Issues
|
|
|
|
1) Under what circumstances can the EGL_BAD_MATCH error be generated? Does
|
|
this include for example unsupported tiling modes?
|
|
|
|
RESOLVED: Yes, the EGL_BAD_MATCH error can be generated for any reason
|
|
which prevents the implementation from representing the image as a
|
|
wl_buffer. For example, these problems can be but are not limited to
|
|
unsupported tiling modes, inaccessible memory or an unsupported pixel
|
|
format.
|
|
|
|
Revision History
|
|
|
|
Version 1, September 6, 2013
|
|
Initial draft (Neil Roberts)
|
|
Version 2, October 25, 2013
|
|
Added a note about more possible reasons for returning EGL_BAD_FORMAT.
|