102f4aeb0Sopenharmony_ciName
202f4aeb0Sopenharmony_ci
302f4aeb0Sopenharmony_ci    EXT_platform_base
402f4aeb0Sopenharmony_ci
502f4aeb0Sopenharmony_ciName Strings
602f4aeb0Sopenharmony_ci
702f4aeb0Sopenharmony_ci    EGL_EXT_platform_base
802f4aeb0Sopenharmony_ci
902f4aeb0Sopenharmony_ciContributors
1002f4aeb0Sopenharmony_ci
1102f4aeb0Sopenharmony_ci    Chad Versace <chad.versace@intel.com>
1202f4aeb0Sopenharmony_ci    James Jones <jajones@nvidia.com>
1302f4aeb0Sopenharmony_ci
1402f4aeb0Sopenharmony_ciContacts
1502f4aeb0Sopenharmony_ci
1602f4aeb0Sopenharmony_ci    Chad Versace <chad.versace@intel.com>
1702f4aeb0Sopenharmony_ci
1802f4aeb0Sopenharmony_ciStatus
1902f4aeb0Sopenharmony_ci
2002f4aeb0Sopenharmony_ci    Complete
2102f4aeb0Sopenharmony_ci
2202f4aeb0Sopenharmony_ciVersion
2302f4aeb0Sopenharmony_ci
2402f4aeb0Sopenharmony_ci    Version 9, 2014.01.09
2502f4aeb0Sopenharmony_ci
2602f4aeb0Sopenharmony_ciNumber
2702f4aeb0Sopenharmony_ci
2802f4aeb0Sopenharmony_ci    EGL Extension #57
2902f4aeb0Sopenharmony_ci
3002f4aeb0Sopenharmony_ciExtension Type
3102f4aeb0Sopenharmony_ci
3202f4aeb0Sopenharmony_ci    EGL client extension
3302f4aeb0Sopenharmony_ci
3402f4aeb0Sopenharmony_ciDependencies
3502f4aeb0Sopenharmony_ci
3602f4aeb0Sopenharmony_ci    Requires EGL 1.4.
3702f4aeb0Sopenharmony_ci
3802f4aeb0Sopenharmony_ci    Requires EGL_EXT_client_extensions to query its existence without
3902f4aeb0Sopenharmony_ci    a display.
4002f4aeb0Sopenharmony_ci
4102f4aeb0Sopenharmony_ci    This extension is written against the wording of the 2013.02.11 revision
4202f4aeb0Sopenharmony_ci    of the EGL 1.4 Specification.
4302f4aeb0Sopenharmony_ci
4402f4aeb0Sopenharmony_ciOverview
4502f4aeb0Sopenharmony_ci
4602f4aeb0Sopenharmony_ci    This extension defines functionality and behavior for EGL implementations
4702f4aeb0Sopenharmony_ci    that support multiple platforms at runtime. For example, on Linux an EGL
4802f4aeb0Sopenharmony_ci    implementation could support X11, Wayland, GBM (Generic Buffer Manager),
4902f4aeb0Sopenharmony_ci    Surface Flinger, and perhaps other platforms.
5002f4aeb0Sopenharmony_ci
5102f4aeb0Sopenharmony_ci    In particular, this extension defines the following:
5202f4aeb0Sopenharmony_ci
5302f4aeb0Sopenharmony_ci        1. A mechanism by which an EGL client can detect which platforms the
5402f4aeb0Sopenharmony_ci           EGL implementation supports.
5502f4aeb0Sopenharmony_ci
5602f4aeb0Sopenharmony_ci        2. New functions that enable an EGL client to specify to which
5702f4aeb0Sopenharmony_ci           platform a native resource belongs when creating an EGL resource
5802f4aeb0Sopenharmony_ci           from that native resource.  For example, this extension enables an
5902f4aeb0Sopenharmony_ci           EGL client to specify, when creating an EGLSurface from a native
6002f4aeb0Sopenharmony_ci           window, that the window belongs to X11.
6102f4aeb0Sopenharmony_ci
6202f4aeb0Sopenharmony_ci        3. That an EGL client is not restricted to interacting with a single
6302f4aeb0Sopenharmony_ci           platform per process. A client process can create and manage EGL
6402f4aeb0Sopenharmony_ci           resources from multiple platforms.
6502f4aeb0Sopenharmony_ci
6602f4aeb0Sopenharmony_ci    The generic term 'platform' is used throughout this extension
6702f4aeb0Sopenharmony_ci    specification rather than 'window system' because not all EGL platforms
6802f4aeb0Sopenharmony_ci    are window systems. In particular, those platforms that allow headless
6902f4aeb0Sopenharmony_ci    rendering without a display server, such as GBM, are not window systems.
7002f4aeb0Sopenharmony_ci
7102f4aeb0Sopenharmony_ci    This extension does not specify behavior specific to any platform, nor
7202f4aeb0Sopenharmony_ci    does it specify the set of platforms that an EGL implementation may
7302f4aeb0Sopenharmony_ci    support. Platform-specific details lie outside this extension's scope and
7402f4aeb0Sopenharmony_ci    are instead described by extensions layered atop this one.
7502f4aeb0Sopenharmony_ci
7602f4aeb0Sopenharmony_ciNew Types
7702f4aeb0Sopenharmony_ci
7802f4aeb0Sopenharmony_ci    None
7902f4aeb0Sopenharmony_ci
8002f4aeb0Sopenharmony_ciNew Procedures and Functions
8102f4aeb0Sopenharmony_ci
8202f4aeb0Sopenharmony_ci    EGLDisplay eglGetPlatformDisplayEXT(
8302f4aeb0Sopenharmony_ci        EGLenum platform,
8402f4aeb0Sopenharmony_ci        void *native_display,
8502f4aeb0Sopenharmony_ci        const EGLint *attrib_list);
8602f4aeb0Sopenharmony_ci
8702f4aeb0Sopenharmony_ci    EGLSurface eglCreatePlatformWindowSurfaceEXT(
8802f4aeb0Sopenharmony_ci        EGLDisplay dpy,
8902f4aeb0Sopenharmony_ci        EGLConfig config,
9002f4aeb0Sopenharmony_ci        void *native_window,
9102f4aeb0Sopenharmony_ci        const EGLint *attrib_list);
9202f4aeb0Sopenharmony_ci
9302f4aeb0Sopenharmony_ci    EGLSurface eglCreatePlatformPixmapSurfaceEXT(
9402f4aeb0Sopenharmony_ci        EGLDisplay dpy,
9502f4aeb0Sopenharmony_ci        EGLConfig config,
9602f4aeb0Sopenharmony_ci        void *native_pixmap,
9702f4aeb0Sopenharmony_ci        const EGLint *attrib_list);
9802f4aeb0Sopenharmony_ci
9902f4aeb0Sopenharmony_ciNew Tokens
10002f4aeb0Sopenharmony_ci
10102f4aeb0Sopenharmony_ci    None
10202f4aeb0Sopenharmony_ci
10302f4aeb0Sopenharmony_ciAdditions to the EGL 1.4 Specification
10402f4aeb0Sopenharmony_ci
10502f4aeb0Sopenharmony_ci    Replace each occurence of the term "window system" with "platform".  The
10602f4aeb0Sopenharmony_ci    rationale behind this change is that not all platforms are window systems,
10702f4aeb0Sopenharmony_ci    yet the EGL 1.4 specification uses the two terms interchangeably.  In
10802f4aeb0Sopenharmony_ci    particular, platforms that allow headless rendering without a display
10902f4aeb0Sopenharmony_ci    server, such as GBM, are not window systems.
11002f4aeb0Sopenharmony_ci
11102f4aeb0Sopenharmony_ci    Append the following paragraph to the initial, unnamed subsection of
11202f4aeb0Sopenharmony_ci    section 2.1 "Native Window System and Rendering APIs".
11302f4aeb0Sopenharmony_ci
11402f4aeb0Sopenharmony_ci    "This specification does not define the set of platforms that may be
11502f4aeb0Sopenharmony_ci    supported by the EGL implementation, nor does it specify behavior specific
11602f4aeb0Sopenharmony_ci    to any platform. The set of supported platforms and their behavior is
11702f4aeb0Sopenharmony_ci    defined by extensions. To detect if a particular platform is supported,
11802f4aeb0Sopenharmony_ci    clients should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY using
11902f4aeb0Sopenharmony_ci    eglQueryString.
12002f4aeb0Sopenharmony_ci
12102f4aeb0Sopenharmony_ci    Replace the text of section 3.2 "Initialization", from the start of the
12202f4aeb0Sopenharmony_ci    section and up to and excluding the phrase "EGL may be intialized on
12302f4aeb0Sopenharmony_ci    a display", with the following:
12402f4aeb0Sopenharmony_ci
12502f4aeb0Sopenharmony_ci    "A display can be obtained by calling
12602f4aeb0Sopenharmony_ci
12702f4aeb0Sopenharmony_ci        EGLDisplay eglGetPlatformDisplayEXT(
12802f4aeb0Sopenharmony_ci            EGLenum platform,
12902f4aeb0Sopenharmony_ci            void *native_display,
13002f4aeb0Sopenharmony_ci            const EGLint *attrib_list);
13102f4aeb0Sopenharmony_ci
13202f4aeb0Sopenharmony_ci    EGL considers the returned EGLDisplay as belonging to the native platform
13302f4aeb0Sopenharmony_ci    specified by <platform>.  This specification defines no valid value for
13402f4aeb0Sopenharmony_ci    <platform>. Any specification that does define a valid value for
13502f4aeb0Sopenharmony_ci    <platform> will also define requirements for the <native_display>
13602f4aeb0Sopenharmony_ci    parameter. For example, an extension specification that defines support
13702f4aeb0Sopenharmony_ci    for the X11 platform may require that <native_display> be a pointer to an
13802f4aeb0Sopenharmony_ci    X11 Display, and an extension specification that defines support for the
13902f4aeb0Sopenharmony_ci    Microsoft Windows platform may require that <native_display> be a pointer
14002f4aeb0Sopenharmony_ci    to a Windows Device Context.
14102f4aeb0Sopenharmony_ci
14202f4aeb0Sopenharmony_ci    All attribute names in <attrib_list> are immediately followed by the
14302f4aeb0Sopenharmony_ci    corresponding desired value. The list is terminated with EGL_NONE. The
14402f4aeb0Sopenharmony_ci    <attrib_list> is considered empty if either <attrib_list> is NULL or if
14502f4aeb0Sopenharmony_ci    its first element is EGL_NONE. This specification defines no valid
14602f4aeb0Sopenharmony_ci    attribute names for <attrib_list>.
14702f4aeb0Sopenharmony_ci
14802f4aeb0Sopenharmony_ci    Multiple calls made to eglGetPlatformDisplayEXT with the same <platform>
14902f4aeb0Sopenharmony_ci    and <native_display> will return the same EGLDisplay handle.
15002f4aeb0Sopenharmony_ci
15102f4aeb0Sopenharmony_ci    An EGL_BAD_PARAMETER error is generated if <platform> has an invalid value.
15202f4aeb0Sopenharmony_ci    If <platform> is valid but no display matching <native_display> is
15302f4aeb0Sopenharmony_ci    available, then EGL_NO_DISPLAY is returned; no error condition is raised
15402f4aeb0Sopenharmony_ci    in this case.
15502f4aeb0Sopenharmony_ci
15602f4aeb0Sopenharmony_ci    A display can also be obtained by calling
15702f4aeb0Sopenharmony_ci
15802f4aeb0Sopenharmony_ci        EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id);
15902f4aeb0Sopenharmony_ci
16002f4aeb0Sopenharmony_ci    The behavior of eglGetDisplay is similar to that of
16102f4aeb0Sopenharmony_ci    eglGetPlatformDisplayEXT, but is specifided in terms of implementation-
16202f4aeb0Sopenharmony_ci    specific behavior rather than platform-specific extensions.
16302f4aeb0Sopenharmony_ci    As for eglGetPlatformDisplayEXT, EGL considers the returned EGLDisplay
16402f4aeb0Sopenharmony_ci    as belonging to the same platform as <display_id>. However, the set of
16502f4aeb0Sopenharmony_ci    platforms to which <display_id> is permitted to belong, as well as the
16602f4aeb0Sopenharmony_ci    actual type of <display_id>, are implementation-specific.  If <display_id>
16702f4aeb0Sopenharmony_ci    is EGL_DEFAULT_DISPLAY, a default display is returned.  Multiple calls
16802f4aeb0Sopenharmony_ci    made to eglGetDisplay with the same <display_id> will return the same
16902f4aeb0Sopenharmony_ci    EGLDisplay handle.  If no display matching <display_id> is available,
17002f4aeb0Sopenharmony_ci    EGL_NO_DISPLAY is returned; no error condition is raised in this case."
17102f4aeb0Sopenharmony_ci
17202f4aeb0Sopenharmony_ci    In section 3.5.1 "Creating On-Screen Rendering Surfaces", replace the
17302f4aeb0Sopenharmony_ci    second paragraph, which begins with "Using the platform-specific type" and
17402f4aeb0Sopenharmony_ci    ends with "render into this surface", with the following:
17502f4aeb0Sopenharmony_ci
17602f4aeb0Sopenharmony_ci    "Then call
17702f4aeb0Sopenharmony_ci
17802f4aeb0Sopenharmony_ci        EGLSurface eglCreatePlatformWindowSurfaceEXT(
17902f4aeb0Sopenharmony_ci            EGLDisplay dpy,
18002f4aeb0Sopenharmony_ci            EGLConfig config,
18102f4aeb0Sopenharmony_ci            void *native_window,
18202f4aeb0Sopenharmony_ci            const EGLint *attrib_list);
18302f4aeb0Sopenharmony_ci
18402f4aeb0Sopenharmony_ci    eglCreatePlatformWindowSurfaceEXT creates an onscreen EGLSurface and
18502f4aeb0Sopenharmony_ci    returns a handle to it. Any EGL context created with a compatible
18602f4aeb0Sopenharmony_ci    EGLConfig can be used to render into this surface.
18702f4aeb0Sopenharmony_ci
18802f4aeb0Sopenharmony_ci    <native_window> must belong to the same platform as <dpy>, and EGL
18902f4aeb0Sopenharmony_ci    considers the returned EGLSurface as belonging to that same platform.  The
19002f4aeb0Sopenharmony_ci    extension that defines the platform to which <dpy> belongs also defines
19102f4aeb0Sopenharmony_ci    the requirements for the <native_window> parameter."
19202f4aeb0Sopenharmony_ci
19302f4aeb0Sopenharmony_ci    In the remainder of section 3.5.1, replace each occurrence of
19402f4aeb0Sopenharmony_ci    'eglCreateWindowSurface' with 'eglCreatePlatformWindowSurfaceEXT'.
19502f4aeb0Sopenharmony_ci
19602f4aeb0Sopenharmony_ci    Insert the sentence below after the first sentence of the last paragraph
19702f4aeb0Sopenharmony_ci    of section 3.5.1:
19802f4aeb0Sopenharmony_ci
19902f4aeb0Sopenharmony_ci    "If <dpy> and <native_window> do not belong to the same platform, then
20002f4aeb0Sopenharmony_ci    undefined behavior occurs. [1]"
20102f4aeb0Sopenharmony_ci
20202f4aeb0Sopenharmony_ci    Add the following footnote to section 3.5.1:
20302f4aeb0Sopenharmony_ci
20402f4aeb0Sopenharmony_ci    "[1] See section 3.1.0.2 "Parameter Validation".
20502f4aeb0Sopenharmony_ci
20602f4aeb0Sopenharmony_ci    Append the following to section 3.5.1:
20702f4aeb0Sopenharmony_ci
20802f4aeb0Sopenharmony_ci    "An on-screen rendering surface may also be created by calling
20902f4aeb0Sopenharmony_ci
21002f4aeb0Sopenharmony_ci        EGLSurface eglCreateWindowSurface(
21102f4aeb0Sopenharmony_ci            EGLDisplay dpy,
21202f4aeb0Sopenharmony_ci            EGLConfig config,
21302f4aeb0Sopenharmony_ci            EGLNativeWindowType win,
21402f4aeb0Sopenharmony_ci            const EGLint *attrib_list);
21502f4aeb0Sopenharmony_ci
21602f4aeb0Sopenharmony_ci    The behavior of eglCreateWindowSurface is identical to that of
21702f4aeb0Sopenharmony_ci    eglCreatePlatformWindowSurfaceEXT except that the set of platforms to
21802f4aeb0Sopenharmony_ci    which <dpy> is permitted to belong, as well as the actual type of <win>,
21902f4aeb0Sopenharmony_ci    are implementation specific.
22002f4aeb0Sopenharmony_ci
22102f4aeb0Sopenharmony_ci    In section 3.5.4 "Creating Native Pixmap Rendering Surfaces", replace the
22202f4aeb0Sopenharmony_ci    third paragraph, which begins with "Using the platform-specific type" and
22302f4aeb0Sopenharmony_ci    ends with "render into this surface", with the following:
22402f4aeb0Sopenharmony_ci
22502f4aeb0Sopenharmony_ci    "Then call
22602f4aeb0Sopenharmony_ci
22702f4aeb0Sopenharmony_ci        EGLSurface eglCreatePlatformPixmapSurfaceEXT(
22802f4aeb0Sopenharmony_ci            EGLDisplay dpy,
22902f4aeb0Sopenharmony_ci            EGLConfig config,
23002f4aeb0Sopenharmony_ci            void *native_pixmap,
23102f4aeb0Sopenharmony_ci            const EGLint *attrib_list);
23202f4aeb0Sopenharmony_ci
23302f4aeb0Sopenharmony_ci    eglCreatePlatformPixmapSurfaceEXT creates an offscreen EGLSurface and
23402f4aeb0Sopenharmony_ci    returns a handle to it. Any EGL context created with a compatible
23502f4aeb0Sopenharmony_ci    EGLConfig can be used to render into this surface.
23602f4aeb0Sopenharmony_ci
23702f4aeb0Sopenharmony_ci    <native_pixmap> must belong to the same platform as <dpy>, and EGL
23802f4aeb0Sopenharmony_ci    considers the returned EGLSurface as belonging to that same platform.  The
23902f4aeb0Sopenharmony_ci    extension that defines the platform to which <dpy> belongs also defines
24002f4aeb0Sopenharmony_ci    the requirements for the <native_pixmap> parameter."
24102f4aeb0Sopenharmony_ci
24202f4aeb0Sopenharmony_ci    In the remainder of section 3.5.4, replace each occurrence of
24302f4aeb0Sopenharmony_ci    'eglCreatePixmapSurface' with 'eglCreatePlatformPixmapSurfaceEXT' and each
24402f4aeb0Sopenharmony_ci    occurence of 'eglCreateWindowSurface' with
24502f4aeb0Sopenharmony_ci    'eglCreatePlatformWindowSurfaceEXT'.
24602f4aeb0Sopenharmony_ci
24702f4aeb0Sopenharmony_ci    Insert the sentence below after the first sentence of the last paragraph
24802f4aeb0Sopenharmony_ci    of section 3.5.4:
24902f4aeb0Sopenharmony_ci
25002f4aeb0Sopenharmony_ci    "If <dpy> and <native_pixmap> do not belong to the same platform, then
25102f4aeb0Sopenharmony_ci    undefined behavior occurs. [1]"
25202f4aeb0Sopenharmony_ci
25302f4aeb0Sopenharmony_ci    Add the following footnote to section 3.5.3:
25402f4aeb0Sopenharmony_ci
25502f4aeb0Sopenharmony_ci    "[1] See section 3.1.0.2 "Parameter Validation".
25602f4aeb0Sopenharmony_ci
25702f4aeb0Sopenharmony_ci    Append the following to section 3.5.2:
25802f4aeb0Sopenharmony_ci
25902f4aeb0Sopenharmony_ci    "An offscreen rendering surface may also be created by calling
26002f4aeb0Sopenharmony_ci
26102f4aeb0Sopenharmony_ci        EGLSurface eglCreatePixmapSurface(
26202f4aeb0Sopenharmony_ci            EGLDisplay dpy,
26302f4aeb0Sopenharmony_ci            EGLConfig config,
26402f4aeb0Sopenharmony_ci            EGLNativePixmapType pixmap,
26502f4aeb0Sopenharmony_ci            const EGLint *attrib_list);
26602f4aeb0Sopenharmony_ci
26702f4aeb0Sopenharmony_ci    The behavior of eglCreatePixmapSurface is identical to that of
26802f4aeb0Sopenharmony_ci    eglCreatePlatformPixmapSurfaceEXT except that the set of platforms to
26902f4aeb0Sopenharmony_ci    which <dpy> is permitted to belong, as well as the actual type of
27002f4aeb0Sopenharmony_ci    <pixmap>, are implementation specific.
27102f4aeb0Sopenharmony_ci
27202f4aeb0Sopenharmony_ciIssues
27302f4aeb0Sopenharmony_ci
27402f4aeb0Sopenharmony_ci    1. What rules define how EGL resources are shared among displays belonging
27502f4aeb0Sopenharmony_ci       to different platforms?
27602f4aeb0Sopenharmony_ci
27702f4aeb0Sopenharmony_ci       RESOLVED: Neither the EGL 1.4 specification nor any extension allow EGL
27802f4aeb0Sopenharmony_ci       resources to be shared among displays. This extension does not remove
27902f4aeb0Sopenharmony_ci       that restriction.
28002f4aeb0Sopenharmony_ci
28102f4aeb0Sopenharmony_ci    2. Rather than define the new function eglGetPlatformDisplayEXT(), should
28202f4aeb0Sopenharmony_ci       this extension instead define new thread-local state for the currently
28302f4aeb0Sopenharmony_ci       bound platform and an associated binding function, such as
28402f4aeb0Sopenharmony_ci       eglBindPlatformEXT()?
28502f4aeb0Sopenharmony_ci
28602f4aeb0Sopenharmony_ci       RESOLVED: No, for the following reasons.
28702f4aeb0Sopenharmony_ci
28802f4aeb0Sopenharmony_ci            - A current trend among the Khronos workgroups is to remove use of
28902f4aeb0Sopenharmony_ci              global state by introducing bindless objects. Introducing a new
29002f4aeb0Sopenharmony_ci              thread-local binding point defies that trend.
29102f4aeb0Sopenharmony_ci
29202f4aeb0Sopenharmony_ci            - Additional specification language would be required to define
29302f4aeb0Sopenharmony_ci              the interactions between the currently bound platform and all
29402f4aeb0Sopenharmony_ci              EGL functions that accept an EGLDisplay. (For example, if the
29502f4aeb0Sopenharmony_ci              currently bound platform is Wayland, then what is the result of
29602f4aeb0Sopenharmony_ci              calling eglCreateWindowSurface() with a display and native
29702f4aeb0Sopenharmony_ci              window belonging to X11?) By choosing to not introduce the
29802f4aeb0Sopenharmony_ci              notion of a "currently bound platform", we obtain a cleaner
29902f4aeb0Sopenharmony_ci              extension specification and eliminate for EGL users a class of
30002f4aeb0Sopenharmony_ci              potential bugs.
30102f4aeb0Sopenharmony_ci
30202f4aeb0Sopenharmony_ci    3. Should this extension define the notion of a default platform?
30302f4aeb0Sopenharmony_ci
30402f4aeb0Sopenharmony_ci       RESOLVED: No. eglGetDisplay() can be used if a default platform is
30502f4aeb0Sopenharmony_ci       needed.
30602f4aeb0Sopenharmony_ci
30702f4aeb0Sopenharmony_ci    4. Rather than define the new functions
30802f4aeb0Sopenharmony_ci       eglCreatePlatform{Window,Pixmap}SurfaceEXT(), should we instead
30902f4aeb0Sopenharmony_ci       redefine the EGLNative* types in eglplatform.h as void*?
31002f4aeb0Sopenharmony_ci
31102f4aeb0Sopenharmony_ci       RESOLVED: No, this introduces problems for X11 applications.
31202f4aeb0Sopenharmony_ci
31302f4aeb0Sopenharmony_ci       Suppose that a 64-bit X11 application is compiled against an old EGL
31402f4aeb0Sopenharmony_ci       library (where EGLNativeWindowType is a typedef for XID, which is in
31502f4aeb0Sopenharmony_ci       turn a typedef for a 64-bit unsigned integer on Fedora 18) and then
31602f4aeb0Sopenharmony_ci       attempts to run against a new EGL library (where EGLNativeType is
31702f4aeb0Sopenharmony_ci       a typedef for void*).  To preserve the ABI of eglCreateWindowSurface()
31802f4aeb0Sopenharmony_ci       in this situation, the new EGL library must re-interpret the
31902f4aeb0Sopenharmony_ci       <native_window> parameter as an integer.
32002f4aeb0Sopenharmony_ci
32102f4aeb0Sopenharmony_ci       However, this preservation of the ABI breaks source compatibility for
32202f4aeb0Sopenharmony_ci       existing X11 applications. To successfully compile, each call to
32302f4aeb0Sopenharmony_ci
32402f4aeb0Sopenharmony_ci            eglCreateWindowSurface(dpy, window, attribs)
32502f4aeb0Sopenharmony_ci
32602f4aeb0Sopenharmony_ci       in existing X11 application source code would need to be replaced with
32702f4aeb0Sopenharmony_ci
32802f4aeb0Sopenharmony_ci            eglCreateWindowSurface(dpy, (void*) window, attribs) .
32902f4aeb0Sopenharmony_ci
33002f4aeb0Sopenharmony_ci       Requiring such widespread code modifications would be an unnecessary
33102f4aeb0Sopenharmony_ci       burden to developers and Linux package maintainers.
33202f4aeb0Sopenharmony_ci
33302f4aeb0Sopenharmony_ciRevision History
33402f4aeb0Sopenharmony_ci
33502f4aeb0Sopenharmony_ci    Version 9, 2014.01.09 (Jon Leech)
33602f4aeb0Sopenharmony_ci        - Fix typo eglGetDisplayPlatformEXT -> eglGetPlatformDisplayEXT
33702f4aeb0Sopenharmony_ci
33802f4aeb0Sopenharmony_ci    Version 8, 2013.07.03 (Chad Versace)
33902f4aeb0Sopenharmony_ci        - Add "Extension Type" section, required by EGL_EXT_client_extensions v9.
34002f4aeb0Sopenharmony_ci
34102f4aeb0Sopenharmony_ci    Version 7, 2013.06.07 (Chad Versace)
34202f4aeb0Sopenharmony_ci        - Fix some awkward text (s/the EGL/EGL/).
34302f4aeb0Sopenharmony_ci        - Remove text "attribute names are defined by platform-specific
34402f4aeb0Sopenharmony_ci          extensions".
34502f4aeb0Sopenharmony_ci
34602f4aeb0Sopenharmony_ci    Version 6, 2013.06.07 (Chad Versace)
34702f4aeb0Sopenharmony_ci        - To "Dependencies" section, expand text that discusses
34802f4aeb0Sopenharmony_ci          EGL_EXT_client_extensions.
34902f4aeb0Sopenharmony_ci
35002f4aeb0Sopenharmony_ci    Version 5, 2013.05.18 (Chad Versace)
35102f4aeb0Sopenharmony_ci        - Removed restriction that "attribute names are defined only by
35202f4aeb0Sopenharmony_ci          platform-specific extensions".
35302f4aeb0Sopenharmony_ci        - Resolve issue 3 as NO.
35402f4aeb0Sopenharmony_ci        - Clarified some text and fixed grammatical errors.
35502f4aeb0Sopenharmony_ci
35602f4aeb0Sopenharmony_ci    Version 4, 2013.05.14 (Chad Versace)
35702f4aeb0Sopenharmony_ci        - Add <attrib_list> parameter to eglGetPlatformDisplayEXT, per
35802f4aeb0Sopenharmony_ci          feedback at the April Khronos F2F.
35902f4aeb0Sopenharmony_ci
36002f4aeb0Sopenharmony_ci    Version 3, 2013.04.26 (Chad Versace)
36102f4aeb0Sopenharmony_ci        - Add issues 2, 3, 4.
36202f4aeb0Sopenharmony_ci
36302f4aeb0Sopenharmony_ci    Version 2, 2013.03.24 (Chad Versace)
36402f4aeb0Sopenharmony_ci        - Complete draft by adding text for pixmaps.
36502f4aeb0Sopenharmony_ci        - The footnotes regarding undefined behavior, simplify them by
36602f4aeb0Sopenharmony_ci          simply referring to section 3.1.0.2.
36702f4aeb0Sopenharmony_ci        - Add issue 1 from Eric Anholt <eric@anholt.net>.
36802f4aeb0Sopenharmony_ci        - Fix spelling and formatting errors.
36902f4aeb0Sopenharmony_ci
37002f4aeb0Sopenharmony_ci    Version 1, 2013.03.13 (Chad Versace)
37102f4aeb0Sopenharmony_ci        - Incomplete draft posted for review
372