Name

    ANGLE_display_power_preference

Name Strings

    EGL_ANGLE_display_power_preference

Contributors

    Kenneth Russell
    Jonah Ryan-Davis

Contacts

    Kenneth Russell, Google Inc. (kbr 'at' google.com)
    Jonah Ryan-Davis, Google Inc. (jonahr 'at' google.com)

Status

    Draft

Version

    Version 1, Oct 20, 2021

Number

    EGL Extension #??

Extension Type

    EGL client extension

Dependencies

    This extension is written against the wording of the EGL 1.4
    Specification.

Overview

    This extension allows selection of the high- or low-power GPU on
    dual-GPU systems, specifically on macOS.

New Types

    None

New Tokens

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

        EGL_POWER_PREFERENCE_ANGLE  0x3482

    Accepted as an attribute value in the <attrib_list> argument to
    eglGetPlatformDisplayEXT:

        EGL_LOW_POWER_ANGLE         0x0001
        EGL_HIGH_POWER_ANGLE        0x0002

Additions to the EGL 1.4 Specification

    Add the following to section 3.7.1 "Creating Rendering Contexts":

    EGL_POWER_PREFERENCE_ANGLE indicates whether the display should be
    created on the integrated (low-power) or discrete (high-power) GPU
    on dual-GPU systems. EGL_POWER_PREFERENCE_ANGLE is only a legal
    display creation attribute when the EGL_ANGLE_power_preference
    extension is advertised. The valid values for this attribute are
    EGL_LOW_POWER_ANGLE and EGL_HIGH_POWER_ANGLE. If this extension is
    advertised and this display creation attribute is not specified,
    the default value is EGL_LOW_POWER_ANGLE.

Issues

    None yet.

Revision History

    Rev.    Date         Author     Changes
    ----  -------------  ---------  ----------------------------------------
      1   Oct 20, 2021   jonahr     Extension based off
                                      EGL_ANGLE_power_preference
