| Name |
| |
| EXT_device_query |
| |
| Name Strings |
| |
| EGL_EXT_device_query |
| |
| Contributors |
| |
| James Jones, NVIDIA (jajones 'at' nvidia.com) |
| Jamie Madill, Google (jmadill 'at' google.com) |
| |
| Contacts |
| |
| Jamie Madill, Google (jmadill 'at' google.com) |
| |
| Status |
| |
| Draft |
| |
| Version |
| |
| Version 1 - Mar 25rd, 2015 |
| |
| Number |
| |
| EGL Extension #XXX |
| |
| 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. |
| |
| 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 access native GPU or device objects directly |
| rather than calling EGL or GL entry points. |
| |
| This extension defines the method for an application to query |
| native device objects from an EGL Display. |
| |
| New Types |
| |
| This is the type of a handle that represents an EGLDeviceEXT |
| object. |
| |
| typedef void* EGLDeviceEXT; |
| |
| If EGL 1.5 is not supported, the following type is added, as |
| defined in the EGL 1.5 specification: |
| |
| typedef intptr_t EGLAttrib; |
| |
| New Functions |
| |
| EGLBoolean eglQueryDeviceAttribEXT(EGLDeviceEXT device, |
| EGLint attribute, |
| EGLAttrib *value); |
| |
| const char *eglQueryDeviceStringEXT(EGLDeviceEXT device, |
| EGLint name); |
| |
| EGLBoolean eglQueryDisplayAttribEXT(EGLDisplay dpy, |
| EGLint attribute, |
| EGLAttrib *value); |
| |
| New Tokens |
| |
| Functions with a return type of EGLDeviceEXT will return this |
| value on failure: |
| |
| EGL_NO_DEVICE_EXT ((EGLDeviceEXT)0) |
| |
| This error value will be generated by functions that take an |
| EGLDeviceEXT object as a parameter: |
| |
| EGL_BAD_DEVICE_EXT 0x322B |
| |
| Accepted by the <attribute> parameter of |
| eglQueryDisplayAttribEXT: |
| |
| EGL_DEVICE_EXT 0x322C |
| |
| Add a new section "2.1.2 Devices" after "2.1.1 Scalar Types" |
| |
| All EGL operations occur on an EGLDeviceEXT. However, devices |
| themselves expose no functionality. They are simple abstract |
| objects that exist only for the sake of enumeration and |
| defining a namespace. |
| |
| Modify the last sentence of section "2.1.3" Displays" to read: |
| |
| Besides devices, objects are always specified by the combination |
| of an EGLDisplay parameter with a parameter representing the |
| handle of the object. |
| |
| Add a new extension type to the list in section "2.8 Extensions" |
| |
| Device Extensions |
| A *device extension* adds functionality to an individual |
| EGLDeviceEXT. Different instances of EGLDeviceEXT may support |
| different sets of device extensions |
| |
| Add a new error to section "3.1 Errors" |
| |
| EGL_BAD_DEVICE_EXT |
| An EGLDeviceEXT argument does not refer to a valid |
| EGLDeviceEXT. Any command taking an EGLDeviceEXT parameter |
| may generate this error. |
| |
| Add a section "3.2 Devices" after "3.1 Errors" |
| |
| To query the properties of a device, use: |
| |
| EGLBoolean eglQueryDeviceAttribEXT(EGLDeviceEXT device, |
| EGLint attribute, |
| EGLAttrib *value); |
| |
| On success, EGL_TRUE is returned and the requested attribute value |
| is returned in <value>. Currently there are no valid values of |
| <attribute> defined. |
| |
| On failure, EGL_FALSE is returned. An EGL_BAD_ATTRIBUTE error is |
| generated if <attribute> is not a valid attribute. An |
| EGL_BAD_DEVICE_EXT error is generated if <device> is not a valid |
| EGLDeviceEXT. |
| |
| const char *eglQueryDeviceStringEXT(EGLDeviceEXT device, |
| EGLint name); |
| |
| returns a pointer to a static, zero-terminated string describing |
| some aspect of the specified EGLDeviceEXT. <name> must be |
| EGL_EXTENSIONS. |
| |
| The EGL_EXTENSIONS string describes which device extensions are |
| supported by <device>. The string is of the same format specified |
| for display and client extension strings in section 3.4. Note that |
| device extensions are properties of the device, and are distinct |
| from other extension strings. |
| |
| On failure, NULL is returned. An EGL_BAD_DEVICE_EXT error is |
| generated if <device> is not a valid EGLDeviceEXT. An |
| EGL_BAD_PARAMETER error is generated if <name> is not one of the |
| values described above. |
| |
| Add a section "3.4 Display Attributes" after "3.3 EGL Versioning" |
| |
| To query attributes of an initialized display, use: |
| |
| EGLBoolean eglQueryDisplayAttribEXT(EGLDisplay dpy, |
| EGLint name, |
| EGLAttrib *value); |
| |
| On success, EGL_TRUE is returned. If <name> is EGL_DEVICE_EXT, |
| the EGLDeviceEXT associated with <dpy> is returned in <value>. |
| All displays have an associated EGLDeviceEXT, regardless of how |
| they were created. A successful query of EGL_DEVICE_EXT will |
| never return EGL_NO_DEVICE_EXT. |
| |
| On failure, EGL_FALSE is returned. An EGL_NOT_INITIALIZED error |
| is generated if EGL is not initialized for <dpy>. An |
| EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid |
| value. |
| |
| 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 (Mar 25rd, 2015) Jamie Madill |
| - Initial Draft based on EGL_EXT_device_base |