Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 Name | 1 Name | 
| 2 | 2 | 
| 3 CHROMIUM_texture_mailbox | 3 CHROMIUM_texture_mailbox | 
| 4 | 4 | 
| 5 Name Strings | 5 Name Strings | 
| 6 | 6 | 
| 7 GL_CHROMIUM_texture_mailbox | 7 GL_CHROMIUM_texture_mailbox | 
| 8 | 8 | 
| 9 Version | 9 Version | 
| 10 | 10 | 
| 11 Last Modifed Date: April 25, 2012 | 11 Last Modifed Date: April 25, 2012 | 
| 12 | 12 | 
| 13 Dependencies | 13 Dependencies | 
| 14 | 14 | 
| 15 OpenGL ES 2.0 is required. | 15 OpenGL ES 2.0 is required. | 
| 16 | 16 | 
| 17 Overview | 17 Overview | 
| 18 | 18 | 
| 19 This extension defines a way of sharing texture image data between texture | 19 This extension defines a way of sharing texture image data between texture | 
| 20 objects in different contexts where the contexts would not normally share | 20 objects in different contexts where the contexts would not normally share | 
| 21 texture resources. Three new functions are exported. glGenMailboxCHROMIUM | 21 texture resources. Three new functions are exported. glGenMailboxCHROMIUM | 
| 22 generates a name that can be used to identify texture image data outside | 22 generates a name that can be used to identify texture image data outside | 
| 23 the scope of a context group. glProduceMailboxCHROMIUM moves texture image | 23 the scope of a context group. glProduceMailboxCHROMIUM associates a texture | 
| 24 data out of a texture object and into a mailbox. glConsumeMailboxCHROMIUM | 24 object with a global mailbox name. glConsumeMailboxCHROMIUM associates the | 
| 25 moves texture image data out of a mailbox and into a texture object. | 25 texture object referenced by a mailbox name to a texture name. | 
| 26 | 26 | 
| 27 New Procedures and Functions | 27 New Procedures and Functions | 
| 28 | 28 | 
| 29 void glGenMailboxCHROMIUM (GLbyte *mailbox) | 29 void glGenMailboxCHROMIUM (GLbyte *mailbox) | 
| 30 | 30 | 
| 31 Generates a unique name identifying a mailbox. The name is generated using | 31 Generates a unique name identifying a mailbox. The name is generated using | 
| 32 a cryptographic random number generator and is intended to be difficult to | 32 a cryptographic random number generator and is intended to be difficult to | 
| 33 guess. The scope of the name is implementation specific, for example it | 33 guess. The scope of the name is implementation specific, for example it | 
| 34 might not span multiple displays. | 34 might not span multiple displays. | 
| 35 | 35 | 
| 36 <mailbox> returns a GL_MAILBOX_SIZE_CHROMIUM byte sized name | 36 <mailbox> returns a GL_MAILBOX_SIZE_CHROMIUM byte sized name | 
| 37 | 37 | 
| 38 | 38 | 
| 39 void glProduceTextureCHROMIUM (GLenum target, const GLbyte *mailbox) | 39 void glProduceTextureCHROMIUM (GLenum target, const GLbyte *mailbox) | 
| 40 | 40 | 
| 41 Moves the image data and parameters of the currently bound texture object | 41 Associates the currently bound texture object with the mailbox name. A | 
| 42 into the mailbox. The texture object is redefined as though all its levels | 42 given texture object can be associated with several mailbox names. If a | 
| 43 had been resized to zero by zero and the texture object is therefore | 43 mailbox name was previously associated with a texture object, that | 
| 44 incomplete. The texture object parameters are undefined. The texture | 44 previous association is broken. The currently bound texture object is not | 
| 45 object is no longer immutable. If the mailbox previously contained image | 45 modified by the operation. | 
| 46 data, the old image data is deleted. | |
| 47 | 46 | 
| 48 If glProduceTextureCHROMIUM generates an error, the associated image data | 47 If glProduceTextureCHROMIUM generates an error, the mailbox name keeps its | 
| 49 and state is preserved in the texture object. | 48 current association, if any. | 
| 50 | 49 | 
| 51 The mailbox is emptied and the texture image data deleted if the context | 50 The mailbox does not keep a reference to the texture object. When the | 
| 52 is destroyed before being consumed. See glConsumeTextureCHROMIUM. | 51 texture object is destroyed (deleted from all context groups, and unbound | 
| 52 from all texture units and framebuffer attachments), the mailbox is | |
| 53 disassociated from the texture object. | |
| 53 | 54 | 
| 54 <target> uses the same parameters as TexImage2D. | 55 <target> uses the same parameters as TexImage2D. | 
| 55 | 56 | 
| 56 <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by | 57 <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by | 
| 57 glGenMailboxCHROMIUM. | 58 glGenMailboxCHROMIUM. | 
| 58 | 59 | 
| 59 INVALID_OPERATION is generated if <target> is not a valid target. | 60 INVALID_OPERATION is generated if <target> is not a valid target. | 
| 60 | 61 | 
| 61 INVALID_OPERATION is generated if the texture is attached to a framebuffer. | |
| 62 | |
| 63 INVALID_OPERATION is generated if the texture is immutable. | |
| 64 | |
| 65 INVALID_OPERATION is generated if <mailbox> is invalid. | 62 INVALID_OPERATION is generated if <mailbox> is invalid. | 
| 66 | 63 | 
| 67 | 64 | 
| 68 void glConsumeTextureCHROMIUM (GLenum target, const GLbyte *mailbox) | 65 void glConsumeTextureCHROMIUM (GLenum target, const GLbyte *mailbox) | 
| 69 | 66 | 
| 70 <target> uses the same parameters as TexImage2D. | 67 <target> uses the same parameters as TexImage2D. | 
| 71 | 68 | 
| 72 <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by | 69 <mailbox> identifies a GL_MAILBOX_SIZE_CHROMIUM byte sized name returned by | 
| 73 glGenMailboxCHROMIUM. | 70 glGenMailboxCHROMIUM. | 
| 71 | |
| 72 Deletes the currently bound texture object, and redefines its texture name | |
| 73 to point to the texture object associated with the mailbox name. All the | |
| 74 contexts that have consumed the texture object, as well as produced it share | |
| 75 the texture object, as if the contexts were part of the share group. The | |
| 76 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.
 
 | |
