Name

    EXT_platform_device

Name Strings

    EGL_EXT_platform_device

Contributors

    James Jones
    Daniel Kartch

Contacts

    James Jones, NVIDIA  (jajones 'at' nvidia.com)

Status

    Complete

Version

    Version 6 - May 16th, 2014

Number

    EGL Extension #73

Extension Type

    EGL device extension

Dependencies

    Requires EGL_EXT_device_base

    Requires EGL_EXT_platform_base or EGL 1.5

    Written against the wording of EGL 1.5

Overview

    Increasingly, EGL and its client APIs are being used in place of
    "native" rendering APIs to implement the basic graphics
    functionality of native windowing systems.  This creates demand
    for a method to initialize EGL displays and surfaces directly on
    top of native GPU or device objects rather than native window
    system objects.  The mechanics of enumerating the underlying
    native devices and constructing EGL displays and surfaces from
    them have been solved in various platform and implementation-
    specific ways.  The EGL device family of extensions offers a
    standardized framework for bootstrapping EGL without the use of
    any underlying "native" APIs or functionality.

    This extension defines a method to create an EGLDisplay from an
    EGLDeviceEXT by treating the EGLDeviceEXT as an EGLNativeDisplay
    object.

New Types

    None

New Functions

    None

New Tokens

    Accepted by the <platform> parameter of eglGetPlatformDisplayEXT
    and eglGetPlatformDisplay:

        EGL_PLATFORM_DEVICE_EXT                  0x313F

Replace the last paragraph of section 2.1 "Native Window System and
Rendering APIs"

    "This specification defines only the EGLDeviceEXT platform, and
    behavior specific to it.  Implementations may support other
    platforms, but their existence and behavior is defined by
    extensions.  To detect support for other platforms, clients should
    query the EGL_EXTENSIONS string of EGL_NO_DISPLAY using
    eglQueryString (see section 3.3).

Replace the second sentence of the paragraph following the
eglGetPlatformDisplay prototype

    "The only valid value for <platform> is EGL_PLATFORM_DEVICE_EXT.
    When <platform> is EGL_PLATFORM_DEVICE_EXT, <native_display> must
    be an EGLDeviceEXT object.  Platform-specific extensions may
    define other valid values for <platform>."

Add the following sentence to the end of the second paragraph after
the eglCreatePlatformWindowSurface prototype.

    "There are no valid values of <native_window> when <dpy> belongs
    to the EGL_PLATFORM_DEVICE_EXT platform."

Add the following sentence to the end of the second paragraph after
the eglCreatePlatformPixmapSurface prototype.

    "There are no valid values of <native_pixmap> when <dpy> belongs
    to the EGL_PLATFORM_DEVICE_EXT platform.

Issues

    1.  Do EGLDevice-backed displays support window or pixmap surfaces?
        If so, what native objects are they associated with?  If not,
        are EGLDevice-backed displays useful in any way?

        RESOLVED: This extension defines no method to create window or
        pixmap surfaces on the EGLDeviceEXT platform.  Other
        extensions may define such functionality.  Presumably, if
        there are no other extensions that expose native window or
        pixmap types associated with EGL devices, EGLDeviceEXT-backed
        displays could expose EGLConfigs that only support rendering
        to EGLStreamKHR or EGLPbuffer surfaces.

    2.  Should the EGL_PLATFORM_DEVICE_EXT platform be included in the
        EGL specification as a special "blessed" platform, or exist
        only as an extension like other platforms?

        RESOLVED: EGL devices are defined as part of the EGL
        specification, so there's no reason to exclude their
        associated platform from the core EGL specification.  They are
        not native objects, therefore they can not be referred to as a
        native platform, even though they are used interchangeably
        with native objects in this extension.

Revision History:

    #6  (May 16th, 2014) James Jones
        - Marked the extension complete
        - Marked all issues resolved

    #5  (April 8th, 2014) James Jones
        - Updated wording based on the EGL 1.5 spec
        - Assigned values to tokens

    #4  (November 6th, 2013) James Jones
        - Specified this is a device extension
        - Requires, rather than interacts with EGL_EXT_platform_base
        - Removed EGL_SUPPORTS_PLATFORM_DEVICE_EXT.  There is no need
          for a separate query now that the name string is listed in
          the per-device extension string

    #3  (April 23rd, 2013) James Jones
        - Fixed minor typos

    #2  (April 18th, 2013) James Jones
        - Moved eglGetDisplayPointerEXT to a stand-alone extension
        - Renamed from EGL_EXT_device_display to
          EGL_EXT_platform_device
        - Filled in the actual spec language modifications
        - Replaced issue 2, since the original was moved to
          EGL_EXT_display_attributes
        - Reworded issue 1.
        - Fixed some typos

    #1  (April 16th, 2013) James Jones
        - Initial Draft
