1Name
2
3    MESA_platform_surfaceless
4
5Name Strings
6
7    EGL_MESA_platform_surfaceless
8
9Contributors
10
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>
16
17Contacts
18
19    Chad Versace <chadversary@google.com>
20
21Status
22
23    DRAFT
24
25Version
26
27    Version 2, 2016-10-13
28
29Number
30
31    EGL Extension #TODO
32
33Extension Type
34
35    EGL client extension
36
37Dependencies
38
39    Requires EGL 1.5 or later; or EGL 1.4 with EGL_EXT_platform_base.
40
41    This extension is written against the EGL 1.5 Specification (draft
42    20140122).
43
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.
49
50Overview
51
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.
56
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.
62
63New Types
64
65    None
66
67New Procedures and Functions
68
69    None
70
71New Tokens
72
73    Accepted as the <platform> argument of eglGetPlatformDisplay:
74
75        EGL_PLATFORM_SURFACELESS_MESA           0x31DD
76
77Additions to the EGL Specification
78
79    None.
80
81New Behavior
82
83    To determine if the EGL implementation supports this extension, clients
84    should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
85
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.
89
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.
95
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.
99
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.
105
106Issues
107
108    None.
109
110Revision History
111
112    Version 2, 2016-10-13 (Chad Versace)
113        - Assign enum values
114        - Define interfactions with EGL 1.4 and EGL_EXT_platform_base.
115        - Add Gurchetan as contributor, as he implemented the pbuffer support.
116
117    Version 1, 2016-09-23 (Chad Versace)
118        - Initial version
119        - Posted for review at
120          https://lists.freedesktop.org/archives/mesa-dev/2016-September/129549.html
121