1Name 2 3 EGL_ANGLE_feature_control 4 5Name Strings 6 7 EGL_ANGLE_feature_control 8 9Contributors 10 11 Jonah Ryan-Davis (jonahr 'at' google.com) 12 13Contact 14 15 Jonah Ryan-Davis (jonahr 'at' google.com) 16 17Status 18 19 Draft 20 21Version 22 23 Version 1, May 23, 2019 24 25Number 26 27 EGL Extension #XXX 28 29Extension Type 30 31 EGL client extension 32 33Dependencies 34 35 This extension is written against the wording of the EGL 1.5 36 Specification. 37 38 EGL_EXT_device_query affects the definition of this extension. 39 40Overview 41 42 This extension adds two methods to query arrays holding 43 information about the available features for a given device. 44 One method is used to query the total count of available 45 features. Another method is used to query a string property 46 of an individual feature given the feature's index. 47 48IP Status 49 50 No known claims. 51 52New Types 53 54 None. 55 56New Procedures and Functions 57 58 const char *eglQueryStringiANGLE( 59 EGLDisplay dpy, 60 EGLint name, 61 EGLint index); 62 63 EGLBoolean eglQueryDisplayAttribANGLE( 64 EGLDisplay dpy, 65 EGLint attribute, 66 EGLAttrib *value); 67 68New Tokens 69 70 Accepted as a queried <name> in eglQueryStringiANGLE: 71 72 EGL_FEATURE_NAME_ANGLE 0x3460 73 EGL_FEATURE_CATEGORY_ANGLE 0x3461 74 EGL_FEATURE_DESCRIPTION_ANGLE 0x3462 75 EGL_FEATURE_BUG_ANGLE 0x3463 76 EGL_FEATURE_STATUS_ANGLE 0x3464 77 EGL_FEATURE_CONDITION_ANGLE 0x3468 78 79 Accepted as a queried <attribute> in eglQueryDisplayAttribANGLE 80 81 EGL_FEATURE_COUNT_ANGLE 0x3465 82 83 Accepted as an attribute name in the <attrib_list> argument of 84 eglGetPlatformDisplay 85 86 EGL_FEATURE_OVERRIDES_ENABLED_ANGLE 0x3466 87 EGL_FEATURE_OVERRIDES_DISABLED_ANGLE 0x3467 88 EGL_FEATURE_ALL_DISABLED_ANGLE 0x3469 89 90New Behavior 91 92 EGLDisplay eglGetPlatformDisplay(EGLenum platform, void 93 *native_display, const EGLAttrib *attrib_list); 94 95 The attribute following EGL_FEATURE_OVERRIDES_ENABLED_ANGLE or 96 EGL_FEATURE_OVERRIDES_DISABLED_ANGLE should be of type char**, 97 which should contain a null-terminated array of C strings naming 98 the features to be enabled or disabled upon display creation. 99 Any features unspecified in one of these arrays will be 100 initialized with an internal heuristic. 101 The attribute following EGL_FEATURE_ALL_DISABLED_ANGLE should be 102 either EGL_TRUE to disable all features that are not overridden, 103 or EGL_FALSE to let ANGLE determine which features to enable. 104 105Add the following to the end of section 3.3 "EGL Queries": 106 107 const char *eglQueryStringiANGLE(EGLDisplay dpy, 108 EGLint name, EGLint index); 109 110 eGLQueryStringiANGLE returns a pointer to a static, null- 111 terminated string describing some aspect of the EGL 112 implementation running on the specified display, from an array of 113 strings. name may be one of EGL_FEATURE_NAME_ANGLE, 114 EGL_FEATURE_CATEGORY_ANGLE, EGL_FEATURE_DESCRIPTION_ANGLE, 115 EGL_FEATURE_BUG_ANGLE, or EGL_FEATURE_STATUS_ANGLE. Index 116 must be a valid index to access into the array of strings. 117 The EGL_FEATURE_NAME_ANGLE array contains strings that 118 describe the name of each feature available in the display. 119 The EGL_FEATURE_CATEGORY_ANGLE array contains strings 120 with corresponding indices to the array of names. Each string 121 describes the category of the feature at the specified index. 122 The EGL_FEATURE_DESCRIPTION_ANGLE array contains strings 123 with corresponding indices to the array of names. Each string 124 describes the feature at the specified index. 125 The EGL_FEATURE_BUG_ANGLE array contains strings 126 with corresponding indices to the array of names. Each string 127 describes the bug related to the feature at the specified 128 index. 129 The EGL_FEATURE_STATUS_ANGLE array contains strings 130 with corresponding indices to the array of names. Each string has 131 the value "enabled" if the feature is currently enabled, or 132 "disabled" if the feature is currently disabled. 133 The EGL_FEATURE_CONDITION_ANGLE array contains strings that 134 describe to the condition that sets the corresponding value in 135 the EGL_FEATURE_STATUS_ANGLE array. 136 137 Errors 138 139 On failure, NULL is returned. 140 An EGL_BAD_DISPLAY error is generated if dpy is not a valid 141 display. 142 An EGL_BAD_PARAMETER error is generated if name is not one of the 143 values described above. 144 An EGL_BAD_PARAMETER error is generated if index is not within 145 the valid range of indices for the array. 146 147Add a section "3.4 Display Attributes" after "3.3 EGL Versioning" 148 149 To query attributes of an initialized display, use: 150 151 EGLBoolean eglQueryDisplayAttribANGLE(EGLDisplay dpy, 152 EGLint attribute, 153 EGLAttrib *value); 154 155 On success, EGL_TRUE is returned. 156 If <attribute> is EGL_FEATURE_COUNT_ANGLE, the total count of 157 available features is returned in <value>. 158 159 On failure, EGL_FALSE is returned. 160 An EGL_BAD_DISPLAY error is generated if dpy is not a valid 161 display. 162 An EGL_BAD_ATTRIBUTE error is generated if <attribute> is not a 163 valid value. 164 165Issues 166 167 None 168 169Revision History 170 171 Version 1, May 23, 2019 (Jonah Ryan-Davis) 172 - Initial Draft 173