| Name |
| |
| EXT_bind_to_front |
| |
| Name Strings |
| |
| EGL_EXT_bind_to_front |
| |
| |
| Contributors |
| |
| Daniel Herring |
| |
| Contacts |
| |
| Daniel Herring, Core Avionics & Industrial Inc., daniel dot herring at ch1group dot com |
| |
| Status |
| |
| Complete |
| |
| Version |
| |
| Version 1.0, February 21, 2017 |
| |
| Number |
| |
| EGL Extension #121 |
| |
| Dependencies |
| |
| Requires EGL 1.2. |
| |
| Overview |
| |
| This extension allows for using double buffered Pbuffers for rendering to textures, by |
| allowing a new enumeration to be used in eglBindTexImage. EGL_FRONT_BUFFER_EXT is used |
| to denote reading the textures data from the front buffer of a double buffered Pbuffer. |
| |
| New Types |
| |
| None |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| EGL_FRONT_BUFFER_EXT 0x3464 |
| |
| Modify Section 3.6.1 of the EGL 1.2 Specification, paragraph 1 |
| Add EGL_FRONT_BUFFER_EXT to list of acceptable values for buffer attribute. |
| |
| Modify Section 3.6.2 of the EGL 1.2 Specification, paragraph 5 |
| Add EGL_FRONT_BUFFER_EXT to list of acceptable values for buffer attribute. |
| |
| Modify Section 3.5.2 of the EGL 1.2 Specification, paragraph 4 |
| Add EGL_RENDER_BUFFER to list of attributes which can be accepted in attrib_list. |
| |
| Add to Section 3.5.2 of the EGL 1.2 Specification |
| EGL_RENDER_BUFFER specifies the number of color buffers which should be useable by the |
| client API rendering to the Pbuffer. If its value is EGL_SINGLE_BUFFER, then there is |
| one color buffer the client APIs will render to directly. If its value is EGL_BACK_BUFFER, |
| then there are at least two color buffers the client API can render to. eglSwapBuffers |
| is used to switch which color buffer is currently being rendered to. By default, all |
| client APIs should render into the back buffer. The default value of EGL_RENDER_BUFFER |
| is EGL_SINGLE_BUFFER. |
| |
| Modify Section 2.2.2 of the EGL 1.2 Specification, paragraph 2 |
| Pbuffer surfaces have a back buffer but no associated window, so the back buffer |
| need not be copied. |
| Change to: |
| Pbuffer surfaces have no associated window, and include a back buffer, used by |
| default, for rendering to by the client API. Pbuffers may have a front buffer |
| used during render to texture operations to provide a read only texture which may |
| be used while the back buffer is being rendered to. |
| |
| Modify Section 3.5.6 |
| Querying EGL RENDER BUFFER returns the buffer which client API rendering |
| is requested to use. For a window surface, this is the same attribute value |
| specified when the surface was created. For a Pbuffer surface, it is always |
| EGL BACK BUFFER. For a pixmap surface, it is always EGL SINGLE BUFFER. To |
| determine the actual buffer being rendered to by a context, call eglQueryContext |
| (see section 3.7.4). |
| |
| Change to: |
| Querying EGL RENDER BUFFER returns the buffer which client API rendering |
| is requested to use. For a window surface or Pbuffer surface, this is the |
| same attribute value specified when the surface was created. For a pixmap |
| surface, it is always EGL SINGLE BUFFER. To determine the actual buffer being |
| rendered to by a context, call eglQueryContext (see section 3.7.4). |
| |
| Revision History |
| Version 1.0, 21/02/2017 - Initial Version |
| |
| Question: |
| What if the implementation already uses double buffering for single buffered PBuffers? |
| Such as when an implementation must insert a resolve to a texture instead of being |
| able to use the same memory. |
| Answer: |
| EGL_BACK_BUFFER would still refer to the resolved buffer. But in the case of the a |
| double buffer EGL_FRONT_BUFFER should be used to reference the resolved buffer instead |
| of EGL_BACK_BUFFER as in this case the user has specified 2 buffers and knows they want |
| the resolved buffer. |
| In the double buffer case where only a back draw and a front resolved buffer is used |
| the implementation may not support EGL_BACK_BUFFER and should generate an EGL_BAD_ |
| PARAMETER error when not supporting EGL_BACK_BUFFER texture binding. |