Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(551)

Side by Side Diff: gpu/GLES2/extensions/CHROMIUM/CHROMIUM_texture_mailbox.txt

Issue 14188053: gpu: Change Produce/ConsumeTexture to allow texture sharing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698