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

Side by Side Diff: ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm

Issue 1910633004: Mac video: Enable AVSampleBufferDisplayLayer for h264 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 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 | « ui/accelerated_widget_mac/ca_layer_tree_mac.mm ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 <memory> 5 #include <memory>
6 6
7 #include "base/mac/sdk_forward_declarations.h" 7 #include "base/mac/sdk_forward_declarations.h"
8 #include "gpu/GLES2/gl2extchromium.h" 8 #include "gpu/GLES2/gl2extchromium.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/skia/include/core/SkColor.h" 10 #include "third_party/skia/include/core/SkColor.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 48
49 // Validate the initial values. 49 // Validate the initial values.
50 { 50 {
51 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 51 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
52 result = new_ca_layer_tree->ScheduleCALayer( 52 result = new_ca_layer_tree->ScheduleCALayer(
53 is_clipped, 53 is_clipped,
54 clip_rect, 54 clip_rect,
55 sorting_context_id, 55 sorting_context_id,
56 transform, 56 transform,
57 io_surface, 57 io_surface,
58 nullptr,
58 contents_rect, 59 contents_rect,
59 rect, 60 rect,
60 background_color, 61 background_color,
61 edge_aa_mask, 62 edge_aa_mask,
62 opacity); 63 opacity);
63 EXPECT_TRUE(result); 64 EXPECT_TRUE(result);
64 new_ca_layer_tree->CommitScheduledCALayers( 65 new_ca_layer_tree->CommitScheduledCALayers(
65 superlayer_, std::move(ca_layer_tree), scale_factor); 66 superlayer_, std::move(ca_layer_tree), scale_factor);
66 std::swap(new_ca_layer_tree, ca_layer_tree); 67 std::swap(new_ca_layer_tree, ca_layer_tree);
67 68
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // Update just the clip rect and re-commit. 107 // Update just the clip rect and re-commit.
107 { 108 {
108 clip_rect = gfx::Rect(4, 8, 16, 32); 109 clip_rect = gfx::Rect(4, 8, 16, 32);
109 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 110 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
110 result = new_ca_layer_tree->ScheduleCALayer( 111 result = new_ca_layer_tree->ScheduleCALayer(
111 is_clipped, 112 is_clipped,
112 clip_rect, 113 clip_rect,
113 sorting_context_id, 114 sorting_context_id,
114 transform, 115 transform,
115 io_surface, 116 io_surface,
117 nullptr,
116 contents_rect, 118 contents_rect,
117 rect, 119 rect,
118 background_color, 120 background_color,
119 edge_aa_mask, 121 edge_aa_mask,
120 opacity); 122 opacity);
121 EXPECT_TRUE(result); 123 EXPECT_TRUE(result);
122 new_ca_layer_tree->CommitScheduledCALayers( 124 new_ca_layer_tree->CommitScheduledCALayers(
123 superlayer_, std::move(ca_layer_tree), scale_factor); 125 superlayer_, std::move(ca_layer_tree), scale_factor);
124 std::swap(new_ca_layer_tree, ca_layer_tree); 126 std::swap(new_ca_layer_tree, ca_layer_tree);
125 127
(...skipping 21 matching lines...) Expand all
147 // Disable clipping and re-commit. 149 // Disable clipping and re-commit.
148 { 150 {
149 is_clipped = false; 151 is_clipped = false;
150 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 152 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
151 result = new_ca_layer_tree->ScheduleCALayer( 153 result = new_ca_layer_tree->ScheduleCALayer(
152 is_clipped, 154 is_clipped,
153 clip_rect, 155 clip_rect,
154 sorting_context_id, 156 sorting_context_id,
155 transform, 157 transform,
156 io_surface, 158 io_surface,
159 nullptr,
157 contents_rect, 160 contents_rect,
158 rect, 161 rect,
159 background_color, 162 background_color,
160 edge_aa_mask, 163 edge_aa_mask,
161 opacity); 164 opacity);
162 EXPECT_TRUE(result); 165 EXPECT_TRUE(result);
163 new_ca_layer_tree->CommitScheduledCALayers( 166 new_ca_layer_tree->CommitScheduledCALayers(
164 superlayer_, std::move(ca_layer_tree), scale_factor); 167 superlayer_, std::move(ca_layer_tree), scale_factor);
165 std::swap(new_ca_layer_tree, ca_layer_tree); 168 std::swap(new_ca_layer_tree, ca_layer_tree);
166 169
(...skipping 18 matching lines...) Expand all
185 // Change the transform and re-commit. 188 // Change the transform and re-commit.
186 { 189 {
187 transform.Translate(5, 5); 190 transform.Translate(5, 5);
188 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 191 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
189 result = new_ca_layer_tree->ScheduleCALayer( 192 result = new_ca_layer_tree->ScheduleCALayer(
190 is_clipped, 193 is_clipped,
191 clip_rect, 194 clip_rect,
192 sorting_context_id, 195 sorting_context_id,
193 transform, 196 transform,
194 io_surface, 197 io_surface,
198 nullptr,
195 contents_rect, 199 contents_rect,
196 rect, 200 rect,
197 background_color, 201 background_color,
198 edge_aa_mask, 202 edge_aa_mask,
199 opacity); 203 opacity);
200 EXPECT_TRUE(result); 204 EXPECT_TRUE(result);
201 new_ca_layer_tree->CommitScheduledCALayers( 205 new_ca_layer_tree->CommitScheduledCALayers(
202 superlayer_, std::move(ca_layer_tree), scale_factor); 206 superlayer_, std::move(ca_layer_tree), scale_factor);
203 std::swap(new_ca_layer_tree, ca_layer_tree); 207 std::swap(new_ca_layer_tree, ca_layer_tree);
204 208
(...skipping 16 matching lines...) Expand all
221 // Change the edge antialiasing mask and commit. 225 // Change the edge antialiasing mask and commit.
222 { 226 {
223 edge_aa_mask = GL_CA_LAYER_EDGE_TOP_CHROMIUM; 227 edge_aa_mask = GL_CA_LAYER_EDGE_TOP_CHROMIUM;
224 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 228 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
225 result = new_ca_layer_tree->ScheduleCALayer( 229 result = new_ca_layer_tree->ScheduleCALayer(
226 is_clipped, 230 is_clipped,
227 clip_rect, 231 clip_rect,
228 sorting_context_id, 232 sorting_context_id,
229 transform, 233 transform,
230 io_surface, 234 io_surface,
235 nullptr,
231 contents_rect, 236 contents_rect,
232 rect, 237 rect,
233 background_color, 238 background_color,
234 edge_aa_mask, 239 edge_aa_mask,
235 opacity); 240 opacity);
236 EXPECT_TRUE(result); 241 EXPECT_TRUE(result);
237 new_ca_layer_tree->CommitScheduledCALayers( 242 new_ca_layer_tree->CommitScheduledCALayers(
238 superlayer_, std::move(ca_layer_tree), scale_factor); 243 superlayer_, std::move(ca_layer_tree), scale_factor);
239 std::swap(new_ca_layer_tree, ca_layer_tree); 244 std::swap(new_ca_layer_tree, ca_layer_tree);
240 245
(...skipping 14 matching lines...) Expand all
255 260
256 // Change the contents and commit. 261 // Change the contents and commit.
257 { 262 {
258 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 263 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
259 result = new_ca_layer_tree->ScheduleCALayer( 264 result = new_ca_layer_tree->ScheduleCALayer(
260 is_clipped, 265 is_clipped,
261 clip_rect, 266 clip_rect,
262 sorting_context_id, 267 sorting_context_id,
263 transform, 268 transform,
264 nullptr, 269 nullptr,
270 nullptr,
265 contents_rect, 271 contents_rect,
266 rect, 272 rect,
267 background_color, 273 background_color,
268 edge_aa_mask, 274 edge_aa_mask,
269 opacity); 275 opacity);
270 EXPECT_TRUE(result); 276 EXPECT_TRUE(result);
271 new_ca_layer_tree->CommitScheduledCALayers( 277 new_ca_layer_tree->CommitScheduledCALayers(
272 superlayer_, std::move(ca_layer_tree), scale_factor); 278 superlayer_, std::move(ca_layer_tree), scale_factor);
273 std::swap(new_ca_layer_tree, ca_layer_tree); 279 std::swap(new_ca_layer_tree, ca_layer_tree);
274 280
(...skipping 16 matching lines...) Expand all
291 // Change the rect size. 297 // Change the rect size.
292 { 298 {
293 rect = gfx::Rect(rect.origin(), gfx::Size(32, 16)); 299 rect = gfx::Rect(rect.origin(), gfx::Size(32, 16));
294 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 300 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
295 result = new_ca_layer_tree->ScheduleCALayer( 301 result = new_ca_layer_tree->ScheduleCALayer(
296 is_clipped, 302 is_clipped,
297 clip_rect, 303 clip_rect,
298 sorting_context_id, 304 sorting_context_id,
299 transform, 305 transform,
300 nullptr, 306 nullptr,
307 nullptr,
301 contents_rect, 308 contents_rect,
302 rect, 309 rect,
303 background_color, 310 background_color,
304 edge_aa_mask, 311 edge_aa_mask,
305 opacity); 312 opacity);
306 EXPECT_TRUE(result); 313 EXPECT_TRUE(result);
307 new_ca_layer_tree->CommitScheduledCALayers( 314 new_ca_layer_tree->CommitScheduledCALayers(
308 superlayer_, std::move(ca_layer_tree), scale_factor); 315 superlayer_, std::move(ca_layer_tree), scale_factor);
309 std::swap(new_ca_layer_tree, ca_layer_tree); 316 std::swap(new_ca_layer_tree, ca_layer_tree);
310 317
(...skipping 16 matching lines...) Expand all
327 // Change the rect position. 334 // Change the rect position.
328 { 335 {
329 rect = gfx::Rect(gfx::Point(16, 4), rect.size()); 336 rect = gfx::Rect(gfx::Point(16, 4), rect.size());
330 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 337 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
331 result = new_ca_layer_tree->ScheduleCALayer( 338 result = new_ca_layer_tree->ScheduleCALayer(
332 is_clipped, 339 is_clipped,
333 clip_rect, 340 clip_rect,
334 sorting_context_id, 341 sorting_context_id,
335 transform, 342 transform,
336 nullptr, 343 nullptr,
344 nullptr,
337 contents_rect, 345 contents_rect,
338 rect, 346 rect,
339 background_color, 347 background_color,
340 edge_aa_mask, 348 edge_aa_mask,
341 opacity); 349 opacity);
342 EXPECT_TRUE(result); 350 EXPECT_TRUE(result);
343 new_ca_layer_tree->CommitScheduledCALayers( 351 new_ca_layer_tree->CommitScheduledCALayers(
344 superlayer_, std::move(ca_layer_tree), scale_factor); 352 superlayer_, std::move(ca_layer_tree), scale_factor);
345 std::swap(new_ca_layer_tree, ca_layer_tree); 353 std::swap(new_ca_layer_tree, ca_layer_tree);
346 354
(...skipping 16 matching lines...) Expand all
363 // Change the opacity. 371 // Change the opacity.
364 { 372 {
365 opacity = 1.0f; 373 opacity = 1.0f;
366 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 374 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
367 result = new_ca_layer_tree->ScheduleCALayer( 375 result = new_ca_layer_tree->ScheduleCALayer(
368 is_clipped, 376 is_clipped,
369 clip_rect, 377 clip_rect,
370 sorting_context_id, 378 sorting_context_id,
371 transform, 379 transform,
372 nullptr, 380 nullptr,
381 nullptr,
373 contents_rect, 382 contents_rect,
374 rect, 383 rect,
375 background_color, 384 background_color,
376 edge_aa_mask, 385 edge_aa_mask,
377 opacity); 386 opacity);
378 EXPECT_TRUE(result); 387 EXPECT_TRUE(result);
379 new_ca_layer_tree->CommitScheduledCALayers( 388 new_ca_layer_tree->CommitScheduledCALayers(
380 superlayer_, std::move(ca_layer_tree), scale_factor); 389 superlayer_, std::move(ca_layer_tree), scale_factor);
381 std::swap(new_ca_layer_tree, ca_layer_tree); 390 std::swap(new_ca_layer_tree, ca_layer_tree);
382 391
(...skipping 15 matching lines...) Expand all
398 // Add the clipping and IOSurface contents back. 407 // Add the clipping and IOSurface contents back.
399 { 408 {
400 is_clipped = true; 409 is_clipped = true;
401 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 410 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
402 result = new_ca_layer_tree->ScheduleCALayer( 411 result = new_ca_layer_tree->ScheduleCALayer(
403 is_clipped, 412 is_clipped,
404 clip_rect, 413 clip_rect,
405 sorting_context_id, 414 sorting_context_id,
406 transform, 415 transform,
407 io_surface, 416 io_surface,
417 nullptr,
408 contents_rect, 418 contents_rect,
409 rect, 419 rect,
410 background_color, 420 background_color,
411 edge_aa_mask, 421 edge_aa_mask,
412 opacity); 422 opacity);
413 EXPECT_TRUE(result); 423 EXPECT_TRUE(result);
414 new_ca_layer_tree->CommitScheduledCALayers( 424 new_ca_layer_tree->CommitScheduledCALayers(
415 superlayer_, std::move(ca_layer_tree), scale_factor); 425 superlayer_, std::move(ca_layer_tree), scale_factor);
416 std::swap(new_ca_layer_tree, ca_layer_tree); 426 std::swap(new_ca_layer_tree, ca_layer_tree);
417 427
(...skipping 16 matching lines...) Expand all
434 // Change the scale factor. This should result in a new tree being created. 444 // Change the scale factor. This should result in a new tree being created.
435 { 445 {
436 scale_factor = 2.0f; 446 scale_factor = 2.0f;
437 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 447 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
438 result = new_ca_layer_tree->ScheduleCALayer( 448 result = new_ca_layer_tree->ScheduleCALayer(
439 is_clipped, 449 is_clipped,
440 clip_rect, 450 clip_rect,
441 sorting_context_id, 451 sorting_context_id,
442 transform, 452 transform,
443 io_surface, 453 io_surface,
454 nullptr,
444 contents_rect, 455 contents_rect,
445 rect, 456 rect,
446 background_color, 457 background_color,
447 edge_aa_mask, 458 edge_aa_mask,
448 opacity); 459 opacity);
449 EXPECT_TRUE(result); 460 EXPECT_TRUE(result);
450 new_ca_layer_tree->CommitScheduledCALayers( 461 new_ca_layer_tree->CommitScheduledCALayers(
451 superlayer_, std::move(ca_layer_tree), scale_factor); 462 superlayer_, std::move(ca_layer_tree), scale_factor);
452 std::swap(new_ca_layer_tree, ca_layer_tree); 463 std::swap(new_ca_layer_tree, ca_layer_tree);
453 464
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 540
530 // Schedule and commit the layers. 541 // Schedule and commit the layers.
531 std::unique_ptr<ui::CALayerTree> ca_layer_tree(new ui::CALayerTree); 542 std::unique_ptr<ui::CALayerTree> ca_layer_tree(new ui::CALayerTree);
532 for (size_t i = 0; i < 5; ++i) { 543 for (size_t i = 0; i < 5; ++i) {
533 bool result = ca_layer_tree->ScheduleCALayer( 544 bool result = ca_layer_tree->ScheduleCALayer(
534 is_clipped, 545 is_clipped,
535 clip_rect, 546 clip_rect,
536 sorting_context_id, 547 sorting_context_id,
537 transforms[i], 548 transforms[i],
538 io_surfaces[i], 549 io_surfaces[i],
550 nullptr,
539 contents_rect, 551 contents_rect,
540 rect, 552 rect,
541 background_color, 553 background_color,
542 edge_aa_mask, 554 edge_aa_mask,
543 opacity); 555 opacity);
544 EXPECT_TRUE(result); 556 EXPECT_TRUE(result);
545 } 557 }
546 ca_layer_tree->CommitScheduledCALayers(superlayer_, nullptr, scale_factor); 558 ca_layer_tree->CommitScheduledCALayers(superlayer_, nullptr, scale_factor);
547 559
548 // Validate the root layer. 560 // Validate the root layer.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 626
615 // Schedule and commit the layers. 627 // Schedule and commit the layers.
616 std::unique_ptr<ui::CALayerTree> ca_layer_tree(new ui::CALayerTree); 628 std::unique_ptr<ui::CALayerTree> ca_layer_tree(new ui::CALayerTree);
617 for (size_t i = 0; i < 3; ++i) { 629 for (size_t i = 0; i < 3; ++i) {
618 bool result = ca_layer_tree->ScheduleCALayer( 630 bool result = ca_layer_tree->ScheduleCALayer(
619 is_clipped, 631 is_clipped,
620 clip_rect, 632 clip_rect,
621 sorting_context_ids[i], 633 sorting_context_ids[i],
622 transform, 634 transform,
623 io_surfaces[i], 635 io_surfaces[i],
636 nullptr,
624 contents_rect, 637 contents_rect,
625 rect, 638 rect,
626 background_color, 639 background_color,
627 edge_aa_mask, 640 edge_aa_mask,
628 opacity); 641 opacity);
629 EXPECT_TRUE(result); 642 EXPECT_TRUE(result);
630 } 643 }
631 ca_layer_tree->CommitScheduledCALayers(superlayer_, nullptr, scale_factor); 644 ca_layer_tree->CommitScheduledCALayers(superlayer_, nullptr, scale_factor);
632 645
633 // Validate the root layer. 646 // Validate the root layer.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 // First send the various clip parameters to sorting context zero. This is 700 // First send the various clip parameters to sorting context zero. This is
688 // legitimate. 701 // legitimate.
689 for (size_t i = 0; i < 3; ++i) { 702 for (size_t i = 0; i < 3; ++i) {
690 int sorting_context_id = 0; 703 int sorting_context_id = 0;
691 bool result = ca_layer_tree->ScheduleCALayer( 704 bool result = ca_layer_tree->ScheduleCALayer(
692 is_clippeds[i], 705 is_clippeds[i],
693 clip_rects[i], 706 clip_rects[i],
694 sorting_context_id, 707 sorting_context_id,
695 transform, 708 transform,
696 io_surface, 709 io_surface,
710 nullptr,
697 contents_rect, 711 contents_rect,
698 rect, 712 rect,
699 background_color, 713 background_color,
700 edge_aa_mask, 714 edge_aa_mask,
701 opacity); 715 opacity);
702 EXPECT_TRUE(result); 716 EXPECT_TRUE(result);
703 } 717 }
704 // Next send the various clip parameters to a non-zero sorting context. This 718 // Next send the various clip parameters to a non-zero sorting context. This
705 // will fail when we try to change the clip within the sorting context. 719 // will fail when we try to change the clip within the sorting context.
706 for (size_t i = 0; i < 3; ++i) { 720 for (size_t i = 0; i < 3; ++i) {
707 int sorting_context_id = 3; 721 int sorting_context_id = 3;
708 bool result = ca_layer_tree->ScheduleCALayer( 722 bool result = ca_layer_tree->ScheduleCALayer(
709 is_clippeds[i], 723 is_clippeds[i],
710 clip_rects[i], 724 clip_rects[i],
711 sorting_context_id, 725 sorting_context_id,
712 transform, 726 transform,
713 io_surface, 727 io_surface,
728 nullptr,
714 contents_rect, 729 contents_rect,
715 rect, 730 rect,
716 background_color, 731 background_color,
717 edge_aa_mask, 732 edge_aa_mask,
718 opacity); 733 opacity);
719 if (i == 0) 734 if (i == 0)
720 EXPECT_TRUE(result); 735 EXPECT_TRUE(result);
721 else 736 else
722 EXPECT_FALSE(result); 737 EXPECT_FALSE(result);
723 } 738 }
724 // Try once more with the original clip and verify it works. 739 // Try once more with the original clip and verify it works.
725 { 740 {
726 int sorting_context_id = 3; 741 int sorting_context_id = 3;
727 bool result = ca_layer_tree->ScheduleCALayer( 742 bool result = ca_layer_tree->ScheduleCALayer(
728 is_clippeds[0], 743 is_clippeds[0],
729 clip_rects[0], 744 clip_rects[0],
730 sorting_context_id, 745 sorting_context_id,
731 transform, 746 transform,
732 io_surface, 747 io_surface,
748 nullptr,
733 contents_rect, 749 contents_rect,
734 rect, 750 rect,
735 background_color, 751 background_color,
736 edge_aa_mask, 752 edge_aa_mask,
737 opacity); 753 opacity);
738 EXPECT_TRUE(result); 754 EXPECT_TRUE(result);
739 } 755 }
740 } 756 }
741 757
742 // Test updating each layer's properties. 758 // Test updating each layer's properties.
743 TEST_F(CALayerTreeTest, AVLayer) { 759 TEST_F(CALayerTreeTest, AVLayer) {
744 base::ScopedCFTypeRef<IOSurfaceRef> io_surface(gfx::CreateIOSurface( 760 base::ScopedCFTypeRef<IOSurfaceRef> io_surface(gfx::CreateIOSurface(
745 gfx::Size(256, 256), gfx::BufferFormat::YUV_420_BIPLANAR)); 761 gfx::Size(256, 256), gfx::BufferFormat::YUV_420_BIPLANAR));
762
746 bool is_clipped = true; 763 bool is_clipped = true;
747 gfx::Rect clip_rect(2, 4, 8, 16); 764 gfx::Rect clip_rect(2, 4, 8, 16);
748 int sorting_context_id = 0; 765 int sorting_context_id = 0;
749 gfx::Transform transform; 766 gfx::Transform transform;
750 gfx::RectF contents_rect(0.0f, 0.0f, 1.0f, 1.0f); 767 gfx::RectF contents_rect(0.0f, 0.0f, 1.0f, 1.0f);
751 gfx::Rect rect(16, 32, 64, 128); 768 gfx::Rect rect(16, 32, 64, 128);
752 unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0); 769 unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0);
753 unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM; 770 unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM;
754 float opacity = 0.5f; 771 float opacity = 0.5f;
755 float scale_factor = 1.0f; 772 float scale_factor = 1.0f;
756 bool result = false; 773 bool result = false;
757 774
758 std::unique_ptr<ui::CALayerTree> ca_layer_tree; 775 std::unique_ptr<ui::CALayerTree> ca_layer_tree;
759 CALayer* root_layer = nil; 776 CALayer* root_layer = nil;
760 CALayer* clip_and_sorting_layer = nil; 777 CALayer* clip_and_sorting_layer = nil;
761 CALayer* transform_layer = nil; 778 CALayer* transform_layer = nil;
762 CALayer* content_layer1 = nil; 779 CALayer* content_layer1 = nil;
763 CALayer* content_layer2 = nil; 780 CALayer* content_layer2 = nil;
764 CALayer* content_layer3 = nil; 781 CALayer* content_layer3 = nil;
765 782
766 // Validate the initial values. 783 // Validate the initial values.
767 { 784 {
768 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 785 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
769 result = new_ca_layer_tree->ScheduleCALayer( 786 result = new_ca_layer_tree->ScheduleCALayer(
770 is_clipped, clip_rect, sorting_context_id, transform, io_surface, 787 is_clipped,
771 contents_rect, rect, background_color, edge_aa_mask, opacity); 788 clip_rect,
789 sorting_context_id,
790 transform,
791 io_surface,
792 nullptr,
793 contents_rect,
794 rect, background_color,
795 edge_aa_mask,
796 opacity);
772 EXPECT_TRUE(result); 797 EXPECT_TRUE(result);
773 new_ca_layer_tree->CommitScheduledCALayers( 798 new_ca_layer_tree->CommitScheduledCALayers(
774 superlayer_, std::move(ca_layer_tree), scale_factor); 799 superlayer_, std::move(ca_layer_tree), scale_factor);
775 std::swap(new_ca_layer_tree, ca_layer_tree); 800 std::swap(new_ca_layer_tree, ca_layer_tree);
776 801
777 // Validate the tree structure. 802 // Validate the tree structure.
778 EXPECT_EQ(1u, [[superlayer_ sublayers] count]); 803 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
779 root_layer = [[superlayer_ sublayers] objectAtIndex:0]; 804 root_layer = [[superlayer_ sublayers] objectAtIndex:0];
780 EXPECT_EQ(1u, [[root_layer sublayers] count]); 805 EXPECT_EQ(1u, [[root_layer sublayers] count]);
781 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0]; 806 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
782 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]); 807 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
783 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0]; 808 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
784 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 809 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
785 content_layer1 = [[transform_layer sublayers] objectAtIndex:0]; 810 content_layer1 = [[transform_layer sublayers] objectAtIndex:0];
786 811
787 // Validate the content layer. 812 // Validate the content layer.
788 EXPECT_FALSE([content_layer1 813 EXPECT_FALSE([content_layer1
789 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]); 814 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
790 } 815 }
791 816
792 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256), 817 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256),
793 gfx::BufferFormat::YUV_420_BIPLANAR)); 818 gfx::BufferFormat::YUV_420_BIPLANAR));
794 819
795 // Pass another frame. 820 // Pass another frame.
796 { 821 {
797 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 822 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
798 result = new_ca_layer_tree->ScheduleCALayer( 823 result = new_ca_layer_tree->ScheduleCALayer(
799 is_clipped, clip_rect, sorting_context_id, transform, io_surface, 824 is_clipped,
800 contents_rect, rect, background_color, edge_aa_mask, opacity); 825 clip_rect,
826 sorting_context_id,
827 transform,
828 io_surface,
829 nullptr,
830 contents_rect,
831 rect,
832 background_color,
833 edge_aa_mask,
834 opacity);
801 EXPECT_TRUE(result); 835 EXPECT_TRUE(result);
802 new_ca_layer_tree->CommitScheduledCALayers( 836 new_ca_layer_tree->CommitScheduledCALayers(
803 superlayer_, std::move(ca_layer_tree), scale_factor); 837 superlayer_, std::move(ca_layer_tree), scale_factor);
804 std::swap(new_ca_layer_tree, ca_layer_tree); 838 std::swap(new_ca_layer_tree, ca_layer_tree);
805 839
806 // Validate the tree structure. 840 // Validate the tree structure.
807 EXPECT_EQ(1u, [[superlayer_ sublayers] count]); 841 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
808 root_layer = [[superlayer_ sublayers] objectAtIndex:0]; 842 root_layer = [[superlayer_ sublayers] objectAtIndex:0];
809 EXPECT_EQ(1u, [[root_layer sublayers] count]); 843 EXPECT_EQ(1u, [[root_layer sublayers] count]);
810 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0]; 844 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
811 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]); 845 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
812 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0]; 846 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
813 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 847 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
814 content_layer2 = [[transform_layer sublayers] objectAtIndex:0]; 848 content_layer2 = [[transform_layer sublayers] objectAtIndex:0];
815 849
816 // Validate the content layer. 850 // Validate the content layer.
817 EXPECT_FALSE([content_layer2 851 EXPECT_FALSE([content_layer2
818 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]); 852 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
819 EXPECT_EQ(content_layer2, content_layer1); 853 EXPECT_EQ(content_layer2, content_layer1);
820 } 854 }
821 855
822 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256), 856 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256),
823 gfx::BufferFormat::YUV_420_BIPLANAR)); 857 gfx::BufferFormat::YUV_420_BIPLANAR));
858 base::ScopedCFTypeRef<CVPixelBufferRef> cv_pixel_buffer;
859 CVPixelBufferCreateWithIOSurface(
860 nullptr, io_surface, nullptr, cv_pixel_buffer.InitializeInto());
861
862 // Pass a frame with a CVPixelBuffer
863 {
864 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
865 result = new_ca_layer_tree->ScheduleCALayer(
866 is_clipped,
867 clip_rect,
868 sorting_context_id,
869 transform,
870 io_surface,
871 cv_pixel_buffer,
872 contents_rect,
873 rect,
874 background_color,
875 edge_aa_mask,
876 opacity);
877 EXPECT_TRUE(result);
878 new_ca_layer_tree->CommitScheduledCALayers(
879 superlayer_, std::move(ca_layer_tree), scale_factor);
880 std::swap(new_ca_layer_tree, ca_layer_tree);
881
882 // Validate the tree structure.
883 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
884 root_layer = [[superlayer_ sublayers] objectAtIndex:0];
885 EXPECT_EQ(1u, [[root_layer sublayers] count]);
886 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
887 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
888 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
889 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
890 content_layer2 = [[transform_layer sublayers] objectAtIndex:0];
891
892 // Validate the content layer.
893 EXPECT_TRUE([content_layer2
894 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
895 EXPECT_NE(content_layer2, content_layer1);
896 }
897
898 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256),
899 gfx::BufferFormat::YUV_420_BIPLANAR));
900 cv_pixel_buffer.reset();
824 901
825 // Pass a frame that is clipped. 902 // Pass a frame that is clipped.
826 contents_rect = gfx::RectF(0, 0, 1, 0.9); 903 contents_rect = gfx::RectF(0, 0, 1, 0.9);
827 { 904 {
828 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree); 905 std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
829 result = new_ca_layer_tree->ScheduleCALayer( 906 result = new_ca_layer_tree->ScheduleCALayer(
830 is_clipped, clip_rect, sorting_context_id, transform, io_surface, 907 is_clipped,
831 contents_rect, rect, background_color, edge_aa_mask, opacity); 908 clip_rect,
909 sorting_context_id,
910 transform,
911 io_surface,
912 nullptr,
913 contents_rect,
914 rect,
915 background_color,
916 edge_aa_mask,
917 opacity);
832 EXPECT_TRUE(result); 918 EXPECT_TRUE(result);
833 new_ca_layer_tree->CommitScheduledCALayers( 919 new_ca_layer_tree->CommitScheduledCALayers(
834 superlayer_, std::move(ca_layer_tree), scale_factor); 920 superlayer_, std::move(ca_layer_tree), scale_factor);
835 std::swap(new_ca_layer_tree, ca_layer_tree); 921 std::swap(new_ca_layer_tree, ca_layer_tree);
836 922
837 // Validate the tree structure. 923 // Validate the tree structure.
838 EXPECT_EQ(1u, [[superlayer_ sublayers] count]); 924 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
839 root_layer = [[superlayer_ sublayers] objectAtIndex:0]; 925 root_layer = [[superlayer_ sublayers] objectAtIndex:0];
840 EXPECT_EQ(1u, [[root_layer sublayers] count]); 926 EXPECT_EQ(1u, [[root_layer sublayers] count]);
841 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0]; 927 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
842 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]); 928 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
843 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0]; 929 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
844 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 930 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
845 content_layer3 = [[transform_layer sublayers] objectAtIndex:0]; 931 content_layer3 = [[transform_layer sublayers] objectAtIndex:0];
846 932
847 // Validate the content layer. 933 // Validate the content layer.
848 EXPECT_FALSE([content_layer3 934 EXPECT_FALSE([content_layer3
849 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]); 935 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
850 EXPECT_EQ(content_layer3, content_layer2); 936 EXPECT_NE(content_layer3, content_layer2);
851 } 937 }
852 } 938 }
853 939
854 } // namespace gpu 940 } // namespace gpu
OLDNEW
« no previous file with comments | « ui/accelerated_widget_mac/ca_layer_tree_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698