Name KHR_platform_wayland Name Strings EGL_KHR_platform_wayland Contributors Chad Versace Jon Leech (oddhack 'at' sonic.net) Contacts Chad Versace Status Complete. Approved by the EGL Working Group on January 31, 2014. Ratified by the Khronos Board of Promoters on March 14, 2014. Version Version 2, 2014/02/18 Number EGL Extension #70 Extension Type EGL client extension Dependencies EGL 1.5 is required. This extension is written against the EGL 1.5 Specification (draft 20140122). The behavior of part of this extension is different depending on whether the EGL_EXT_buffer_age extension is also present. Overview This extension defines how to create EGL resources from native Wayland resources using the EGL 1.5 platform functionality. New Types None New Procedures and Functions None New Tokens Accepted as the argument of eglGetPlatformDisplay: EGL_PLATFORM_WAYLAND_KHR 0x31D8 Additions to the EGL Specification None. New Behavior To determine if the EGL implementation supports this extension, clients should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY. To obtain an EGLDisplay backed by a Wayland display, call eglGetPlatformDisplay with set to EGL_PLATFORM_WAYLAND_KHR. The parameter specifies the Wayland display to use and must either point to a `struct wl_display` or be EGL_DEFAULT_DISPLAY. If is EGL_DEFAULT_DISPLAY, then EGL will create a new wl_display structure by connecting to the default Wayland socket. The manual page wl_display_connect(3) defines the location of the default Wayland socket. To obtain an on-screen rendering surface from a Wayland window, call eglCreatePlatformWindowSurface with a that belongs to Wayland and a that points to a `struct wl_egl_surface`. It is not valid to call eglCreatePlatformPixmapSurface with a that belongs to Wayland. Any such call fails and generates an EGL_BAD_PARAMETER error. Rendering to the obtained EGLSurface or querying it with EGL_BUFFER_AGE_KHR will lock its back buffer preventing it from being dropped or resized, until the next buffer swap. The rationale behind this behavior is to keep operations result accurate until the next swap. Issues 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to eglGetPlatformDisplay()? RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay returns a display backed by the default Wayland display. 2. Should this extension support creation of EGLPixmap resources from Wayland pixmaps? RESOLVED. No. Wayland has no pixmap type. Revision History Version 3, 2022/07/14 (Kirill Chibisov) - Clarify EGLSurface back buffer locking behavior with regards to rendering and surface querying operations. - Add dependency on EGL_EXT_buffer_age. Version 2, 2014/02/18 (Chad Versace) - Change resolution of issue #1 from "no" to "yes". Now eglGetPlatformDisplay accepts EGL_DEFAULT_DISPLAY for Wayland. - Explain in more detail how EGL connects to the default Wayland display. Version 1, 2014/01/22 (Jon Leech) - Promote EGL_EXT_platform_wayland to KHR to go with EGL 1.5.