3 MESA_platform_surfaceless
7 EGL_MESA_platform_surfaceless
11 Chad Versace <chadversary@google.com>
12 Haixia Shi <hshi@google.com>
13 Stéphane Marchesin <marcheu@google.com>
14 Zach Reizner <zachr@chromium.org>
15 Gurchetan Singh <gurchetansingh@google.com>
19 Chad Versace <chadversary@google.com>
39 Requires EGL 1.5 or later; or EGL 1.4 with EGL_EXT_platform_base.
41 This extension is written against the EGL 1.5 Specification (draft
44 This extension interacts with EGL_EXT_platform_base as follows. If the
45 implementation supports EGL_EXT_platform_base, then text regarding
46 eglGetPlatformDisplay applies also to eglGetPlatformDisplayEXT;
47 eglCreatePlatformWindowSurface to eglCreatePlatformWindowSurfaceEXT; and
48 eglCreatePlatformPixmapSurface to eglCreatePlatformPixmapSurfaceEXT.
52 This extension defines a new EGL platform, the "surfaceless" platform. This
53 platfom's defining property is that it has no native surfaces, and hence
54 neither eglCreatePlatformWindowSurface nor eglCreatePlatformPixmapSurface
55 can be used. The platform is independent of any native window system.
57 The platform's intended use case is for enabling OpenGL and OpenGL ES
58 applications on systems where no window system exists. However, the
59 platform's permitted usage is not restricted to this case. Since the
60 platform is independent of any native window system, it may also be used on
61 systems where a window system is present.
67 New Procedures and Functions
73 Accepted as the <platform> argument of eglGetPlatformDisplay:
75 EGL_PLATFORM_SURFACELESS_MESA 0x31DD
77 Additions to the EGL Specification
83 To determine if the EGL implementation supports this extension, clients
84 should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
86 To obtain an EGLDisplay on the surfaceless platform, call
87 eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_SURFACELESS_MESA.
88 The <native_display> parameter must be EGL_DEFAULT_DISPLAY.
90 eglCreatePlatformWindowSurface fails when called with a <display> that
91 belongs to the surfaceless platform. It returns EGL_NO_SURFACE and
92 generates EGL_BAD_NATIVE_WINDOW. The justification for this unconditional
93 failure is that the surfaceless platform has no native windows, and
94 therefore the <native_window> parameter is always invalid.
96 Likewise, eglCreatePlatformPixmapSurface also fails when called with a
97 <display> that belongs to the surfaceless platform. It returns
98 EGL_NO_SURFACE and generates EGL_BAD_NATIVE_PIXMAP.
100 The surfaceless platform imposes no platform-specific restrictions on the
101 creation of pbuffers, as eglCreatePbufferSurface has no native surface
102 parameter. Specifically, if the EGLDisplay advertises an EGLConfig whose
103 EGL_SURFACE_TYPE attribute contains EGL_PBUFFER_BIT, then the EGLDisplay
104 permits the creation of pbuffers with that config.
112 Version 2, 2016-10-13 (Chad Versace)
114 - Define interfactions with EGL 1.4 and EGL_EXT_platform_base.
115 - Add Gurchetan as contributor, as he implemented the pbuffer support.
117 Version 1, 2016-09-23 (Chad Versace)
119 - Posted for review at
120 https://lists.freedesktop.org/archives/mesa-dev/2016-September/129549.html