Edit

kc3-lang/angle/extensions/EGL_ANGLE_platform_angle.txt

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2018-01-04 18:19:21
    Hash : f3e23295
    Message : EGL: Expose NULL driver device selection. This makes the device type selection part of the ANGLE platform extension. We currently support NULL driver selection on all available back-ends (although on the NULL back-end, it already has no device type). Optionally we could expose certain features of this as separate extensions. This currently also supports the old hidden enum, until we can update Chrome and consolidate to the new exposed official enum. Bug: angleproject:2159 Change-Id: I85d0811098e644e8192c207673af9e18ed7c1da2 Reviewed-on: https://chromium-review.googlesource.com/846021 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • extensions/EGL_ANGLE_platform_angle.txt
  • Name
    
        ANGLE_platform_angle
    
    Name Strings
    
        EGL_ANGLE_platform_angle
    
    Contributors
    
        Scott Graham, Google
        Shannon Woods, Google
        Geoff Lang, Google
    
    Contacts
    
        Scott Graham, Google (scottmg 'at' google 'dot' com)
    
    Status
    
        Draft
    
    Version
    
        Version 5, 2017-12-28
    
    Number
    
        EGL Extension XXX
    
    Extension Type
    
        EGL client extension
    
    Dependencies
    
        Requires EGL_EXT_client_extensions to query its existence without
        a display.
    
        Requires EGL_EXT_platform_base.
    
        This extension is written against the wording of version 9 of the
        EGL_EXT_platform_base specification.
    
        ANGLE_platform_angle_d3d affects the definition of this extension.
        ANGLE_platform_angle_opengl affects the definition of this extension.
    
    Overview
    
        This extension defines how to create EGL resources from native resources
        using the functions defined by EGL_EXT_platform_base.
    
    New Types
    
        None
    
    New Procedures and Functions
    
        None
    
    New Tokens
    
        Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
    
            EGL_PLATFORM_ANGLE_ANGLE                           0x3202
    
        Accepted as an attribute name in the <attrib_list> argument of
        eglGetPlatformDisplayEXT:
    
            EGL_PLATFORM_ANGLE_TYPE_ANGLE                      0x3203
            EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE         0x3204
            EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE         0x3205
            EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED            0x3451
    
        Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute:
    
            EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE              0x3206
    
        Accepted as values for the EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE attribute:
    
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE      0x320A
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE          0x345E
    
    Additions to the EGL Specification
    
        None.
    
    New Behavior
    
        To determine if the EGL implementation supports this extension, clients
        should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
    
        To obtain an EGLDisplay backed by a ANGLE display, call
        eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_ANGLE_ANGLE.
    
        The <native_display> parameter is of type EGLNativeDisplayType. If
        <native_display> is EGL_DEFAULT_DISPLAY a default display is returned.
        Multiple calls with the same <native_display> will return the same
        EGLDisplay handle. If <platform> is set to EGL_PLATFORM_ANGLE_ANGLE and
        the returned display is in an uninitialized state, its attributes are
        overwritten by those provided in the <attrib_list>, if any.
    
        If no <attrib_list> is specified, the value of
        EGL_PLATFORM_ANGLE_TYPE_ANGLE is implicitly set to
        EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE.
    
        If no <attrib_list> is specified, the values of
        EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and
        EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE are implicitly set to
        EGL_DONT_CARE.
    
        If no <attrib_list> is specified, the value of
        EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED is implicitly set to
        EGL_DONT_CARE.
    
        If no <attrib_list> is specified to eglGetPlatformDisplayEXT, the value of
        EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is implicitly set to
        EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE. Otherwise, the value of
        EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE should be:
          - EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE to request a hardware
            accelerated device.
          - EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE to request a no-op driver
            for testing. If unavailable, the implementation will fall back to
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE.
    
        If EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE is set to EGL_DONT_CARE and
        EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE is not set to EGL_DONT_CARE,
        an EGL_BAD_ATTRIBUTE error is generated and EGL_NO_DISPLAY is returned.
    
        If no display matching the requested <native_display> or of the type
        requested by the value of EGL_PLATFORM_ANGLE_TYPE_ANGLE is available,
        EGL_NO_DISPLAY is returned. No error condition is raised in this case.
    
        If EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED is specified, it
        controls enabling back-end validation layers. EGL_TRUE enables
        validation and EGL_FALSE disables it. If it is set to EGL_DONT_CARE, the
        default setting depends on the implementation. Any value other than these
        will result in an error.
    
    Issues
    
        1) Should the validation layers default to on, off, or no guarantee?
    
           Defaulting to off offers some consistency. However, it's customary for
           some applications like ANGLE to turn on debugging features by default
           in Debug builds.
    
           RESOLVED: default to implementation-dependent behaviour.
    
    Revision History
    
        Version 1, 2014-02-04 (Scott Graham)
          - Initial draft
        Version 2, 2014-06-05 (Geoff Lang)
          - Rename extension from ANGLE_platform_angle_d3d to ANGLE_platform_angle.
          - Add sub-extensions for specific platforms.
        Version 3, 2014-10-20 (Geoff Lang)
          - Add attributes to request specific feature level and context versions.
          - Moved descriptions of platforms to child extension specs.
        Version 4, 2017-07-19 (Jamie Madill)
          - Add a debug layers enabled attribute to control runtime validation.
        Version 5, 2017-12-28 (Jamie Madill)
          - Expose device type selection.