1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
9 #include <GLES2/gl2ext.h>
10 #include <GLES2/gl2extchromium.h>
11 #include <GLES3/gl3.h>
13 #include "testing/gtest/include/gtest/gtest.h"
18 class GLES2UtilTest
: public testing:: Test
{
23 TEST_F(GLES2UtilTest
, SafeMultiplyUint32
) {
25 EXPECT_TRUE(SafeMultiplyUint32(2u, 3u, &result
));
26 EXPECT_EQ(6u, result
);
27 EXPECT_FALSE(SafeMultiplyUint32(0x80000000u
, 2u, &result
));
28 EXPECT_EQ(0u, result
);
29 EXPECT_TRUE(SafeMultiplyUint32(0x2u
, 0x7FFFFFFFu
, &result
));
30 EXPECT_EQ(0xFFFFFFFEu
, result
);
31 EXPECT_FALSE(SafeMultiplyUint32(2u, 0x80000000u
, &result
));
32 EXPECT_EQ(0u, result
);
35 TEST_F(GLES2UtilTest
, SafeAddUint32
) {
37 EXPECT_TRUE(SafeAddUint32(2u, 3u, &result
));
38 EXPECT_EQ(5u, result
);
39 EXPECT_FALSE(SafeAddUint32(0x80000000u
, 0x80000000u
, &result
));
40 EXPECT_EQ(0u, result
);
41 EXPECT_TRUE(SafeAddUint32(0xFFFFFFFEu
, 0x1u
, &result
));
42 EXPECT_EQ(0xFFFFFFFFu
, result
);
43 EXPECT_FALSE(SafeAddUint32(0xFFFFFFFEu
, 0x2u
, &result
));
44 EXPECT_EQ(0u, result
);
45 EXPECT_TRUE(SafeAddUint32(0x1u
, 0xFFFFFFFEu
, &result
));
46 EXPECT_EQ(0xFFFFFFFFu
, result
);
47 EXPECT_FALSE(SafeAddUint32(0x2u
, 0xFFFFFFFEu
, &result
));
48 EXPECT_EQ(0u, result
);
51 TEST_F(GLES2UtilTest
, SafeAddInt32
) {
53 const int32_t kMax
= std::numeric_limits
<int32_t>::max();
54 const int32_t kMin
= std::numeric_limits
<int32_t>::min();
55 EXPECT_TRUE(SafeAddInt32(2, 3, &result
));
57 EXPECT_FALSE(SafeAddInt32(kMax
, 1, &result
));
59 EXPECT_TRUE(SafeAddInt32(kMin
+ 1, -1, &result
));
60 EXPECT_EQ(kMin
, result
);
61 EXPECT_FALSE(SafeAddInt32(kMin
, -1, &result
));
63 EXPECT_TRUE(SafeAddInt32(kMax
- 1, 1, &result
));
64 EXPECT_EQ(kMax
, result
);
65 EXPECT_FALSE(SafeAddInt32(1, kMax
, &result
));
67 EXPECT_TRUE(SafeAddInt32(-1, kMin
+ 1, &result
));
68 EXPECT_EQ(kMin
, result
);
69 EXPECT_FALSE(SafeAddInt32(-1, kMin
, &result
));
71 EXPECT_TRUE(SafeAddInt32(1, kMax
- 1, &result
));
72 EXPECT_EQ(kMax
, result
);
75 TEST_F(GLES2UtilTest
, GLGetNumValuesReturned
) {
76 EXPECT_EQ(0, util_
.GLGetNumValuesReturned(GL_COMPRESSED_TEXTURE_FORMATS
));
77 EXPECT_EQ(0, util_
.GLGetNumValuesReturned(GL_SHADER_BINARY_FORMATS
));
79 EXPECT_EQ(0, util_
.num_compressed_texture_formats());
80 EXPECT_EQ(0, util_
.num_shader_binary_formats());
82 util_
.set_num_compressed_texture_formats(1);
83 util_
.set_num_shader_binary_formats(2);
85 EXPECT_EQ(1, util_
.GLGetNumValuesReturned(GL_COMPRESSED_TEXTURE_FORMATS
));
86 EXPECT_EQ(2, util_
.GLGetNumValuesReturned(GL_SHADER_BINARY_FORMATS
));
88 EXPECT_EQ(1, util_
.num_compressed_texture_formats());
89 EXPECT_EQ(2, util_
.num_shader_binary_formats());
92 TEST_F(GLES2UtilTest
, ComputeImageDataSizesFormats
) {
93 const uint32_t kWidth
= 16;
94 const uint32_t kHeight
= 12;
96 uint32_t unpadded_row_size
;
97 uint32_t padded_row_size
;
98 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
99 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_BYTE
, 1,
100 &size
, &unpadded_row_size
, &padded_row_size
));
101 EXPECT_EQ(kWidth
* kHeight
* 3, size
);
102 EXPECT_EQ(kWidth
* 3, padded_row_size
);
103 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
104 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
105 kWidth
, kHeight
, 1, GL_RGBA
, GL_UNSIGNED_BYTE
, 1, &size
,
106 &unpadded_row_size
, &padded_row_size
));
107 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
108 EXPECT_EQ(kWidth
* 4, padded_row_size
);
109 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
110 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
111 kWidth
, kHeight
, 1, GL_LUMINANCE
, GL_UNSIGNED_BYTE
, 1, &size
,
112 &unpadded_row_size
, &padded_row_size
));
113 EXPECT_EQ(kWidth
* kHeight
* 1, size
);
114 EXPECT_EQ(kWidth
* 1, padded_row_size
);
115 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
116 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
117 kWidth
, kHeight
, 1, GL_LUMINANCE_ALPHA
, GL_UNSIGNED_BYTE
, 1, &size
,
118 &unpadded_row_size
, &padded_row_size
));
119 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
120 EXPECT_EQ(kWidth
* 2, padded_row_size
);
121 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
122 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
123 kWidth
, kHeight
, 1, GL_BGRA_EXT
, GL_UNSIGNED_BYTE
, 1, &size
,
124 &unpadded_row_size
, &padded_row_size
));
125 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
126 EXPECT_EQ(kWidth
* 4, padded_row_size
);
127 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
128 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
129 kWidth
, kHeight
, 1, GL_ALPHA
, GL_UNSIGNED_BYTE
, 1, &size
,
130 &unpadded_row_size
, &padded_row_size
));
131 EXPECT_EQ(kWidth
* kHeight
* 1, size
);
132 EXPECT_EQ(kWidth
* 1, padded_row_size
);
133 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
134 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
135 kWidth
, kHeight
, 1, GL_DEPTH_COMPONENT
, GL_UNSIGNED_SHORT
, 1, &size
,
136 &unpadded_row_size
, &padded_row_size
));
137 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
138 EXPECT_EQ(kWidth
* 2, padded_row_size
);
139 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
140 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
141 kWidth
, kHeight
, 1, GL_DEPTH_STENCIL_OES
, GL_UNSIGNED_INT_24_8_OES
, 1,
142 &size
, &unpadded_row_size
, &padded_row_size
));
143 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
144 EXPECT_EQ(kWidth
* 4, padded_row_size
);
145 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
146 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
147 kWidth
, kHeight
, 1, GL_RGB_INTEGER
, GL_UNSIGNED_BYTE
, 1,
148 &size
, &unpadded_row_size
, &padded_row_size
));
149 EXPECT_EQ(kWidth
* kHeight
* 3, size
);
150 EXPECT_EQ(kWidth
* 3, padded_row_size
);
151 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
152 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
153 kWidth
, kHeight
, 1, GL_RG
, GL_UNSIGNED_BYTE
, 1,
154 &size
, &unpadded_row_size
, &padded_row_size
));
155 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
156 EXPECT_EQ(kWidth
* 2, padded_row_size
);
157 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
158 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
159 kWidth
, kHeight
, 1, GL_RG_INTEGER
, GL_UNSIGNED_BYTE
, 1,
160 &size
, &unpadded_row_size
, &padded_row_size
));
161 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
162 EXPECT_EQ(kWidth
* 2, padded_row_size
);
163 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
164 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
165 kWidth
, kHeight
, 1, GL_RED
, GL_UNSIGNED_BYTE
, 1,
166 &size
, &unpadded_row_size
, &padded_row_size
));
167 EXPECT_EQ(kWidth
* kHeight
* 1, size
);
168 EXPECT_EQ(kWidth
* 1, padded_row_size
);
169 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
170 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
171 kWidth
, kHeight
, 1, GL_RED_INTEGER
, GL_UNSIGNED_BYTE
, 1,
172 &size
, &unpadded_row_size
, &padded_row_size
));
173 EXPECT_EQ(kWidth
* kHeight
* 1, size
);
174 EXPECT_EQ(kWidth
* 1, padded_row_size
);
175 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
178 TEST_F(GLES2UtilTest
, ComputeImageDataSizeTypes
) {
179 const uint32_t kWidth
= 16;
180 const uint32_t kHeight
= 12;
182 uint32_t unpadded_row_size
;
183 uint32_t padded_row_size
;
184 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
185 kWidth
, kHeight
, 1, GL_RGBA
, GL_UNSIGNED_BYTE
, 1, &size
,
186 &unpadded_row_size
, &padded_row_size
));
187 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
188 EXPECT_EQ(kWidth
* 4, padded_row_size
);
189 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
190 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
191 kWidth
, kHeight
, 1, GL_RGBA
, GL_UNSIGNED_SHORT_4_4_4_4
, 1, &size
,
192 &unpadded_row_size
, &padded_row_size
));
193 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
194 EXPECT_EQ(kWidth
* 2, padded_row_size
);
195 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
196 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
197 kWidth
, kHeight
, 1, GL_RGBA
, GL_UNSIGNED_SHORT_5_5_5_1
, 1, &size
,
198 &unpadded_row_size
, &padded_row_size
));
199 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
200 EXPECT_EQ(kWidth
* 2, padded_row_size
);
201 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
202 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
203 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_SHORT_5_6_5
, 1, &size
,
204 &unpadded_row_size
, &padded_row_size
));
205 EXPECT_EQ(kWidth
* kHeight
* 2, size
);
206 EXPECT_EQ(kWidth
* 2, padded_row_size
);
207 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
208 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
209 kWidth
, kHeight
, 1, GL_DEPTH_COMPONENT
, GL_UNSIGNED_INT
, 1, &size
,
210 &unpadded_row_size
, &padded_row_size
));
211 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
212 EXPECT_EQ(kWidth
* 4, padded_row_size
);
213 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
214 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
215 kWidth
, kHeight
, 1, GL_RGBA
, GL_UNSIGNED_INT_2_10_10_10_REV
, 1, &size
,
216 &unpadded_row_size
, &padded_row_size
));
217 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
218 EXPECT_EQ(kWidth
* 4, padded_row_size
);
219 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
220 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
221 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_INT_10F_11F_11F_REV
, 1, &size
,
222 &unpadded_row_size
, &padded_row_size
));
223 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
224 EXPECT_EQ(kWidth
* 4, padded_row_size
);
225 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
226 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
227 kWidth
, kHeight
, 1, GL_RGBA
, GL_UNSIGNED_INT_5_9_9_9_REV
, 1, &size
,
228 &unpadded_row_size
, &padded_row_size
));
229 EXPECT_EQ(kWidth
* kHeight
* 4, size
);
230 EXPECT_EQ(kWidth
* 4, padded_row_size
);
231 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
232 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
233 kWidth
, kHeight
, 1, GL_DEPTH_STENCIL
, GL_FLOAT_32_UNSIGNED_INT_24_8_REV
,
234 1, &size
, &unpadded_row_size
, &padded_row_size
));
235 EXPECT_EQ(kWidth
* kHeight
* 8, size
);
236 EXPECT_EQ(kWidth
* 8, padded_row_size
);
237 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
238 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
239 kWidth
, kHeight
, 1, GL_RGBA
, GL_HALF_FLOAT
,
240 1, &size
, &unpadded_row_size
, &padded_row_size
));
241 EXPECT_EQ(kWidth
* kHeight
* 8, size
);
242 EXPECT_EQ(kWidth
* 8, padded_row_size
);
243 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
244 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
245 kWidth
, kHeight
, 1, GL_RGBA
, GL_HALF_FLOAT_OES
,
246 1, &size
, &unpadded_row_size
, &padded_row_size
));
247 EXPECT_EQ(kWidth
* kHeight
* 8, size
);
248 EXPECT_EQ(kWidth
* 8, padded_row_size
);
249 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
252 TEST_F(GLES2UtilTest
, ComputeImageDataSizesUnpackAlignment
) {
253 const uint32_t kWidth
= 19;
254 const uint32_t kHeight
= 12;
256 uint32_t unpadded_row_size
;
257 uint32_t padded_row_size
;
258 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
259 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_BYTE
, 1, &size
,
260 &unpadded_row_size
, &padded_row_size
));
261 EXPECT_EQ(kWidth
* kHeight
* 3, size
);
262 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
263 EXPECT_EQ(kWidth
* 3, padded_row_size
);
264 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
265 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_BYTE
, 2, &size
,
266 &unpadded_row_size
, &padded_row_size
));
267 EXPECT_EQ((kWidth
* 3 + 1) * (kHeight
- 1) +
269 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
270 EXPECT_EQ(kWidth
* 3 + 1, padded_row_size
);
271 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
272 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_BYTE
, 4, &size
,
273 &unpadded_row_size
, &padded_row_size
));
274 EXPECT_EQ((kWidth
* 3 + 3) * (kHeight
- 1) +
276 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
277 EXPECT_EQ(kWidth
* 3 + 3, padded_row_size
);
278 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
279 kWidth
, kHeight
, 1, GL_RGB
, GL_UNSIGNED_BYTE
, 8, &size
,
280 &unpadded_row_size
, &padded_row_size
));
281 EXPECT_EQ((kWidth
* 3 + 7) * (kHeight
- 1) +
283 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
284 EXPECT_EQ(kWidth
* 3 + 7, padded_row_size
);
287 TEST_F(GLES2UtilTest
, ComputeImageDataSizeDepth
) {
288 const uint32_t kWidth
= 19;
289 const uint32_t kHeight
= 12;
290 const uint32_t kDepth
= 3;
292 uint32_t unpadded_row_size
;
293 uint32_t padded_row_size
;
294 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
295 kWidth
, kHeight
, kDepth
, GL_RGB
, GL_UNSIGNED_BYTE
, 1, &size
,
296 &unpadded_row_size
, &padded_row_size
));
297 EXPECT_EQ(kWidth
* kHeight
* kDepth
* 3, size
);
298 EXPECT_EQ(kWidth
* 3, padded_row_size
);
299 EXPECT_EQ(padded_row_size
, unpadded_row_size
);
300 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
301 kWidth
, kHeight
, kDepth
, GL_RGB
, GL_UNSIGNED_BYTE
, 2, &size
,
302 &unpadded_row_size
, &padded_row_size
));
303 EXPECT_EQ((kWidth
* 3 + 1) * (kHeight
* kDepth
- 1) +
305 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
306 EXPECT_EQ(kWidth
* 3 + 1, padded_row_size
);
307 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
308 kWidth
, kHeight
, kDepth
, GL_RGB
, GL_UNSIGNED_BYTE
, 4, &size
,
309 &unpadded_row_size
, &padded_row_size
));
310 EXPECT_EQ((kWidth
* 3 + 3) * (kHeight
* kDepth
- 1) +
312 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
313 EXPECT_EQ(kWidth
* 3 + 3, padded_row_size
);
314 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes(
315 kWidth
, kHeight
, kDepth
, GL_RGB
, GL_UNSIGNED_BYTE
, 8, &size
,
316 &unpadded_row_size
, &padded_row_size
));
317 EXPECT_EQ((kWidth
* 3 + 7) * (kHeight
* kDepth
- 1) +
319 EXPECT_EQ(kWidth
* 3, unpadded_row_size
);
320 EXPECT_EQ(kWidth
* 3 + 7, padded_row_size
);
323 TEST_F(GLES2UtilTest
, RenderbufferBytesPerPixel
) {
324 EXPECT_EQ(1u, GLES2Util::RenderbufferBytesPerPixel(GL_STENCIL_INDEX8
));
325 EXPECT_EQ(2u, GLES2Util::RenderbufferBytesPerPixel(GL_RGBA4
));
326 EXPECT_EQ(2u, GLES2Util::RenderbufferBytesPerPixel(GL_RGB565
));
327 EXPECT_EQ(2u, GLES2Util::RenderbufferBytesPerPixel(GL_RGB5_A1
));
328 EXPECT_EQ(2u, GLES2Util::RenderbufferBytesPerPixel(GL_DEPTH_COMPONENT16
));
329 EXPECT_EQ(4u, GLES2Util::RenderbufferBytesPerPixel(GL_RGB
));
330 EXPECT_EQ(4u, GLES2Util::RenderbufferBytesPerPixel(GL_RGBA
));
332 4u, GLES2Util::RenderbufferBytesPerPixel(GL_DEPTH24_STENCIL8_OES
));
333 EXPECT_EQ(4u, GLES2Util::RenderbufferBytesPerPixel(GL_RGB8_OES
));
334 EXPECT_EQ(4u, GLES2Util::RenderbufferBytesPerPixel(GL_RGBA8_OES
));
336 4u, GLES2Util::RenderbufferBytesPerPixel(GL_DEPTH_COMPONENT24_OES
));
337 EXPECT_EQ(0u, GLES2Util::RenderbufferBytesPerPixel(-1));
340 TEST_F(GLES2UtilTest
, GetChannelsForCompressedFormat
) {
341 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(GL_ETC1_RGB8_OES
));
342 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
343 GL_COMPRESSED_RGB_S3TC_DXT1_EXT
));
344 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
345 GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
));
346 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
347 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
));
348 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
349 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
));
350 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(GL_ATC_RGB_AMD
));
351 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
352 GL_ATC_RGBA_EXPLICIT_ALPHA_AMD
));
353 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
354 GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD
));
355 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
356 GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
));
357 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
358 GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
));
359 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
360 GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
));
361 EXPECT_EQ(0u, GLES2Util::GetChannelsForFormat(
362 GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
));
367 void CheckParseUniformName(
369 bool expected_success
,
370 size_t expected_array_pos
,
372 bool expected_getting_array
) {
374 size_t array_pos
= 1244;
375 bool getting_array
= false;
376 bool success
= GLES2Util::ParseUniformName(
377 name
, &array_pos
, &index
, &getting_array
);
378 EXPECT_EQ(expected_success
, success
);
380 EXPECT_EQ(expected_array_pos
, array_pos
);
381 EXPECT_EQ(expected_index
, index
);
382 EXPECT_EQ(expected_getting_array
, getting_array
);
386 } // anonymous namespace
388 TEST_F(GLES2UtilTest
, ParseUniformName
) {
389 CheckParseUniformName("u_name", true, std::string::npos
, 0, false);
390 CheckParseUniformName("u_name[]", false, std::string::npos
, 0, false);
391 CheckParseUniformName("u_name]", false, std::string::npos
, 0, false);
392 CheckParseUniformName("u_name[0a]", false, std::string::npos
, 0, false);
393 CheckParseUniformName("u_name[a0]", false, std::string::npos
, 0, false);
394 CheckParseUniformName("u_name[0a0]", false, std::string::npos
, 0, false);
395 CheckParseUniformName("u_name[0]", true, 6u, 0, true);
396 CheckParseUniformName("u_name[2]", true, 6u, 2, true);
397 CheckParseUniformName("u_name[02]", true, 6u, 2, true);
398 CheckParseUniformName("u_name[20]", true, 6u, 20, true);
399 CheckParseUniformName("u_name[020]", true, 6u, 20, true);
400 CheckParseUniformName("u_name[0][0]", true, 9u, 0, true);
401 CheckParseUniformName("u_name[3][2]", true, 9u, 2, true);
402 CheckParseUniformName("u_name[03][02]", true, 10u, 2, true);
403 CheckParseUniformName("u_name[30][20]", true, 10u, 20, true);
404 CheckParseUniformName("u_name[030][020]", true, 11u, 20, true);
405 CheckParseUniformName("", false, std::string::npos
, 0, false);