Chromium Code Reviews| Index: gpu/GLES2/extensions/CHROMIUM/CHROMIUM_texture_mailbox.txt |
| diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_texture_mailbox.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_texture_mailbox.txt |
| index 277b60d40555f40ed89adc5fbf82576d5aa15998..92f56d8f5b63d20c2ee738ed4d29bcf641369683 100644 |
| --- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_texture_mailbox.txt |
| +++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_texture_mailbox.txt |
| @@ -20,9 +20,9 @@ Overview |
| objects in different contexts where the contexts would not normally share |
| texture resources. Three 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 moves texture image |
| - data out of a texture object and into a mailbox. glConsumeMailboxCHROMIUM |
| - moves texture image data out of a mailbox and into a texture object. |
| + the scope of a context group. glProduceMailboxCHROMIUM associates a texture |
| + object with a global mailbox name. glConsumeMailboxCHROMIUM associates the |
| + texture object referenced by a mailbox name to a texture name. |
| New Procedures and Functions |
| @@ -38,18 +38,19 @@ New Procedures and Functions |
| void glProduceTextureCHROMIUM (GLenum target, const GLbyte *mailbox) |
| - Moves the image data and parameters of the currently bound texture object |
| - into the mailbox. The texture object is redefined as though all its levels |
| - had been resized to zero by zero and the texture object is therefore |
| - incomplete. The texture object parameters are undefined. The texture |
| - object is no longer immutable. If the mailbox previously contained image |
| - data, the old image data is deleted. |
| + 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 associated image data |
| - and state is preserved in the texture object. |
| + If glProduceTextureCHROMIUM generates an error, the mailbox name keeps its |
| + current association, if any. |
| - The mailbox is emptied and the texture image data deleted if the context |
| - is destroyed before being consumed. See glConsumeTextureCHROMIUM. |
| + 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. |
| @@ -58,10 +59,6 @@ New Procedures and Functions |
| INVALID_OPERATION is generated if <target> is not a valid target. |
| - INVALID_OPERATION is generated if the texture is attached to a framebuffer. |
| - |
| - INVALID_OPERATION is generated if the texture is immutable. |
| - |
| INVALID_OPERATION is generated if <mailbox> is invalid. |
| @@ -71,30 +68,35 @@ New Procedures and Functions |
| <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by |
| glGenMailboxCHROMIUM. |
| - |
| - Redefines the image data and parameters of the currently bound texture |
| - object with the image data and parameters in the mailbox and empties the |
| - mailbox. All levels are redefined, and the immutable state is set according |
| - to the contents of the mailbox. |
| - |
| - If glConsumeTextureCHROMIUM generates an error, the associated image data |
| - is preserved in the texture object. |
| + |
| + 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 deleted the texture name |
|
apatrick_chromium
2013/05/24 20:51:58
deleted -> have deleted
piman
2013/05/24 23:03:27
Done.
|
| + associated with the texture object, and detached from all framebuffer |
|
apatrick_chromium
2013/05/24 20:51:58
detached -> detached it
piman
2013/05/24 23:03:27
Done.
|
| + 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 empty. |
| - |
| - INVALID_OPERATION is generated if <mailbox> is not in the scope of the |
| - context. |
| - |
| INVALID_OPERATION is generated if <mailbox> is invalid. |
| - INVALID_OPERATION is generated if the texture is attached to a framebuffer. |
| + 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 texture is immutable. |
| + INVALID_OPERATION is generated if the currently bound texture is attached to |
| + a framebuffer. |
| - INVALID_OPERATION is generated if the image data is invalid in the current |
| - context. |
| + INVALID_OPERATION is generated if the currently bound texture was previously |
| + deleted (for example in another context), hence doesn't have a name. |
| New Tokens |
| @@ -117,3 +119,5 @@ New State |
| Revision History |
| 4/25/2011 Documented the extension |
| + 5/23/2013 Major revision in Produce/Consume semantics, introducing |
| + sharing. |