| Name |
| |
| CHROMIUM_texture_mailbox |
| |
| Name Strings |
| |
| GL_CHROMIUM_texture_mailbox |
| |
| Version |
| |
| Last Modifed Date: June 2, 2014 |
| |
| Dependencies |
| |
| OpenGL ES 2.0 is required. |
| |
| Overview |
| |
| This extension defines a way of sharing texture image data between texture |
| objects in different contexts where the contexts would not normally share |
| texture resources. Five new functions are exported. glGenMailboxCHROMIUM |
| generates a name that can be used to identify texture image data outside |
| the scope of a context group. glProduceMailboxCHROMIUM and |
| glProduceTextureDirectCHROMIUM associate a texture object with a global |
| mailbox name. glConsumeMailboxCHROMIUM and glCreateAndConsumeTextureCHROMIUM |
| associate the texture object referenced by a mailbox name to a texture name. |
| |
| New Procedures and Functions |
| |
| void glGenMailboxCHROMIUM (GLbyte *mailbox) |
| |
| Generates a unique name identifying a mailbox. The name is generated using |
| a cryptographic random number generator and is intended to be difficult to |
| guess. The scope of the name is implementation specific, for example it |
| might not span multiple displays. |
| |
| <mailbox> returns a GL_MAILBOX_SIZE_CHROMIUM byte sized name |
| |
| |
| void glProduceTextureCHROMIUM (GLenum target, const GLbyte *mailbox) |
| |
| Associates the currently bound texture object with the mailbox name. A |
| given texture object can be associated with several mailbox names. If a |
| mailbox name was previously associated with a texture object, that |
| previous association is broken. The currently bound texture object is not |
| modified by the operation. |
| |
| If glProduceTextureCHROMIUM generates an error, the mailbox name keeps its |
| current association, if any. |
| |
| The mailbox does not keep a reference to the texture object. When the |
| texture object is destroyed (deleted from all context groups, and unbound |
| from all texture units and framebuffer attachments), the mailbox is |
| disassociated from the texture object. |
| |
| <target> uses the same parameters as TexImage2D. |
| |
| <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by |
| glGenMailboxCHROMIUM. |
| |
| INVALID_OPERATION is generated if <target> is not a valid target. |
| |
| INVALID_OPERATION is generated if <mailbox> is invalid. |
| |
| |
| void glProduceTextureDirectCHROMIUM (GLuint texture, GLenum target, |
| const GLbyte *mailbox) |
| |
| Associates the specified texture object with the mailbox name. Performs |
| identically to glProduceTextureCHROMIUM except that the texture specified by |
| <texture> is used instead of the currently bound texture. This operation |
| does not change the texture bindings or alter the bound texture in any way. |
| |
| <texture> Specifies the name of a texture. |
| |
| |
| void glConsumeTextureCHROMIUM (GLenum target, const GLbyte *mailbox) |
| |
| <target> uses the same parameters as TexImage2D. |
| |
| <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by |
| glGenMailboxCHROMIUM. |
| |
| Deletes the currently bound texture object, and redefines its texture name |
| to point to the texture object associated with the mailbox name. All the |
| contexts that have consumed the texture object, as well as produced it share |
| the texture object, as if the contexts were part of the share group. The |
| texture object is deleted once all contexts have deleted the texture name |
| associated with the texture object, and detached it from all framebuffer |
| objects as well as texture unit bindings. See Appendix C of the OpenGL ES |
| 2.0 specification for details relative to visibility in one context of |
| changes to the shared texture object in another context. |
| |
| If glConsumeTextureCHROMIUM generates an error, the currently bound texture |
| object is preserved. |
| |
| INVALID_OPERATION is generated if <target> is not a valid target. |
| |
| INVALID_OPERATION is generated if <mailbox> is invalid. |
| |
| INVALID_OPERATION is generated if <mailbox> is not associated with a texture |
| object. |
| |
| INVALID_OPERATION is generated if the texture object associated with |
| <mailbox> has a different target than <target>. |
| |
| INVALID_OPERATION is generated if the currently bound texture was previously |
| deleted (for example in another context), hence doesn't have a name. |
| |
| |
| GLuint glCreateAndConsumeTextureCHROMIUM (GLenum target, |
| const GLbyte *mailbox) |
| |
| Returns a new texture name associated with the given target pointing to the |
| texture object associated with the mailbox name. Does not alter the texture |
| bindings or alter the currently bound texture in any way. Otherwise performs |
| identically to glConsumeTextureCHROMIUM. |
| |
| New Tokens |
| |
| The size of a mailbox name in bytes. |
| |
| GL_MAILBOX_SIZE_CHROMIUM 64 |
| |
| Errors |
| |
| None. |
| |
| New Tokens |
| |
| None. |
| |
| New State |
| |
| None. |
| |
| Revision History |
| |
| 4/25/2011 Documented the extension |
| 5/23/2013 Major revision in Produce/Consume semantics, introducing |
| sharing. |
| 6/02/2014 Added glProduceTextureDirectCHROMIUM and |
| glCreateAndConsumeTextureCHROMIUM definitions. |