Name

    ANGLE_x11_visual

Name Strings

    EGL_ANGLE_x11_visual

Contributors

    Corentin Wallez, Google
    Shannon Woods, Google
    Jamie Madill, Google
    Geoff Lang, Google

Contacts

    Corentin Wallez, Google (cwallez 'at' chromium 'dot' org)

Status

    Draft

Version

    Version 1, 2015-11-13

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.

    Written based on the wording of the EGL 1.5 Specification
    (August 7 2014).

Overview

    This extension allows passing the X11 visual ID used by the native
    EGL surface types at display creation time. This will restrict
    EGLSurfaces to be created from native types with this visual ID,
    which may allow the created display to be more compatible and
    performant.

New Types

    None

New Procedures and Functions

    None

New Tokens

    Accepted as an attribute name in the <attrib_list> argument of
    eglGetPlatformDisplayEXT:

        EGL_X11_VISUAL_ID_ANGLE 0x33A3

Additions to the EGL Specification

    Modify section 3.5.1 (Creating On-Screen Rendering Surfaces), p. 34

    Append the following to the errors of CreateWindowSurface:

    "If an X11 visual was specified at display creation time using
    EGL_ANGLE_X11_VISUAL_ID that is not equal to the ID of the
    native_window's visual, an EGL_BAD_MATCH error is generated and
    EGL_NO_SURFACE is returned."

New Behavior

    To request a display created with a X11 visual ID, the value of
    EGL_ANGLE_X11_VISUAL_ID should be set to a valid X11 visual ID. If
    present, this ID will be used during display creation to make a
    display that is more compatible and potentially more performant when
    used with EGLsurfaces created from native types with this ID. If the
    visual ID passed isn't a valid visual ID, eglGetPlatformDisplay will
    return EGL_NO_DISPLAY and generate an EGL_NOT_INITIALIZED error.

Issues

    1) When the hint is present, should EGLsurface creation functions
       only accept native types with the hint's visual ID?

       RESOLVED: Yes, generate an error when the visual of the native
       surface doesn't match. This will avoid having hidden performance
       or compatibility losses when using this extension.

Revision History

    Version 1, 2015-11-13 (Corentin Wallez)
      - Initial draft

