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

Side by Side Diff: content/common/cc_messages_unittest.cc

Issue 127373002: Add cc:DrawQuad type for surfaces (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update cc_messages_unittests Created 6 years, 11 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
« no previous file with comments | « content/common/cc_messages.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "content/common/cc_messages.h" 5 #include "content/common/cc_messages.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
11 #include "cc/output/compositor_frame.h" 11 #include "cc/output/compositor_frame.h"
12 #include "ipc/ipc_message.h" 12 #include "ipc/ipc_message.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/khronos/GLES2/gl2ext.h" 14 #include "third_party/khronos/GLES2/gl2ext.h"
15 #include "third_party/skia/include/effects/SkBlurImageFilter.h" 15 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
16 16
17 using cc::CheckerboardDrawQuad; 17 using cc::CheckerboardDrawQuad;
18 using cc::DelegatedFrameData; 18 using cc::DelegatedFrameData;
19 using cc::DebugBorderDrawQuad; 19 using cc::DebugBorderDrawQuad;
20 using cc::DrawQuad; 20 using cc::DrawQuad;
21 using cc::FilterOperation; 21 using cc::FilterOperation;
22 using cc::FilterOperations; 22 using cc::FilterOperations;
23 using cc::IOSurfaceDrawQuad; 23 using cc::IOSurfaceDrawQuad;
24 using cc::PictureDrawQuad; 24 using cc::PictureDrawQuad;
25 using cc::RenderPass; 25 using cc::RenderPass;
26 using cc::RenderPassDrawQuad; 26 using cc::RenderPassDrawQuad;
27 using cc::ResourceProvider; 27 using cc::ResourceProvider;
28 using cc::SharedQuadState; 28 using cc::SharedQuadState;
29 using cc::SolidColorDrawQuad; 29 using cc::SolidColorDrawQuad;
30 using cc::SurfaceDrawQuad;
30 using cc::TextureDrawQuad; 31 using cc::TextureDrawQuad;
31 using cc::TileDrawQuad; 32 using cc::TileDrawQuad;
32 using cc::TransferableResource; 33 using cc::TransferableResource;
33 using cc::StreamVideoDrawQuad; 34 using cc::StreamVideoDrawQuad;
34 using cc::VideoLayerImpl; 35 using cc::VideoLayerImpl;
35 using cc::YUVVideoDrawQuad; 36 using cc::YUVVideoDrawQuad;
36 using gfx::Transform; 37 using gfx::Transform;
37 38
38 namespace content { 39 namespace content {
39 namespace { 40 namespace {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 TileDrawQuad::MaterialCast(b)); 99 TileDrawQuad::MaterialCast(b));
99 break; 100 break;
100 case DrawQuad::SOLID_COLOR: 101 case DrawQuad::SOLID_COLOR:
101 Compare(SolidColorDrawQuad::MaterialCast(a), 102 Compare(SolidColorDrawQuad::MaterialCast(a),
102 SolidColorDrawQuad::MaterialCast(b)); 103 SolidColorDrawQuad::MaterialCast(b));
103 break; 104 break;
104 case DrawQuad::STREAM_VIDEO_CONTENT: 105 case DrawQuad::STREAM_VIDEO_CONTENT:
105 Compare(StreamVideoDrawQuad::MaterialCast(a), 106 Compare(StreamVideoDrawQuad::MaterialCast(a),
106 StreamVideoDrawQuad::MaterialCast(b)); 107 StreamVideoDrawQuad::MaterialCast(b));
107 break; 108 break;
109 case DrawQuad::SURFACE_CONTENT:
110 Compare(SurfaceDrawQuad::MaterialCast(a),
111 SurfaceDrawQuad::MaterialCast(b));
112 break;
108 case DrawQuad::YUV_VIDEO_CONTENT: 113 case DrawQuad::YUV_VIDEO_CONTENT:
109 Compare(YUVVideoDrawQuad::MaterialCast(a), 114 Compare(YUVVideoDrawQuad::MaterialCast(a),
110 YUVVideoDrawQuad::MaterialCast(b)); 115 YUVVideoDrawQuad::MaterialCast(b));
111 break; 116 break;
112 case DrawQuad::INVALID: 117 case DrawQuad::INVALID:
113 break; 118 break;
114 } 119 }
115 } 120 }
116 121
117 void Compare(const CheckerboardDrawQuad* a, const CheckerboardDrawQuad* b) { 122 void Compare(const CheckerboardDrawQuad* a, const CheckerboardDrawQuad* b) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) { 157 void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) {
153 EXPECT_EQ(a->color, b->color); 158 EXPECT_EQ(a->color, b->color);
154 EXPECT_EQ(a->force_anti_aliasing_off, b->force_anti_aliasing_off); 159 EXPECT_EQ(a->force_anti_aliasing_off, b->force_anti_aliasing_off);
155 } 160 }
156 161
157 void Compare(const StreamVideoDrawQuad* a, const StreamVideoDrawQuad* b) { 162 void Compare(const StreamVideoDrawQuad* a, const StreamVideoDrawQuad* b) {
158 EXPECT_EQ(a->resource_id, b->resource_id); 163 EXPECT_EQ(a->resource_id, b->resource_id);
159 EXPECT_EQ(a->matrix, b->matrix); 164 EXPECT_EQ(a->matrix, b->matrix);
160 } 165 }
161 166
167 void Compare(const SurfaceDrawQuad* a, const SurfaceDrawQuad* b) {
168 EXPECT_EQ(a->surface_id, b->surface_id);
169 }
170
162 void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) { 171 void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) {
163 EXPECT_EQ(a->resource_id, b->resource_id); 172 EXPECT_EQ(a->resource_id, b->resource_id);
164 EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha); 173 EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha);
165 EXPECT_EQ(a->uv_top_left, b->uv_top_left); 174 EXPECT_EQ(a->uv_top_left, b->uv_top_left);
166 EXPECT_EQ(a->uv_bottom_right, b->uv_bottom_right); 175 EXPECT_EQ(a->uv_bottom_right, b->uv_bottom_right);
167 EXPECT_EQ(a->background_color, b->background_color); 176 EXPECT_EQ(a->background_color, b->background_color);
168 EXPECT_EQ(a->vertex_opacity[0], b->vertex_opacity[0]); 177 EXPECT_EQ(a->vertex_opacity[0], b->vertex_opacity[0]);
169 EXPECT_EQ(a->vertex_opacity[1], b->vertex_opacity[1]); 178 EXPECT_EQ(a->vertex_opacity[1], b->vertex_opacity[1]);
170 EXPECT_EQ(a->vertex_opacity[2], b->vertex_opacity[2]); 179 EXPECT_EQ(a->vertex_opacity[2], b->vertex_opacity[2]);
171 EXPECT_EQ(a->vertex_opacity[3], b->vertex_opacity[3]); 180 EXPECT_EQ(a->vertex_opacity[3], b->vertex_opacity[3]);
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 streamvideo_in->SetAll(shared_state3_in.get(), 364 streamvideo_in->SetAll(shared_state3_in.get(),
356 arbitrary_rect2, 365 arbitrary_rect2,
357 arbitrary_rect2_inside_rect2, 366 arbitrary_rect2_inside_rect2,
358 arbitrary_rect1_inside_rect2, 367 arbitrary_rect1_inside_rect2,
359 arbitrary_bool1, 368 arbitrary_bool1,
360 arbitrary_resourceid2, 369 arbitrary_resourceid2,
361 arbitrary_matrix); 370 arbitrary_matrix);
362 scoped_ptr<DrawQuad> streamvideo_cmp = streamvideo_in->Copy( 371 scoped_ptr<DrawQuad> streamvideo_cmp = streamvideo_in->Copy(
363 streamvideo_in->shared_quad_state); 372 streamvideo_in->shared_quad_state);
364 373
374 int arbitrary_surface_id = 3;
375 scoped_ptr<SurfaceDrawQuad> surface_in = SurfaceDrawQuad::Create();
376 surface_in->SetAll(shared_state3_in.get(),
377 arbitrary_rect2,
378 arbitrary_rect2_inside_rect2,
379 arbitrary_rect1_inside_rect2,
380 arbitrary_bool1,
381 arbitrary_surface_id);
382 scoped_ptr<DrawQuad> surface_cmp = surface_in->Copy(
383 surface_in->shared_quad_state);
384
365 scoped_ptr<TextureDrawQuad> texture_in = TextureDrawQuad::Create(); 385 scoped_ptr<TextureDrawQuad> texture_in = TextureDrawQuad::Create();
366 texture_in->SetAll(shared_state3_in.get(), 386 texture_in->SetAll(shared_state3_in.get(),
367 arbitrary_rect2, 387 arbitrary_rect2,
368 arbitrary_rect2_inside_rect2, 388 arbitrary_rect2_inside_rect2,
369 arbitrary_rect1_inside_rect2, 389 arbitrary_rect1_inside_rect2,
370 arbitrary_bool1, 390 arbitrary_bool1,
371 arbitrary_resourceid1, 391 arbitrary_resourceid1,
372 arbitrary_bool2, 392 arbitrary_bool2,
373 arbitrary_pointf1, 393 arbitrary_pointf1,
374 arbitrary_pointf2, 394 arbitrary_pointf2,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 435
416 pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass()); 436 pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass());
417 pass_in->quad_list.push_back(checkerboard_in.PassAs<DrawQuad>()); 437 pass_in->quad_list.push_back(checkerboard_in.PassAs<DrawQuad>());
418 pass_in->quad_list.push_back(debugborder_in.PassAs<DrawQuad>()); 438 pass_in->quad_list.push_back(debugborder_in.PassAs<DrawQuad>());
419 pass_in->quad_list.push_back(iosurface_in.PassAs<DrawQuad>()); 439 pass_in->quad_list.push_back(iosurface_in.PassAs<DrawQuad>());
420 pass_in->quad_list.push_back(renderpass_in.PassAs<DrawQuad>()); 440 pass_in->quad_list.push_back(renderpass_in.PassAs<DrawQuad>());
421 pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass()); 441 pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass());
422 pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass()); 442 pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass());
423 pass_in->quad_list.push_back(solidcolor_in.PassAs<DrawQuad>()); 443 pass_in->quad_list.push_back(solidcolor_in.PassAs<DrawQuad>());
424 pass_in->quad_list.push_back(streamvideo_in.PassAs<DrawQuad>()); 444 pass_in->quad_list.push_back(streamvideo_in.PassAs<DrawQuad>());
445 pass_in->quad_list.push_back(surface_in.PassAs<DrawQuad>());
425 pass_in->quad_list.push_back(texture_in.PassAs<DrawQuad>()); 446 pass_in->quad_list.push_back(texture_in.PassAs<DrawQuad>());
426 pass_in->quad_list.push_back(tile_in.PassAs<DrawQuad>()); 447 pass_in->quad_list.push_back(tile_in.PassAs<DrawQuad>());
427 pass_in->quad_list.push_back(yuvvideo_in.PassAs<DrawQuad>()); 448 pass_in->quad_list.push_back(yuvvideo_in.PassAs<DrawQuad>());
428 449
429 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create(); 450 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create();
430 pass_cmp->SetAll(arbitrary_id, 451 pass_cmp->SetAll(arbitrary_id,
431 arbitrary_rect1, 452 arbitrary_rect1,
432 arbitrary_rectf1, 453 arbitrary_rectf1,
433 arbitrary_matrix, 454 arbitrary_matrix,
434 arbitrary_bool1); 455 arbitrary_bool1);
435 456
436 pass_cmp->shared_quad_state_list.push_back(shared_state1_cmp.Pass()); 457 pass_cmp->shared_quad_state_list.push_back(shared_state1_cmp.Pass());
437 pass_cmp->quad_list.push_back(checkerboard_cmp.PassAs<DrawQuad>()); 458 pass_cmp->quad_list.push_back(checkerboard_cmp.PassAs<DrawQuad>());
438 pass_cmp->quad_list.push_back(debugborder_cmp.PassAs<DrawQuad>()); 459 pass_cmp->quad_list.push_back(debugborder_cmp.PassAs<DrawQuad>());
439 pass_cmp->quad_list.push_back(iosurface_cmp.PassAs<DrawQuad>()); 460 pass_cmp->quad_list.push_back(iosurface_cmp.PassAs<DrawQuad>());
440 pass_cmp->quad_list.push_back(renderpass_cmp.PassAs<DrawQuad>()); 461 pass_cmp->quad_list.push_back(renderpass_cmp.PassAs<DrawQuad>());
441 pass_cmp->shared_quad_state_list.push_back(shared_state2_cmp.Pass()); 462 pass_cmp->shared_quad_state_list.push_back(shared_state2_cmp.Pass());
442 pass_cmp->shared_quad_state_list.push_back(shared_state3_cmp.Pass()); 463 pass_cmp->shared_quad_state_list.push_back(shared_state3_cmp.Pass());
443 pass_cmp->quad_list.push_back(solidcolor_cmp.PassAs<DrawQuad>()); 464 pass_cmp->quad_list.push_back(solidcolor_cmp.PassAs<DrawQuad>());
444 pass_cmp->quad_list.push_back(streamvideo_cmp.PassAs<DrawQuad>()); 465 pass_cmp->quad_list.push_back(streamvideo_cmp.PassAs<DrawQuad>());
466 pass_cmp->quad_list.push_back(surface_cmp.PassAs<DrawQuad>());
445 pass_cmp->quad_list.push_back(texture_cmp.PassAs<DrawQuad>()); 467 pass_cmp->quad_list.push_back(texture_cmp.PassAs<DrawQuad>());
446 pass_cmp->quad_list.push_back(tile_cmp.PassAs<DrawQuad>()); 468 pass_cmp->quad_list.push_back(tile_cmp.PassAs<DrawQuad>());
447 pass_cmp->quad_list.push_back(yuvvideo_cmp.PassAs<DrawQuad>()); 469 pass_cmp->quad_list.push_back(yuvvideo_cmp.PassAs<DrawQuad>());
448 470
449 // Make sure the in and cmp RenderPasses match. 471 // Make sure the in and cmp RenderPasses match.
450 Compare(pass_cmp.get(), pass_in.get()); 472 Compare(pass_cmp.get(), pass_in.get());
451 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); 473 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size());
452 ASSERT_EQ(9u, pass_in->quad_list.size()); 474 ASSERT_EQ(10u, pass_in->quad_list.size());
453 for (size_t i = 0; i < 3; ++i) { 475 for (size_t i = 0; i < 3; ++i) {
454 Compare(pass_cmp->shared_quad_state_list[i], 476 Compare(pass_cmp->shared_quad_state_list[i],
455 pass_in->shared_quad_state_list[i]); 477 pass_in->shared_quad_state_list[i]);
456 } 478 }
457 for (size_t i = 0; i < pass_in->quad_list.size(); ++i) 479 for (size_t i = 0; i < pass_in->quad_list.size(); ++i)
458 Compare(pass_cmp->quad_list[i], pass_in->quad_list[i]); 480 Compare(pass_cmp->quad_list[i], pass_in->quad_list[i]);
459 for (size_t i = 1; i < pass_in->quad_list.size(); ++i) { 481 for (size_t i = 1; i < pass_in->quad_list.size(); ++i) {
460 bool same_shared_quad_state_cmp = 482 bool same_shared_quad_state_cmp =
461 pass_cmp->quad_list[i]->shared_quad_state == 483 pass_cmp->quad_list[i]->shared_quad_state ==
462 pass_cmp->quad_list[i - 1]->shared_quad_state; 484 pass_cmp->quad_list[i - 1]->shared_quad_state;
(...skipping 11 matching lines...) Expand all
474 DelegatedFrameData frame_out; 496 DelegatedFrameData frame_out;
475 PickleIterator iter(msg); 497 PickleIterator iter(msg);
476 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, 498 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
477 &iter, &frame_out)); 499 &iter, &frame_out));
478 500
479 // Make sure the out and cmp RenderPasses match. 501 // Make sure the out and cmp RenderPasses match.
480 scoped_ptr<RenderPass> pass_out = frame_out.render_pass_list.take( 502 scoped_ptr<RenderPass> pass_out = frame_out.render_pass_list.take(
481 frame_out.render_pass_list.begin()); 503 frame_out.render_pass_list.begin());
482 Compare(pass_cmp.get(), pass_out.get()); 504 Compare(pass_cmp.get(), pass_out.get());
483 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); 505 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size());
484 ASSERT_EQ(9u, pass_out->quad_list.size()); 506 ASSERT_EQ(10u, pass_out->quad_list.size());
485 for (size_t i = 0; i < 3; ++i) { 507 for (size_t i = 0; i < 3; ++i) {
486 Compare(pass_cmp->shared_quad_state_list[i], 508 Compare(pass_cmp->shared_quad_state_list[i],
487 pass_out->shared_quad_state_list[i]); 509 pass_out->shared_quad_state_list[i]);
488 } 510 }
489 for (size_t i = 0; i < pass_out->quad_list.size(); ++i) 511 for (size_t i = 0; i < pass_out->quad_list.size(); ++i)
490 Compare(pass_cmp->quad_list[i], pass_out->quad_list[i]); 512 Compare(pass_cmp->quad_list[i], pass_out->quad_list[i]);
491 for (size_t i = 1; i < pass_out->quad_list.size(); ++i) { 513 for (size_t i = 1; i < pass_out->quad_list.size(); ++i) {
492 bool same_shared_quad_state_cmp = 514 bool same_shared_quad_state_cmp =
493 pass_cmp->quad_list[i]->shared_quad_state == 515 pass_cmp->quad_list[i]->shared_quad_state ==
494 pass_cmp->quad_list[i - 1]->shared_quad_state; 516 pass_cmp->quad_list[i - 1]->shared_quad_state;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 break; 712 break;
691 case cc::DrawQuad::TEXTURE_CONTENT: 713 case cc::DrawQuad::TEXTURE_CONTENT:
692 largest = std::max(largest, sizeof(cc::TextureDrawQuad)); 714 largest = std::max(largest, sizeof(cc::TextureDrawQuad));
693 break; 715 break;
694 case cc::DrawQuad::RENDER_PASS: 716 case cc::DrawQuad::RENDER_PASS:
695 largest = std::max(largest, sizeof(cc::RenderPassDrawQuad)); 717 largest = std::max(largest, sizeof(cc::RenderPassDrawQuad));
696 break; 718 break;
697 case cc::DrawQuad::SOLID_COLOR: 719 case cc::DrawQuad::SOLID_COLOR:
698 largest = std::max(largest, sizeof(cc::SolidColorDrawQuad)); 720 largest = std::max(largest, sizeof(cc::SolidColorDrawQuad));
699 break; 721 break;
722 case cc::DrawQuad::SURFACE_CONTENT:
723 largest = std::max(largest, sizeof(cc::SurfaceDrawQuad));
724 break;
700 case cc::DrawQuad::TILED_CONTENT: 725 case cc::DrawQuad::TILED_CONTENT:
701 largest = std::max(largest, sizeof(cc::TileDrawQuad)); 726 largest = std::max(largest, sizeof(cc::TileDrawQuad));
702 break; 727 break;
703 case cc::DrawQuad::STREAM_VIDEO_CONTENT: 728 case cc::DrawQuad::STREAM_VIDEO_CONTENT:
704 largest = std::max(largest, sizeof(cc::StreamVideoDrawQuad)); 729 largest = std::max(largest, sizeof(cc::StreamVideoDrawQuad));
705 break; 730 break;
706 case cc::DrawQuad::YUV_VIDEO_CONTENT: 731 case cc::DrawQuad::YUV_VIDEO_CONTENT:
707 largest = std::max(largest, sizeof(cc::YUVVideoDrawQuad)); 732 largest = std::max(largest, sizeof(cc::YUVVideoDrawQuad));
708 break; 733 break;
709 case cc::DrawQuad::INVALID: 734 case cc::DrawQuad::INVALID:
710 break; 735 break;
711 default: 736 default:
712 done = true; 737 done = true;
713 } 738 }
714 } 739 }
715 740
716 // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever 741 // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever
717 // changes, then the ReserveSizeForRenderPassWrite() method needs to be 742 // changes, then the ReserveSizeForRenderPassWrite() method needs to be
718 // updated as well to use the new largest quad. 743 // updated as well to use the new largest quad.
719 EXPECT_EQ(sizeof(RenderPassDrawQuad), largest); 744 EXPECT_EQ(sizeof(RenderPassDrawQuad), largest);
720 } 745 }
721 746
722 } // namespace 747 } // namespace
723 } // namespace content 748 } // namespace content
OLDNEW
« no previous file with comments | « content/common/cc_messages.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698