OLD | NEW |
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 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background); | 48 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background); |
49 } | 49 } |
50 | 50 |
51 void Compare(const SharedQuadState* a, const SharedQuadState* b) { | 51 void Compare(const SharedQuadState* a, const SharedQuadState* b) { |
52 EXPECT_EQ(a->content_to_target_transform, b->content_to_target_transform); | 52 EXPECT_EQ(a->content_to_target_transform, b->content_to_target_transform); |
53 EXPECT_EQ(a->content_bounds, b->content_bounds); | 53 EXPECT_EQ(a->content_bounds, b->content_bounds); |
54 EXPECT_EQ(a->visible_content_rect, b->visible_content_rect); | 54 EXPECT_EQ(a->visible_content_rect, b->visible_content_rect); |
55 EXPECT_EQ(a->clip_rect, b->clip_rect); | 55 EXPECT_EQ(a->clip_rect, b->clip_rect); |
56 EXPECT_EQ(a->is_clipped, b->is_clipped); | 56 EXPECT_EQ(a->is_clipped, b->is_clipped); |
57 EXPECT_EQ(a->opacity, b->opacity); | 57 EXPECT_EQ(a->opacity, b->opacity); |
| 58 EXPECT_EQ(a->blend_mode, b->blend_mode); |
58 } | 59 } |
59 | 60 |
60 void Compare(const DrawQuad* a, const DrawQuad* b) { | 61 void Compare(const DrawQuad* a, const DrawQuad* b) { |
61 ASSERT_NE(DrawQuad::INVALID, a->material); | 62 ASSERT_NE(DrawQuad::INVALID, a->material); |
62 ASSERT_EQ(a->material, b->material); | 63 ASSERT_EQ(a->material, b->material); |
63 EXPECT_EQ(a->rect.ToString(), b->rect.ToString()); | 64 EXPECT_EQ(a->rect.ToString(), b->rect.ToString()); |
64 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString()); | 65 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString()); |
65 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString()); | 66 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString()); |
66 EXPECT_EQ(a->needs_blending, b->needs_blending); | 67 EXPECT_EQ(a->needs_blending, b->needs_blending); |
67 | 68 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 gfx::PointF arbitrary_pointf2(26.5f, -35.8f); | 224 gfx::PointF arbitrary_pointf2(26.5f, -35.8f); |
224 float arbitrary_float1 = 0.7f; | 225 float arbitrary_float1 = 0.7f; |
225 float arbitrary_float2 = 0.3f; | 226 float arbitrary_float2 = 0.3f; |
226 float arbitrary_float3 = 0.9f; | 227 float arbitrary_float3 = 0.9f; |
227 float arbitrary_float_array[4] = {3.5f, 6.2f, 9.3f, 12.3f}; | 228 float arbitrary_float_array[4] = {3.5f, 6.2f, 9.3f, 12.3f}; |
228 bool arbitrary_bool1 = true; | 229 bool arbitrary_bool1 = true; |
229 bool arbitrary_bool2 = false; | 230 bool arbitrary_bool2 = false; |
230 bool arbitrary_bool3 = true; | 231 bool arbitrary_bool3 = true; |
231 int arbitrary_int = 5; | 232 int arbitrary_int = 5; |
232 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58); | 233 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58); |
| 234 SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode; |
| 235 SkXfermode::Mode arbitrary_blend_mode2 = SkXfermode::kLighten_Mode; |
| 236 SkXfermode::Mode arbitrary_blend_mode3 = SkXfermode::kOverlay_Mode; |
233 IOSurfaceDrawQuad::Orientation arbitrary_orientation = | 237 IOSurfaceDrawQuad::Orientation arbitrary_orientation = |
234 IOSurfaceDrawQuad::UNFLIPPED; | 238 IOSurfaceDrawQuad::UNFLIPPED; |
235 RenderPass::Id arbitrary_id(10, 14); | 239 RenderPass::Id arbitrary_id(10, 14); |
236 ResourceProvider::ResourceId arbitrary_resourceid1 = 55; | 240 ResourceProvider::ResourceId arbitrary_resourceid1 = 55; |
237 ResourceProvider::ResourceId arbitrary_resourceid2 = 47; | 241 ResourceProvider::ResourceId arbitrary_resourceid2 = 47; |
238 ResourceProvider::ResourceId arbitrary_resourceid3 = 23; | 242 ResourceProvider::ResourceId arbitrary_resourceid3 = 23; |
239 ResourceProvider::ResourceId arbitrary_resourceid4 = 16; | 243 ResourceProvider::ResourceId arbitrary_resourceid4 = 16; |
240 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); | 244 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); |
241 | 245 |
242 FilterOperations arbitrary_filters1; | 246 FilterOperations arbitrary_filters1; |
243 arbitrary_filters1.Append(FilterOperation::CreateGrayscaleFilter( | 247 arbitrary_filters1.Append(FilterOperation::CreateGrayscaleFilter( |
244 arbitrary_float1)); | 248 arbitrary_float1)); |
245 skia::RefPtr<SkImageFilter> arbitrary_filter = skia::AdoptRef( | 249 skia::RefPtr<SkImageFilter> arbitrary_filter = skia::AdoptRef( |
246 new SkBlurImageFilter(arbitrary_sigma, arbitrary_sigma)); | 250 new SkBlurImageFilter(arbitrary_sigma, arbitrary_sigma)); |
247 arbitrary_filters1.Append( | 251 arbitrary_filters1.Append( |
248 cc::FilterOperation::CreateReferenceFilter(arbitrary_filter)); | 252 cc::FilterOperation::CreateReferenceFilter(arbitrary_filter)); |
249 | 253 |
250 FilterOperations arbitrary_filters2; | 254 FilterOperations arbitrary_filters2; |
251 arbitrary_filters2.Append(FilterOperation::CreateBrightnessFilter( | 255 arbitrary_filters2.Append(FilterOperation::CreateBrightnessFilter( |
252 arbitrary_float2)); | 256 arbitrary_float2)); |
253 | 257 |
254 scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create(); | 258 scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create(); |
255 shared_state1_in->SetAll(arbitrary_matrix, | 259 shared_state1_in->SetAll(arbitrary_matrix, |
256 arbitrary_size1, | 260 arbitrary_size1, |
257 arbitrary_rect1, | 261 arbitrary_rect1, |
258 arbitrary_rect2, | 262 arbitrary_rect2, |
259 arbitrary_bool1, | 263 arbitrary_bool1, |
260 arbitrary_float1); | 264 arbitrary_float1, |
| 265 arbitrary_blend_mode1); |
261 scoped_ptr<SharedQuadState> shared_state1_cmp = shared_state1_in->Copy(); | 266 scoped_ptr<SharedQuadState> shared_state1_cmp = shared_state1_in->Copy(); |
262 | 267 |
263 scoped_ptr<CheckerboardDrawQuad> checkerboard_in = | 268 scoped_ptr<CheckerboardDrawQuad> checkerboard_in = |
264 CheckerboardDrawQuad::Create(); | 269 CheckerboardDrawQuad::Create(); |
265 checkerboard_in->SetAll(shared_state1_in.get(), | 270 checkerboard_in->SetAll(shared_state1_in.get(), |
266 arbitrary_rect1, | 271 arbitrary_rect1, |
267 arbitrary_rect2_inside_rect1, | 272 arbitrary_rect2_inside_rect1, |
268 arbitrary_rect1_inside_rect1, | 273 arbitrary_rect1_inside_rect1, |
269 arbitrary_bool1, | 274 arbitrary_bool1, |
270 arbitrary_color); | 275 arbitrary_color); |
(...skipping 24 matching lines...) Expand all Loading... |
295 arbitrary_orientation); | 300 arbitrary_orientation); |
296 scoped_ptr<DrawQuad> iosurface_cmp = iosurface_in->Copy( | 301 scoped_ptr<DrawQuad> iosurface_cmp = iosurface_in->Copy( |
297 iosurface_in->shared_quad_state); | 302 iosurface_in->shared_quad_state); |
298 | 303 |
299 scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create(); | 304 scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create(); |
300 shared_state2_in->SetAll(arbitrary_matrix, | 305 shared_state2_in->SetAll(arbitrary_matrix, |
301 arbitrary_size2, | 306 arbitrary_size2, |
302 arbitrary_rect2, | 307 arbitrary_rect2, |
303 arbitrary_rect3, | 308 arbitrary_rect3, |
304 arbitrary_bool1, | 309 arbitrary_bool1, |
305 arbitrary_float2); | 310 arbitrary_float2, |
| 311 arbitrary_blend_mode2); |
306 scoped_ptr<SharedQuadState> shared_state2_cmp = shared_state2_in->Copy(); | 312 scoped_ptr<SharedQuadState> shared_state2_cmp = shared_state2_in->Copy(); |
307 | 313 |
308 scoped_ptr<RenderPassDrawQuad> renderpass_in = | 314 scoped_ptr<RenderPassDrawQuad> renderpass_in = |
309 RenderPassDrawQuad::Create(); | 315 RenderPassDrawQuad::Create(); |
310 renderpass_in->SetAll(shared_state2_in.get(), | 316 renderpass_in->SetAll(shared_state2_in.get(), |
311 arbitrary_rect1, | 317 arbitrary_rect1, |
312 arbitrary_rect2_inside_rect1, | 318 arbitrary_rect2_inside_rect1, |
313 arbitrary_rect1_inside_rect1, | 319 arbitrary_rect1_inside_rect1, |
314 arbitrary_bool1, | 320 arbitrary_bool1, |
315 arbitrary_id, | 321 arbitrary_id, |
316 arbitrary_bool2, | 322 arbitrary_bool2, |
317 arbitrary_resourceid2, | 323 arbitrary_resourceid2, |
318 arbitrary_rect1, | 324 arbitrary_rect1, |
319 arbitrary_rectf1, | 325 arbitrary_rectf1, |
320 arbitrary_filters1, | 326 arbitrary_filters1, |
321 arbitrary_filters2); | 327 arbitrary_filters2); |
322 scoped_ptr<RenderPassDrawQuad> renderpass_cmp = renderpass_in->Copy( | 328 scoped_ptr<RenderPassDrawQuad> renderpass_cmp = renderpass_in->Copy( |
323 renderpass_in->shared_quad_state, renderpass_in->render_pass_id); | 329 renderpass_in->shared_quad_state, renderpass_in->render_pass_id); |
324 | 330 |
325 scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create(); | 331 scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create(); |
326 shared_state3_in->SetAll(arbitrary_matrix, | 332 shared_state3_in->SetAll(arbitrary_matrix, |
327 arbitrary_size3, | 333 arbitrary_size3, |
328 arbitrary_rect3, | 334 arbitrary_rect3, |
329 arbitrary_rect1, | 335 arbitrary_rect1, |
330 arbitrary_bool1, | 336 arbitrary_bool1, |
331 arbitrary_float3); | 337 arbitrary_float3, |
| 338 arbitrary_blend_mode3); |
332 scoped_ptr<SharedQuadState> shared_state3_cmp = shared_state3_in->Copy(); | 339 scoped_ptr<SharedQuadState> shared_state3_cmp = shared_state3_in->Copy(); |
333 | 340 |
334 scoped_ptr<SolidColorDrawQuad> solidcolor_in = | 341 scoped_ptr<SolidColorDrawQuad> solidcolor_in = |
335 SolidColorDrawQuad::Create(); | 342 SolidColorDrawQuad::Create(); |
336 solidcolor_in->SetAll(shared_state3_in.get(), | 343 solidcolor_in->SetAll(shared_state3_in.get(), |
337 arbitrary_rect3, | 344 arbitrary_rect3, |
338 arbitrary_rect1_inside_rect3, | 345 arbitrary_rect1_inside_rect3, |
339 arbitrary_rect2_inside_rect3, | 346 arbitrary_rect2_inside_rect3, |
340 arbitrary_bool1, | 347 arbitrary_bool1, |
341 arbitrary_color, | 348 arbitrary_color, |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 | 504 |
498 scoped_ptr<RenderPass> pass_in = RenderPass::Create(); | 505 scoped_ptr<RenderPass> pass_in = RenderPass::Create(); |
499 pass_in->SetAll(RenderPass::Id(1, 1), | 506 pass_in->SetAll(RenderPass::Id(1, 1), |
500 gfx::Rect(100, 100), | 507 gfx::Rect(100, 100), |
501 gfx::RectF(), | 508 gfx::RectF(), |
502 gfx::Transform(), | 509 gfx::Transform(), |
503 false); | 510 false); |
504 | 511 |
505 // The first SharedQuadState is used. | 512 // The first SharedQuadState is used. |
506 scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create(); | 513 scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create(); |
507 shared_state1_in->SetAll( | 514 shared_state1_in->SetAll(gfx::Transform(), |
508 gfx::Transform(), gfx::Size(1, 1), gfx::Rect(), gfx::Rect(), false, 1.f); | 515 gfx::Size(1, 1), |
| 516 gfx::Rect(), |
| 517 gfx::Rect(), |
| 518 false, |
| 519 1.f, |
| 520 SkXfermode::kSrcOver_Mode); |
509 | 521 |
510 quad = CheckerboardDrawQuad::Create(); | 522 quad = CheckerboardDrawQuad::Create(); |
511 quad->SetAll(shared_state1_in.get(), | 523 quad->SetAll(shared_state1_in.get(), |
512 gfx::Rect(10, 10), | 524 gfx::Rect(10, 10), |
513 gfx::Rect(10, 10), | 525 gfx::Rect(10, 10), |
514 gfx::Rect(10, 10), | 526 gfx::Rect(10, 10), |
515 false, | 527 false, |
516 SK_ColorRED); | 528 SK_ColorRED); |
517 pass_in->quad_list.push_back(quad.PassAs<DrawQuad>()); | 529 pass_in->quad_list.push_back(quad.PassAs<DrawQuad>()); |
518 | 530 |
519 // The second and third SharedQuadStates are not used. | 531 // The second and third SharedQuadStates are not used. |
520 scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create(); | 532 scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create(); |
521 shared_state2_in->SetAll( | 533 shared_state2_in->SetAll(gfx::Transform(), |
522 gfx::Transform(), gfx::Size(2, 2), gfx::Rect(), gfx::Rect(), false, 1.f); | 534 gfx::Size(2, 2), |
| 535 gfx::Rect(), |
| 536 gfx::Rect(), |
| 537 false, |
| 538 1.f, |
| 539 SkXfermode::kSrcOver_Mode); |
523 | 540 |
524 scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create(); | 541 scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create(); |
525 shared_state3_in->SetAll( | 542 shared_state3_in->SetAll(gfx::Transform(), |
526 gfx::Transform(), gfx::Size(3, 3), gfx::Rect(), gfx::Rect(), false, 1.f); | 543 gfx::Size(3, 3), |
| 544 gfx::Rect(), |
| 545 gfx::Rect(), |
| 546 false, |
| 547 1.f, |
| 548 SkXfermode::kSrcOver_Mode); |
527 | 549 |
528 // The fourth SharedQuadState is used. | 550 // The fourth SharedQuadState is used. |
529 scoped_ptr<SharedQuadState> shared_state4_in = SharedQuadState::Create(); | 551 scoped_ptr<SharedQuadState> shared_state4_in = SharedQuadState::Create(); |
530 shared_state4_in->SetAll( | 552 shared_state4_in->SetAll(gfx::Transform(), |
531 gfx::Transform(), gfx::Size(4, 4), gfx::Rect(), gfx::Rect(), false, 1.f); | 553 gfx::Size(4, 4), |
| 554 gfx::Rect(), |
| 555 gfx::Rect(), |
| 556 false, |
| 557 1.f, |
| 558 SkXfermode::kSrcOver_Mode); |
532 | 559 |
533 quad = CheckerboardDrawQuad::Create(); | 560 quad = CheckerboardDrawQuad::Create(); |
534 quad->SetAll(shared_state4_in.get(), | 561 quad->SetAll(shared_state4_in.get(), |
535 gfx::Rect(10, 10), | 562 gfx::Rect(10, 10), |
536 gfx::Rect(10, 10), | 563 gfx::Rect(10, 10), |
537 gfx::Rect(10, 10), | 564 gfx::Rect(10, 10), |
538 false, | 565 false, |
539 SK_ColorRED); | 566 SK_ColorRED); |
540 pass_in->quad_list.push_back(quad.PassAs<DrawQuad>()); | 567 pass_in->quad_list.push_back(quad.PassAs<DrawQuad>()); |
541 | 568 |
542 // The fifth is not used again. | 569 // The fifth is not used again. |
543 scoped_ptr<SharedQuadState> shared_state5_in = SharedQuadState::Create(); | 570 scoped_ptr<SharedQuadState> shared_state5_in = SharedQuadState::Create(); |
544 shared_state5_in->SetAll( | 571 shared_state5_in->SetAll(gfx::Transform(), |
545 gfx::Transform(), gfx::Size(5, 5), gfx::Rect(), gfx::Rect(), false, 1.f); | 572 gfx::Size(5, 5), |
| 573 gfx::Rect(), |
| 574 gfx::Rect(), |
| 575 false, |
| 576 1.f, |
| 577 SkXfermode::kSrcOver_Mode); |
546 | 578 |
547 pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass()); | 579 pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass()); |
548 pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass()); | 580 pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass()); |
549 pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass()); | 581 pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass()); |
550 pass_in->shared_quad_state_list.push_back(shared_state4_in.Pass()); | 582 pass_in->shared_quad_state_list.push_back(shared_state4_in.Pass()); |
551 pass_in->shared_quad_state_list.push_back(shared_state5_in.Pass()); | 583 pass_in->shared_quad_state_list.push_back(shared_state5_in.Pass()); |
552 | 584 |
553 // 5 SharedQuadStates go in. | 585 // 5 SharedQuadStates go in. |
554 ASSERT_EQ(5u, pass_in->shared_quad_state_list.size()); | 586 ASSERT_EQ(5u, pass_in->shared_quad_state_list.size()); |
555 ASSERT_EQ(2u, pass_in->quad_list.size()); | 587 ASSERT_EQ(2u, pass_in->quad_list.size()); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
682 } | 714 } |
683 | 715 |
684 // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever | 716 // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever |
685 // changes, then the ReserveSizeForRenderPassWrite() method needs to be | 717 // changes, then the ReserveSizeForRenderPassWrite() method needs to be |
686 // updated as well to use the new largest quad. | 718 // updated as well to use the new largest quad. |
687 EXPECT_EQ(sizeof(RenderPassDrawQuad), largest); | 719 EXPECT_EQ(sizeof(RenderPassDrawQuad), largest); |
688 } | 720 } |
689 | 721 |
690 } // namespace | 722 } // namespace |
691 } // namespace content | 723 } // namespace content |
OLD | NEW |