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