Name

    EXT_explicit_device

Name Strings

    EGL_EXT_explicit_device

Contributors

    Adam Jackson
    Nicolai Haehnle
    Daniel Stone
    Kyle Brenneman

Contacts

    Adam Jackson <ajax@redhat.com>

Status

    Complete

Version

    Version 3, 2022-04-21

Number

    EGL Extension #148

Extension Type

    EGL client extension

Dependencies

    Requires EGL_EXT_platform_base and EGL_EXT_device_enumeration.

    EGL_EXT_platform_device trivially interacts with this extension.

    This extension is written against the EGL 1.5 Specification.

Overview

    A system may support rendering with multiple devices for the same
    windowing system. In that case, an EGL implementation must select a
    default device based on the native display.

    This extension allows an application to explicitly request a device
    to use for rendering instead of the implementation's default.

    This differs from EGL_EXT_platform_device in that
    EGL_EXT_platform_device uses an EGLDeviceEXT instead of a native
    display. Thus, EGL_EXT_platform_device allows offscreen rendering
    to a pbuffer or FBO, but it does not require or use a windowing
    system, and thus does not allow pixmap or window surfaces.

    Using EGL_EXT_explicit_device with EGL_MESA_platform_surfaceless is
    functionally identical to EGL_EXT_platform_device.

New Types

    None

New Procedures and Functions

    None

New Tokens

    None

Additions to the EGL Specification

    None

New Behavior

    If EGL_DEVICE_EXT is specified as an attribute for
    eglGetPlatformDisplay, the value of the attribute is interpreted as
    an EGLDeviceEXT as returned by eglQueryDevicesEXT.

    If the EGL_DEVICE_EXT attribute is EGL_NO_DEVICE_EXT, then the
    implementation will select a device automatically, as it would
    normally.

    If the EGL_DEVICE_EXT attribute is not EGL_NO_DEVICE_EXT, then the
    implementation will use the specified device for rendering. If the
    EGL_DEVICE_EXT attribute does not name a valid EGLDeviceEXT, then
    EGL_BAD_DEVICE_EXT is generated.

    An implementation might not support all devices for all native
    displays. If the device and native display are not compatible for
    any reason, then EGL_BAD_MATCH is generated.

    If EGL_EXT_platform_device is supported, passing EGL_DEVICE_EXT as an
    attribute to eglGetPlatformDisplay(EGL_PLATFORM_DEVICE_EXT) generates
    EGL_BAD_ATTRIBUTE.

Issues

    1. Should we have a separate function to query whether a device is
       compatible with a native display?

       RESOLVED: No. A separate query might require duplicating a lot of
       the work that eglGetPlatformDisplay and eglInitialize would do,
       which could be very slow.

    2. If an implementation can't support a device with a particular
       native display, then should it fail in eglGetPlatformDisplay, or
       can it defer any compatibility checks until eglInitialize?

       RESOLVED: eglGetPlatformDisplay must check for compatibility and
       should fail if the device and native display are not supported.

       Without a separate function to check for compatibility, the only
       way for an application to know which devices can work with a
       native display is to try to use each device and see if it gets an
       error. If the error is in eglInitialize, then an application
       would have to create (and leak) a bunch of EGLDisplay handles
       that it never intends to use.

Revision History

    Version 3, 2022-04-21 (Kyle Brenneman)
        - Require eglGetPlatformDisplay (instead of eglInitialize) check
          whether the device is supported with the native display.

    Version 2, 2017-08-08 (Adam Jackson)
        - Renamed from MESA_platform_device to EXT_explicit_device
        - Make it an error to use this new attribute in conjunction with
          EGL_EXT_platform_device

    Version 1, 2017-07-14 (Adam Jackson)
        - Initial version
