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

Side by Side Diff: gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc

Issue 1203793003: Remove flip_y, premultiply_alpha, unmultiply_alpha support in command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 5 years, 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GL_GLEXT_PROTOTYPES 5 #ifndef GL_GLEXT_PROTOTYPES
6 #define GL_GLEXT_PROTOTYPES 6 #define GL_GLEXT_PROTOTYPES
7 #endif 7 #endif
8 8
9 #include <GLES2/gl2.h> 9 #include <GLES2/gl2.h>
10 #include <GLES2/gl2ext.h> 10 #include <GLES2/gl2ext.h>
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 EXPECT_EQ(framebuffer_id_, fb_id); 258 EXPECT_EQ(framebuffer_id_, fb_id);
259 259
260 // Check that FB is complete. 260 // Check that FB is complete.
261 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 261 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
262 glCheckFramebufferStatus(GL_FRAMEBUFFER)); 262 glCheckFramebufferStatus(GL_FRAMEBUFFER));
263 263
264 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, &pixels[12]); 264 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, &pixels[12]);
265 EXPECT_TRUE(GL_NO_ERROR == glGetError()); 265 EXPECT_TRUE(GL_NO_ERROR == glGetError());
266 } 266 }
267 267
268 // Test that the extension respects the flip-y pixel storage setting.
269 TEST_P(GLCopyTextureCHROMIUMTest, FlipY) {
270 CopyType copy_type = GetParam();
271 uint8 pixels[2][2][4];
272 for (int x = 0; x < 2; ++x) {
273 for (int y = 0; y < 2; ++y) {
274 pixels[y][x][0] = x + y;
275 pixels[y][x][1] = x + y;
276 pixels[y][x][2] = x + y;
277 pixels[y][x][3] = 255u;
278 }
279 }
280
281 glBindTexture(GL_TEXTURE_2D, textures_[0]);
282 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE,
283 pixels);
284
285 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE);
286
287 if (copy_type == TexImage) {
288 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA,
289 GL_UNSIGNED_BYTE, true, false, false);
290 } else {
291 glBindTexture(GL_TEXTURE_2D, textures_[1]);
292 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE,
293 nullptr);
294 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0,
295 0, 2, 2, true, false, false);
296 }
297 EXPECT_TRUE(GL_NO_ERROR == glGetError());
298
299 uint8 copied_pixels[2][2][4] = {{{0}}};
300 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels);
301 for (int x = 0; x < 2; ++x) {
302 for (int y = 0; y < 2; ++y) {
303 EXPECT_EQ(pixels[1-y][x][0], copied_pixels[y][x][0]);
304 EXPECT_EQ(pixels[1-y][x][1], copied_pixels[y][x][1]);
305 EXPECT_EQ(pixels[1-y][x][2], copied_pixels[y][x][2]);
306 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]);
307 }
308 }
309
310 EXPECT_TRUE(GL_NO_ERROR == glGetError());
311 }
312
313 // Test that the extension respects the GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM
314 // storage setting.
315 TEST_P(GLCopyTextureCHROMIUMTest, PremultiplyAlpha) {
316 CopyType copy_type = GetParam();
317 uint8 pixels[1 * 4] = { 2, 2, 2, 128 };
318
319 glBindTexture(GL_TEXTURE_2D, textures_[0]);
320 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
321 pixels);
322
323 glPixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE);
324 if (copy_type == TexImage) {
325 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA,
326 GL_UNSIGNED_BYTE, false, true, false);
327 } else {
328 glBindTexture(GL_TEXTURE_2D, textures_[1]);
329 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
330 nullptr);
331 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0,
332 0, 1, 1, false, true, false);
333 }
334 EXPECT_TRUE(GL_NO_ERROR == glGetError());
335
336 uint8 copied_pixels[1 * 4] = {0};
337 glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels);
338 EXPECT_EQ(1u, copied_pixels[0]);
339 EXPECT_EQ(1u, copied_pixels[1]);
340 EXPECT_EQ(1u, copied_pixels[2]);
341 EXPECT_EQ(128u, copied_pixels[3]);
342
343 EXPECT_TRUE(GL_NO_ERROR == glGetError());
344 }
345
346 // Test that the extension respects the GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM
347 // storage setting.
348 TEST_P(GLCopyTextureCHROMIUMTest, UnpremultiplyAlpha) {
349 CopyType copy_type = GetParam();
350 uint8 pixels[1 * 4] = { 16, 16, 16, 128 };
351
352 glBindTexture(GL_TEXTURE_2D, textures_[0]);
353 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
354 pixels);
355
356 glPixelStorei(GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE);
357 if (copy_type == TexImage) {
358 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA,
359 GL_UNSIGNED_BYTE, false, false, true);
360 } else {
361 glBindTexture(GL_TEXTURE_2D, textures_[1]);
362 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
363 nullptr);
364 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0,
365 0, 1, 1, false, false, true);
366 }
367 EXPECT_TRUE(GL_NO_ERROR == glGetError());
368
369 uint8 copied_pixels[1 * 4] = {0};
370 glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels);
371 EXPECT_EQ(32u, copied_pixels[0]);
372 EXPECT_EQ(32u, copied_pixels[1]);
373 EXPECT_EQ(32u, copied_pixels[2]);
374 EXPECT_EQ(128u, copied_pixels[3]);
375
376 EXPECT_TRUE(GL_NO_ERROR == glGetError());
377 }
378
379 TEST_P(GLCopyTextureCHROMIUMTest, FlipYAndPremultiplyAlpha) {
380 CopyType copy_type = GetParam();
381 uint8 pixels[2][2][4];
382 for (int x = 0; x < 2; ++x) {
383 for (int y = 0; y < 2; ++y) {
384 uint8 color = 16 * x + 16 * y;
385 pixels[y][x][0] = color;
386 pixels[y][x][1] = color;
387 pixels[y][x][2] = color;
388 pixels[y][x][3] = 128u;
389 }
390 }
391
392 glBindTexture(GL_TEXTURE_2D, textures_[0]);
393 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE,
394 pixels);
395
396 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE);
397 glPixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE);
398 if (copy_type == TexImage) {
399 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA,
400 GL_UNSIGNED_BYTE, true, true, false);
401 } else {
402 glBindTexture(GL_TEXTURE_2D, textures_[1]);
403 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE,
404 nullptr);
405 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0,
406 0, 2, 2, true, true, false);
407 }
408 EXPECT_TRUE(GL_NO_ERROR == glGetError());
409
410 uint8 copied_pixels[2][2][4] = {{{0}}};
411 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels);
412 for (int x = 0; x < 2; ++x) {
413 for (int y = 0; y < 2; ++y) {
414 EXPECT_EQ(pixels[1-y][x][0] / 2, copied_pixels[y][x][0]);
415 EXPECT_EQ(pixels[1-y][x][1] / 2, copied_pixels[y][x][1]);
416 EXPECT_EQ(pixels[1-y][x][2] / 2, copied_pixels[y][x][2]);
417 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]);
418 }
419 }
420
421 EXPECT_TRUE(GL_NO_ERROR == glGetError());
422 }
423
424 TEST_P(GLCopyTextureCHROMIUMTest, FlipYAndUnpremultiplyAlpha) {
425 CopyType copy_type = GetParam();
426 uint8 pixels[2][2][4];
427 for (int x = 0; x < 2; ++x) {
428 for (int y = 0; y < 2; ++y) {
429 uint8 color = 16 * x + 16 * y;
430 pixels[y][x][0] = color;
431 pixels[y][x][1] = color;
432 pixels[y][x][2] = color;
433 pixels[y][x][3] = 128u;
434 }
435 }
436
437 glBindTexture(GL_TEXTURE_2D, textures_[0]);
438 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE,
439 pixels);
440
441 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE);
442 glPixelStorei(GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE);
443 if (copy_type == TexImage) {
444 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA,
445 GL_UNSIGNED_BYTE, true, false, true);
446 } else {
447 glBindTexture(GL_TEXTURE_2D, textures_[1]);
448 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE,
449 nullptr);
450 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0,
451 0, 2, 2, true, false, true);
452 }
453 EXPECT_TRUE(GL_NO_ERROR == glGetError());
454
455 uint8 copied_pixels[2][2][4] = {{{0}}};
456 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels);
457 for (int x = 0; x < 2; ++x) {
458 for (int y = 0; y < 2; ++y) {
459 EXPECT_EQ(pixels[1-y][x][0] * 2, copied_pixels[y][x][0]);
460 EXPECT_EQ(pixels[1-y][x][1] * 2, copied_pixels[y][x][1]);
461 EXPECT_EQ(pixels[1-y][x][2] * 2, copied_pixels[y][x][2]);
462 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]);
463 }
464 }
465
466 EXPECT_TRUE(GL_NO_ERROR == glGetError());
467 }
468
469 namespace { 268 namespace {
470 269
471 void glEnableDisable(GLint param, GLboolean value) { 270 void glEnableDisable(GLint param, GLboolean value) {
472 if (value) 271 if (value)
473 glEnable(param); 272 glEnable(param);
474 else 273 else
475 glDisable(param); 274 glDisable(param);
476 } 275 }
477 276
478 } // unnamed namespace 277 } // unnamed namespace
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 uint8 green[1 * 4] = {0u, 255u, 0u, 255u}; 691 uint8 green[1 * 4] = {0u, 255u, 0u, 255u};
893 uint8 blue[1 * 4] = {0u, 0u, 255u, 255u}; 692 uint8 blue[1 * 4] = {0u, 0u, 255u, 255u};
894 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent); 693 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent);
895 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red); 694 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red);
896 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green); 695 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green);
897 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue); 696 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue);
898 EXPECT_TRUE(GL_NO_ERROR == glGetError()); 697 EXPECT_TRUE(GL_NO_ERROR == glGetError());
899 } 698 }
900 699
901 } // namespace gpu 700 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h ('k') | media/blink/skcanvas_video_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698