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

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

Issue 2776753002: Update the passthrough command decoder to use the new CHROMIUM_copy_texture. (Closed)
Patch Set: Re-roll ANGLE Created 3 years, 8 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
« no previous file with comments | « DEPS ('k') | gpu/command_buffer/client/gles2_c_lib_autogen.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 Name 1 Name
2 2
3 CHROMIUM_copy_texture 3 CHROMIUM_copy_texture
4 4
5 Name Strings 5 Name Strings
6 6
7 GL_CHROMIUM_copy_texture 7 GL_CHROMIUM_copy_texture
8 8
9 Version 9 Version
10 10
11 Last Modifed Date: July 16, 2014 11 Last Modifed Date: March 24, 2017
12 12
13 Dependencies 13 Dependencies
14 14
15 OpenGL ES 2.0 or OpenGL ES 3.0 is required. 15 OpenGL ES 2.0 or OpenGL ES 3.0 is required.
16 16
17 EXT_texture_format_BGRA8888 affects the definition of this extension. 17 EXT_texture_format_BGRA8888 affects the definition of this extension.
18 ARB_texture_rg affects the definition of this extension. 18 ARB_texture_rg affects the definition of this extension.
19 CHROMIUM_ycbcr_422_image affects the definition of this extension. 19 CHROMIUM_ycbcr_422_image affects the definition of this extension.
20 20
21 Overview 21 Overview
22 22
23 This extension expands on the functionality provided by the 23 This extension expands on the functionality provided by the
24 glCopyTexImage2D command. A new function is exported, 24 glCopyTexImage2D command. A new function is exported,
25 glCopyTextureCHROMIUM, that performs the same copy operation as 25 glCopyTextureCHROMIUM, that performs the same copy operation as
26 glCopyTexImage2D. 26 glCopyTexImage2D.
27 27
28 The extension also supports copying BGRA textures and copying 28 The extension also supports copying BGRA textures and copying
29 EXTERNAL_OES texture to BGRA texture, which is not explicitly 29 EXTERNAL_OES texture to BGRA texture, which is not explicitly
30 granted by EXT_texture_format_BGRA8888. 30 granted by EXT_texture_format_BGRA8888.
31 31
32 New Procedures and Functions 32 New Procedures and Functions
33 33
34 void CopyTextureCHROMIUM(uint sourceId,
35 int sourceLevel,
36 enum destTarget,
37 uint destId,
38 int destLevel,
39 int internalFormat,
40 enum destType,
41 boolean unpackFlipY,
42 boolean unpackPremultiplyAlpha,
43 boolean unpackUnmultiplyAlpha)
44
45
46 void CopySubTextureCHROMIUM(uint sourceId,
47 int sourceLevel,
48 enum destTarget,
49 uint destId,
50 int destLevel,
51 int xoffset,
52 int yoffset,
53 int x,
54 int y,
55 sizei width,
56 sizei height,
57 boolean unpackFlipY,
58 boolean unpackPremultiplyAlpha,
59 boolean unpackUnmultiplyAlpha)
60
61 Additions to the OpenGL ES 2.0 Specification
62
34 The command 63 The command
35 64
36 void glCopyTextureCHROMIUM (GLenum source_id, 65 CopyTextureCHROMIUM
37 GLint source_level,
38 GLenum dest_target,
39 GLenum dest_id,
40 GLint dest_level,
41 GLint internal_format, GLenum dest_type,
42 GLboolean unpack_flip_y,
43 GLboolean unpack_premultiply_alpha,
44 GLboolean unpack_unmultiply_alpha)
45 66
46 Copies the contents of <source_id> texture to <dest_id> texture. 67 Copies the contents of <sourceLevel> level of <sourceId> texture to
68 <destLevel> level and <destTarget> target of <destId> texture.
47 69
48 <source_level> specifies the level of the source texture which is copied 70 <destTarget> must be TEXTURE_2D,
49 from. 71 TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X,
50 <dest_level> specifies the level of the destination texture which is copied 72 TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y,
51 to. 73 TEXTURE_CUBE_MAP_POSITIVE_Z, TEXTURE_CUBE_MAP_NEGATIVE_Z,
52 74 TEXTURE_RECTANGLE_ARB.
53 <dest_target> specifies the target of destination texture. Must be
54 GL_TEXTURE_2D,
55 GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
56 GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
57 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
58 GL_TEXTURE_RECTANGLE_ARB.
59 75
60 The internal format of the destination texture is converted to that 76 The internal format of the destination texture is converted to that
61 specified by <internal_format>. Must be one of the following symbolic 77 specified by <internalFormat>.
62 constants: GL_RGB, GL_RGBA, GL_RGB8, GL_RGBA8, GL_BGRA_EXT, GL_BGRA8_EXT, 78
63 GL_SRGB_EXT, GL_SRGB_ALPHA_EXT, GL_R8, GL_R8UI, GL_RG8, GL_RG8UI, GL_SRGB8,
64 GL_RGB565, GL_RGB8UI, GL_SRGB8_ALPHA8, GL_RGB5_A1, GL_RGBA4, GL_RGBA4,
65 GL_RGBA8UI, GL_RGB9_E5, GL_R16F, GL_R32F, GL_RG16F, GL_RG32F, GL_RGB16F,
66 GL_RGB32F, GL_RGBA16F, GL_RGBA32F, GL_R11F_G11F_B10F.
67 The internal format of source texture must be one of the following
68 symbolic constants: GL_RED, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA,
69 GL_RGB, GL_RGBA, GL_RGB8, GL_RGBA8, GL_BGRA_EXT, GL_BGRA8_EXT,
70 GL_RGB_YCBCR_420V_CHROMIUM, GL_RGB_YCBCR_422_CHROMIUM.
71 When source texture doens't contain a superset of the component 79 When source texture doens't contain a superset of the component
72 required by <internal_format>, fill the components by following rules. 80 required by <internalFormat>, fill the components by following rules.
73 81
74 source format color components 82 source format color components
75 ===================================================== 83 ----------------------------------------
76 GL_ALPHA (0, 0, 0, A) 84 ALPHA (0, 0, 0, A)
77 GL_RED (R, 0, 0, 1) 85 RED (R, 0, 0, 1)
78 GL_LUMINANCE (L, L, L, 1) 86 LUMINANCE (L, L, L, 1)
79 GL_LUMINANCE_ALPHA (L, L, L, A) 87 LUMINANCE_ALPHA (L, L, L, A)
80 GL_RGB (R, G, B, 1) 88 RGB (R, G, B, 1)
81 GL_RGB8 (R, G, B, 1) 89 RGB8 (R, G, B, 1)
82 GL_RGBA (R, G, B, A) 90 RGBA (R, G, B, A)
83 GL_RGBA8 (R, G, B, A) 91 RGBA8 (R, G, B, A)
84 GL_BGRA_EXT (R, G, B, A) 92 BGRA_EXT (R, G, B, A)
85 GL_BGRA8_EXT (R, G, B, A) 93 BGRA8_EXT (R, G, B, A)
86 GL_RGB_YCBCR_420V_CHROMIUM (R, G, B, 1) 94 RGB_YCBCR_420V_CHROMIUM (R, G, B, 1)
87 GL_RGB_YCBCR_422_CHROMIUM (R, G, B, 1) 95 RGB_YCBCR_422_CHROMIUM (R, G, B, 1)
88 96
89 The format type of the destination texture is converted to that specified 97 The format type of the destination texture is converted to that specified
90 by <dest_type>. 98 by <destType>.
91 99
92 If <flip_y> is true, vertically flip texture image data. 100 If <flipY> is true, vertically flip texture image data.
93 101
94 If <unpack_premultiply_alpha> and <unpack_unmultiply_alpha> are true, 102 If <unpackPremultiplyAlpha> and <unpackUnmultiplyAlpha> are true,
95 no alpha processing occurs. This is the equivalent of having neither flag 103 no alpha processing occurs. This is the equivalent of having neither flag
96 set. 104 set.
97 105
98 When <source_id> refers to a stream texture, the texture matrix will be 106 When <sourceId> refers to a stream texture, the texture matrix will be
99 applied as part of the copy operation. 107 applied as part of the copy operation.
100 108
101 INVALID_OPERATION is generated if <internal_format> is not one of the valid 109 INVALID_OPERATION is generated if <internalFormat> is not one of the
102 formats described above. 110 formats in Table 1.0.
103 111
104 INVALID_OPERATION is generated if the internal format of <source_id> is not 112 INVALID_OPERATION is generated if the internal format of <sourceId> is not
105 one of formats from the table above. 113 one of formats in Table 1.1.
106 114
107 INVALID_VALUE is generated if <source_id> or <dest_id> are not valid texture 115 INVALID_VALUE is generated if <sourceId> or <destId> are not valid texture
108 objects. 116 objects.
109 117
110 INVALID_ENUM is generated if <dest_target> is not one of the valid targets 118 INVALID_ENUM is generated if <destTarget> is not one of the valid targets
111 described above. 119 described above.
112 120
113 INVALID_OPERATION is generated if the bound target of destination texture 121 INVALID_OPERATION is generated if the bound target of destination texture
114 does not match <target>. 122 does not match <target>.
115 123
116 INVALID_VALUE is generated if textures corresponding to <dest_id> have not 124 INVALID_VALUE is generated if textures corresponding to <destId> have not
117 been bound as GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, or 125 been bound as TEXTURE_2D, TEXTURE_CUBE_MAP, or
118 GL_TEXTURE_RECTANGLE_ARB objects. 126 TEXTURE_RECTANGLE_ARB objects.
119 127
120 INVALID_VALUE is generated if textures corresponding to <source_id> have not 128 INVALID_VALUE is generated if textures corresponding to <sourceId> have not
121 been bound as GL_TEXTURE_2D, GL_TEXTURE_RECTANGLE_ARB or 129 been bound as TEXTURE_2D, TEXTURE_RECTANGLE_ARB or
122 GL_TEXTURE_EXTERNAL_OES objects. 130 TEXTURE_EXTERNAL_OES objects.
123 131
124 INVALID_VALUE is generated if <source_level> is not 0 for ES 2.0, or if 132 INVALID_VALUE is generated if <sourceLevel> is not 0 for ES 2.0, or if
125 <source_level> or <dest_level> is less than 0 for ES 3.0. 133 <sourceLevel> or <destLevel> is less than 0 for ES 3.0.
126 134
127 INVALID_VALUE is generated if <source_level> of the source texture is not 135 INVALID_VALUE is generated if <sourceLevel> of the source texture is not
128 defined. 136 defined.
129 137
130 The command 138 The command
131 139
132 void glCopySubTextureCHROMIUM (GLenum source_id, 140 CopySubTextureCHROMIUM
133 GLint source_level,
134 GLenum dest_target,
135 GLenum dest_id,
136 GLint dest_level,
137 GLint xoffset, GLint yoffset,
138 GLint x, GLint y,
139 GLsizei width, GLsizei height,
140 GLboolean unpack_flip_y,
141 GLboolean unpack_premultiply_alpha,
142 GLboolean unpack_unmultiply_alpha)
143 141
144 Copies the sub contents of texture referred to by <source_id> to <dest_id> 142 Copies the sub contents of texture referred to by <sourceId> to <destId>
145 texture without redefining <dest_id> texture. 143 texture without redefining <destId> texture.
146 144
147 See CopyTextureCHROMIUM for the interpretation of the <dest_target>, 145 See CopyTextureCHROMIUM for the interpretation of the <destTarget>,
148 <source_level>, <dest_level>, <flip_y>, <premultiply_alpha>, and 146 <sourceLevel>, <destLevel>, <flipY>, <premultiplyAlpha>, and
149 <unmultiply_alpha> arguments. 147 <unmultiplyAlpha> arguments.
150 148
151 <xoffset> and <yoffset> specify a texel offset in the x and y direction 149 <xoffset> and <yoffset> specify a texel offset in the x and y direction
152 respectively within the destination texture. 150 respectively within the destination texture.
153 151
154 <x> and <y> specify specify a texel offset in the x and y direction 152 <x> and <y> specify specify a texel offset in the x and y direction
155 respectively within the source texture. 153 respectively within the source texture.
156 154
157 <width> specifies the width of the texture subimage. 155 <width> specifies the width of the texture subimage.
158 156
159 <height> specifies the width of the texture subimage. 157 <height> specifies the width of the texture subimage.
160 158
161 INVALID_VALUE is generated if either <source_id> texture or <dest_id> 159 INVALID_VALUE is generated if either <sourceId> texture or <destId>
162 texture is not defined. 160 texture is not defined.
163 161
164 INVALID_OPERATION is generated if source internal_format and destination 162 INVALID_OPERATION is generated if the internal format of <sourceId> or
165 internal_format are not one of the valid formats described above. 163 <destId> is not one of formats in Table 1.1.
166 164
167 INVALID_OPERATION is generated if the destination texture array has not 165 INVALID_OPERATION is generated if the destination texture array has not
168 been defined. 166 been defined.
169 167
170 INVALID_VALUE is generated if <dest_id> texture is not bound as 168 INVALID_VALUE is generated if <destId> texture is not bound as
171 GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE_ARB. 169 TEXTURE_2D or TEXTURE_RECTANGLE_ARB.
172 170
173 INVALID_VALUE is generated if level 0 of the source texture or 171 INVALID_VALUE is generated if level 0 of the source texture or
174 the destination texture is not defined. 172 the destination texture is not defined.
175 173
176 INVALID_VALUE is generated if <xoffset> < 0 , or <yoffset> < 0. 174 INVALID_VALUE is generated if (<xoffset> + <width>) > destWidth,
175 or (<yoffset> + <height>) > destHeight.
177 176
178 INVALID_VALUE is generated if (<xoffset> + <width>) > dest_width, 177 Table 1.0 Valid internal formats for CopyTextureCHROMIUM:
179 or (<yoffset> + <height>) > dest_height. 178
179 <internalFormat>
180 ---------------
181 RGB
182 RGBA
183 RGB8
184 RGBA8
185 BGRA_EXT
186 BGRA8_EXT,
187 SRGB_EXT
188 SRGB_ALPHA_EXT
189 R8
190 R8UI
191 RG8
192 RG8UI
193 SRGB8
194 RGB565
195 RGB8UI
196 SRGB8_ALPHA8
197 RGB5_A1
198 RGBA4
199 RGBA4
200 RGBA8UI
201 RGB9_E5
202 R16F
203 R32F
204 RG16F
205 RG32F
206 RGB16F
207 RGB32F
208 RGBA16F
209 RGBA32F
210 R11F_G11F_B10F
211
212 Table 1.1 Valid source texture internal formats for CopyTextureCHROMIUM and
213 source and destination formats for CopySubTextureCHROMIUM:
214
215 internal format
216 ---------------
217 RED
218 ALPHA
219 LUMINANCE
220 LUMINANCE_ALPHA
221 RGB
222 RGBA
223 RGB8
224 RGBA8
225 BGRA_EXT
226 BGRA8_EXT
227 RGB_YCBCR_420V_CHROMIUM
228 RGB_YCBCR_422_CHROMIUM.
180 229
181 Dependencies on ARB_texture_rg 230 Dependencies on ARB_texture_rg
182 231
183 If ARB_texture_rg is not supported: 232 If ARB_texture_rg is not supported:
184 * delete any reference to the R8 format. 233 * delete any reference to the R8 format.
185 234
186 Dependencies on CHROMIUM_ycbcr_422_image 235 Dependencies on CHROMIUM_ycbcr_422_image
187 236
188 If CHROMIUM_ycbcr_422_image is not supported: 237 If CHROMIUM_ycbcr_422_image is not supported:
189 * delete any reference to the RGB_YCBCR_422_CHROMIUM format. 238 * delete any reference to the RGB_YCBCR_422_CHROMIUM format.
190 239
191 Errors 240 Errors
192 241
193 None. 242 None.
194 243
195 New Tokens 244 New Tokens
196 245
197 None. 246 None.
198 247
199 New State 248 New State
200 249
201 None. 250 None.
202 251
203 Revision History 252 Revision History
204 253
205 8/1/2011 Documented the extension 254 8/1/2011 Documented the extension
206 7/4/2013 Add a new parameter dest_type to glCopyTextureCHROMIUM() 255 7/4/2013 Add a new parameter dest_type to glCopyTextureCHROMIUM()
207 16/7/2014 Add GL_TEXTURE_RECTANGLE_ARB as valid source_id target 256 16/7/2014 Add TEXTURE_RECTANGLE_ARB as valid source_id target
208 19/6/2015 Add arguments unpack_flip_y, unpack_premultiply_alpha, and 257 19/6/2015 Add arguments unpack_flip_y, unpack_premultiply_alpha, and
209 unpack_unmultiply_alpha to both commands. 258 unpack_unmultiply_alpha to both commands.
210 4/1/2016 Removed the argument target. 259 4/1/2016 Removed the argument target.
211 4/1/2016 Added GL_TEXTURE_RECTANGLE_ARB as valid dest_id target. 260 4/1/2016 Added TEXTURE_RECTANGLE_ARB as valid dest_id target.
212 19/12/2016 Supported more ES 3.0 formats. 261 19/12/2016 Supported more ES 3.0 formats.
213 18/1/2017 Supported source_level and dest_level. 262 18/1/2017 Supported source_level and dest_level.
214 19/1/2017 Added GL_TEXTURE_CUBE_MAP as valid dest_id target. 263 19/1/2017 Added TEXTURE_CUBE_MAP as valid dest_id target.
264 24/3/2017 Clean up naming and move formats into tables.
OLDNEW
« no previous file with comments | « DEPS ('k') | gpu/command_buffer/client/gles2_c_lib_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698