| 77 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.
 
 | |
| 78 objects as well as texture unit bindings. See Appendix C of the OpenGL ES | |
| 79 2.0 specification for details relative to visibility in one context of | |
| 80 changes to the shared texture object in another context. | |
| 74 | 81 | 
| 75 Redefines the image data and parameters of the currently bound texture | 82 If glConsumeTextureCHROMIUM generates an error, the currently bound texture | 
| 76 object with the image data and parameters in the mailbox and empties the | 83 object is preserved. | 
| 77 mailbox. All levels are redefined, and the immutable state is set according | |
| 78 to the contents of the mailbox. | |
| 79 | |
| 80 If glConsumeTextureCHROMIUM generates an error, the associated image data | |
| 81 is preserved in the texture object. | |
| 82 | 84 | 
| 83 INVALID_OPERATION is generated if <target> is not a valid target. | 85 INVALID_OPERATION is generated if <target> is not a valid target. | 
| 84 | 86 | 
| 85 INVALID_OPERATION is generated if <mailbox> is empty. | |
| 86 | |
| 87 INVALID_OPERATION is generated if <mailbox> is not in the scope of the | |
| 88 context. | |
| 89 | |
| 90 INVALID_OPERATION is generated if <mailbox> is invalid. | 87 INVALID_OPERATION is generated if <mailbox> is invalid. | 
| 91 | 88 | 
| 92 INVALID_OPERATION is generated if the texture is attached to a framebuffer. | 89 INVALID_OPERATION is generated if <mailbox> is not associated with a texture | 
| 90 object. | |
| 93 | 91 | 
| 94 INVALID_OPERATION is generated if the texture is immutable. | 92 INVALID_OPERATION is generated if the texture object associated with | 
| 93 <mailbox> has a different target than <target>. | |
| 95 | 94 | 
| 96 INVALID_OPERATION is generated if the image data is invalid in the current | 95 INVALID_OPERATION is generated if the currently bound texture is attached to | 
| 97 context. | 96 a framebuffer. | 
| 97 | |
| 98 INVALID_OPERATION is generated if the currently bound texture was previously | |
| 99 deleted (for example in another context), hence doesn't have a name. | |
| 98 | 100 | 
| 99 New Tokens | 101 New Tokens | 
| 100 | 102 | 
| 101 The size of a mailbox name in bytes. | 103 The size of a mailbox name in bytes. | 
| 102 | 104 | 
| 103 GL_MAILBOX_SIZE_CHROMIUM 64 | 105 GL_MAILBOX_SIZE_CHROMIUM 64 | 
| 104 | 106 | 
| 105 Errors | 107 Errors | 
| 106 | 108 | 
| 107 None. | 109 None. | 
| 108 | 110 | 
| 109 New Tokens | 111 New Tokens | 
| 110 | 112 | 
| 111 None. | 113 None. | 
| 112 | 114 | 
| 113 New State | 115 New State | 
| 114 | 116 | 
| 115 None. | 117 None. | 
| 116 | 118 | 
| 117 Revision History | 119 Revision History | 
| 118 | 120 | 
| 119 4/25/2011 Documented the extension | 121 4/25/2011 Documented the extension | 
| 122 5/23/2013 Major revision in Produce/Consume semantics, introducing | |
| 123 sharing. | |
| OLD | NEW |