Name

    EXT_device_enumeration

Name Strings

    EGL_EXT_device_enumeration

Contributors

    James Jones
    Jamie Madill

Contacts

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

Status

    Complete.

Version

    Version 1 - March 24th, 2015

Number

    EGL Extension #88

Extension Type

    EGL client extension

Dependencies

    Written against the wording of EGL 1.5.

    Requires EGL 1.5 or an earlier verison of EGL with the
    EGL_EXT_client_extensions extension.

    Requires the EGL_EXT_device_query extension.

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.

    The original EGL_EXT_device_base extension combined the conceptually
    separate operations of querying the underlying device used by a
    given EGLDisplay and enumerating devices from scratch.  It was later
    identified that the former is useful even in EGL implementations
    that have no need or ability to allow enumerating all the devices
    available on a system.  To accommodate this, the extension was
    split in two.

New Types

    None

New Functions

    EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
                                  EGLDeviceEXT *devices,
                                  EGLint *num_devices);

Add the following at the beginning of section "3.2 Devices"

    "EGL devices can be enumerated before EGL is initialized.  Use:

        EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
                                      EGLDeviceEXT *devices,
                                      EGLint *num_devices);

    "to obtain a list of all supported devices in the system.  On
    success, EGL_TRUE is returned, and <num_devices> devices are
    stored in the array pointed to by <devices>.  <num_devices> will
    be less than or equal to <max_devices>.  If <devices> is NULL,
    then <max_devices> will be ignored, no devices will be returned in
    <devices>, and <num_devices> will be set to the number of
    supported devices in the system.  All implementations must support
    at least one device.

    "On failure, EGL_FALSE is returned.  An EGL_BAD_PARAMETER error is
    generated if <max_devices> is less than or equal to zero unless
    <devices> is NULL, or if <num_devices> is NULL."

Remove the following paragraph from section "3.4 Display Attributes"

    "Because the EGLDeviceEXT is a property of <dpy>, any use of an
    associated EGLDeviceEXT after <dpy> has been terminated gives
    undefined results. Querying an EGL_DEVICE_EXT from <dpy> after a
    call to eglTerminate() (and subsequent re-initialization) may
    return a different value."

Issues

    None

Revision History:

    #1  (March 24th, 2015) James Jones
        - Initial branch from EGL_EXT_device_base version #8
