Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 1 | Name |
2 | |||
3 | WL_create_wayland_buffer_from_image |
||
4 | |||
5 | Name Strings |
||
6 | |||
7 | EGL_WL_create_wayland_buffer_from_image |
||
8 | |||
9 | Contributors |
||
10 | |||
11 | Neil Roberts |
||
12 | Axel Davy |
||
13 | Daniel Stone |
||
14 | |||
15 | Contact |
||
16 | |||
17 | Neil Roberts |
||
18 | |||
19 | Status |
||
20 | |||
21 | Proposal |
||
22 | |||
23 | Version |
||
24 | |||
25 | Version 2, October 25, 2013 |
||
26 | |||
27 | Number |
||
28 | |||
29 | EGL Extension #not assigned |
||
30 | |||
31 | Dependencies |
||
32 | |||
33 | Requires EGL 1.4 or later. This extension is written against the |
||
34 | wording of the EGL 1.4 specification. |
||
35 | |||
36 | EGL_KHR_base_image is required. |
||
37 | |||
38 | Overview |
||
39 | |||
40 | This extension provides an entry point to create a wl_buffer which shares |
||
41 | its contents with a given EGLImage. The expected use case for this is in a |
||
42 | nested Wayland compositor which is using subsurfaces to present buffers |
||
43 | from its clients. Using this extension it can attach the client buffers |
||
44 | directly to the subsurface without having to blit the contents into an |
||
45 | intermediate buffer. The compositing can then be done in the parent |
||
46 | compositor. |
||
47 | |||
48 | The nested compositor can create an EGLImage from a client buffer resource |
||
49 | using the existing WL_bind_wayland_display extension. It should also be |
||
50 | possible to create buffers using other types of images although there is |
||
51 | no expected use case for that. |
||
52 | |||
53 | IP Status |
||
54 | |||
55 | Open-source; freely implementable. |
||
56 | |||
57 | New Procedures and Functions |
||
58 | |||
59 | struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, |
||
60 | EGLImageKHR image); |
||
61 | |||
62 | New Tokens |
||
63 | |||
64 | None. |
||
65 | |||
66 | Additions to the EGL 1.4 Specification: |
||
67 | |||
68 | To create a client-side wl_buffer from an EGLImage call |
||
69 | |||
70 | struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, |
||
71 | EGLImageKHR image); |
||
72 | |||
73 | The returned buffer will share the contents with the given EGLImage. Any |
||
74 | updates to the image will also be updated in the wl_buffer. Typically the |
||
75 | EGLImage will be generated in a nested Wayland compositor using a buffer |
||
76 | resource from a client via the EGL_WL_bind_wayland_display extension. |
||
77 | |||
78 | If there was an error then the function will return NULL. In particular it |
||
79 | will generate EGL_BAD_MATCH if the implementation is not able to represent |
||
80 | the image as a wl_buffer. The possible reasons for this error are |
||
81 | implementation-dependant but may include problems such as an unsupported |
||
82 | format or tiling mode or that the buffer is in memory that is inaccessible |
||
83 | to the GPU that the given EGLDisplay is using. |
||
84 | |||
85 | Issues |
||
86 | |||
87 | 1) Under what circumstances can the EGL_BAD_MATCH error be generated? Does |
||
88 | this include for example unsupported tiling modes? |
||
89 | |||
90 | RESOLVED: Yes, the EGL_BAD_MATCH error can be generated for any reason |
||
91 | which prevents the implementation from representing the image as a |
||
92 | wl_buffer. For example, these problems can be but are not limited to |
||
93 | unsupported tiling modes, inaccessible memory or an unsupported pixel |
||
94 | format. |
||
95 | |||
96 | Revision History |
||
97 | |||
98 | Version 1, September 6, 2013 |
||
99 | Initial draft (Neil Roberts) |
||
100 | Version 2, October 25, 2013 |
||
101 | Added a note about more possible reasons for returning EGL_BAD_FORMAT. |