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

Side by Side Diff: gpu/ipc/service/ca_layer_tree_unittest_mac.mm

Issue 1859703002: convert //gpu to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase on master 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 | « gpu/ipc/service/ca_layer_tree_mac.mm ('k') | gpu/ipc/service/child_window_surface_win.cc » ('j') | 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>
6
5 #include "base/mac/sdk_forward_declarations.h" 7 #include "base/mac/sdk_forward_declarations.h"
6 #include "gpu/GLES2/gl2extchromium.h" 8 #include "gpu/GLES2/gl2extchromium.h"
7 #include "gpu/ipc/service/ca_layer_tree_mac.h" 9 #include "gpu/ipc/service/ca_layer_tree_mac.h"
8 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
9 #include "third_party/skia/include/core/SkColor.h" 11 #include "third_party/skia/include/core/SkColor.h"
10 #include "ui/gfx/geometry/dip_util.h" 12 #include "ui/gfx/geometry/dip_util.h"
11 #include "ui/gfx/mac/io_surface.h" 13 #include "ui/gfx/mac/io_surface.h"
12 14
13 namespace gpu { 15 namespace gpu {
14 16
(...skipping 16 matching lines...) Expand all
31 gfx::Transform transform; 33 gfx::Transform transform;
32 transform.Translate(10, 20); 34 transform.Translate(10, 20);
33 gfx::RectF contents_rect(0.0f, 0.25f, 0.5f, 0.75f); 35 gfx::RectF contents_rect(0.0f, 0.25f, 0.5f, 0.75f);
34 gfx::Rect rect(16, 32, 64, 128); 36 gfx::Rect rect(16, 32, 64, 128);
35 unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0); 37 unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0);
36 unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM; 38 unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM;
37 float opacity = 0.5f; 39 float opacity = 0.5f;
38 float scale_factor = 1.0f; 40 float scale_factor = 1.0f;
39 bool result = false; 41 bool result = false;
40 42
41 scoped_ptr<CALayerTree> ca_layer_tree; 43 std::unique_ptr<CALayerTree> ca_layer_tree;
42 CALayer* root_layer = nil; 44 CALayer* root_layer = nil;
43 CALayer* clip_and_sorting_layer = nil; 45 CALayer* clip_and_sorting_layer = nil;
44 CALayer* transform_layer = nil; 46 CALayer* transform_layer = nil;
45 CALayer* content_layer = nil; 47 CALayer* content_layer = nil;
46 48
47 // Validate the initial values. 49 // Validate the initial values.
48 { 50 {
49 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 51 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
50 result = new_ca_layer_tree->ScheduleCALayer( 52 result = new_ca_layer_tree->ScheduleCALayer(
51 is_clipped, 53 is_clipped,
52 clip_rect, 54 clip_rect,
53 sorting_context_id, 55 sorting_context_id,
54 transform, 56 transform,
55 io_surface, 57 io_surface,
56 contents_rect, 58 contents_rect,
57 rect, 59 rect,
58 background_color, 60 background_color,
59 edge_aa_mask, 61 edge_aa_mask,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds])); 99 EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds]));
98 EXPECT_EQ(kCALayerLeftEdge, [content_layer edgeAntialiasingMask]); 100 EXPECT_EQ(kCALayerLeftEdge, [content_layer edgeAntialiasingMask]);
99 EXPECT_EQ(opacity, [content_layer opacity]); 101 EXPECT_EQ(opacity, [content_layer opacity]);
100 if ([content_layer respondsToSelector:(@selector(contentsScale))]) 102 if ([content_layer respondsToSelector:(@selector(contentsScale))])
101 EXPECT_EQ(scale_factor, [content_layer contentsScale]); 103 EXPECT_EQ(scale_factor, [content_layer contentsScale]);
102 } 104 }
103 105
104 // Update just the clip rect and re-commit. 106 // Update just the clip rect and re-commit.
105 { 107 {
106 clip_rect = gfx::Rect(4, 8, 16, 32); 108 clip_rect = gfx::Rect(4, 8, 16, 32);
107 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 109 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
108 result = new_ca_layer_tree->ScheduleCALayer( 110 result = new_ca_layer_tree->ScheduleCALayer(
109 is_clipped, 111 is_clipped,
110 clip_rect, 112 clip_rect,
111 sorting_context_id, 113 sorting_context_id,
112 transform, 114 transform,
113 io_surface, 115 io_surface,
114 contents_rect, 116 contents_rect,
115 rect, 117 rect,
116 background_color, 118 background_color,
117 edge_aa_mask, 119 edge_aa_mask,
(...skipping 20 matching lines...) Expand all
138 gfx::Point([clip_and_sorting_layer position])); 140 gfx::Point([clip_and_sorting_layer position]));
139 EXPECT_EQ(-clip_rect.origin().x(), 141 EXPECT_EQ(-clip_rect.origin().x(),
140 [clip_and_sorting_layer sublayerTransform].m41); 142 [clip_and_sorting_layer sublayerTransform].m41);
141 EXPECT_EQ(-clip_rect.origin().y(), 143 EXPECT_EQ(-clip_rect.origin().y(),
142 [clip_and_sorting_layer sublayerTransform].m42); 144 [clip_and_sorting_layer sublayerTransform].m42);
143 } 145 }
144 146
145 // Disable clipping and re-commit. 147 // Disable clipping and re-commit.
146 { 148 {
147 is_clipped = false; 149 is_clipped = false;
148 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 150 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
149 result = new_ca_layer_tree->ScheduleCALayer( 151 result = new_ca_layer_tree->ScheduleCALayer(
150 is_clipped, 152 is_clipped,
151 clip_rect, 153 clip_rect,
152 sorting_context_id, 154 sorting_context_id,
153 transform, 155 transform,
154 io_surface, 156 io_surface,
155 contents_rect, 157 contents_rect,
156 rect, 158 rect,
157 background_color, 159 background_color,
158 edge_aa_mask, 160 edge_aa_mask,
(...skipping 17 matching lines...) Expand all
176 EXPECT_EQ(gfx::Rect(), gfx::Rect([clip_and_sorting_layer bounds])); 178 EXPECT_EQ(gfx::Rect(), gfx::Rect([clip_and_sorting_layer bounds]));
177 EXPECT_EQ(gfx::Point(), gfx::Point([clip_and_sorting_layer position])); 179 EXPECT_EQ(gfx::Point(), gfx::Point([clip_and_sorting_layer position]));
178 EXPECT_EQ(0.0, [clip_and_sorting_layer sublayerTransform].m41); 180 EXPECT_EQ(0.0, [clip_and_sorting_layer sublayerTransform].m41);
179 EXPECT_EQ(0.0, [clip_and_sorting_layer sublayerTransform].m42); 181 EXPECT_EQ(0.0, [clip_and_sorting_layer sublayerTransform].m42);
180 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]); 182 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
181 } 183 }
182 184
183 // Change the transform and re-commit. 185 // Change the transform and re-commit.
184 { 186 {
185 transform.Translate(5, 5); 187 transform.Translate(5, 5);
186 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 188 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
187 result = new_ca_layer_tree->ScheduleCALayer( 189 result = new_ca_layer_tree->ScheduleCALayer(
188 is_clipped, 190 is_clipped,
189 clip_rect, 191 clip_rect,
190 sorting_context_id, 192 sorting_context_id,
191 transform, 193 transform,
192 io_surface, 194 io_surface,
193 contents_rect, 195 contents_rect,
194 rect, 196 rect,
195 background_color, 197 background_color,
196 edge_aa_mask, 198 edge_aa_mask,
(...skipping 15 matching lines...) Expand all
212 // Validate the transform layer. 214 // Validate the transform layer.
213 EXPECT_EQ(transform.matrix().get(3, 0), 215 EXPECT_EQ(transform.matrix().get(3, 0),
214 [transform_layer sublayerTransform].m41); 216 [transform_layer sublayerTransform].m41);
215 EXPECT_EQ(transform.matrix().get(3, 1), 217 EXPECT_EQ(transform.matrix().get(3, 1),
216 [transform_layer sublayerTransform].m42); 218 [transform_layer sublayerTransform].m42);
217 } 219 }
218 220
219 // Change the edge antialiasing mask and commit. 221 // Change the edge antialiasing mask and commit.
220 { 222 {
221 edge_aa_mask = GL_CA_LAYER_EDGE_TOP_CHROMIUM; 223 edge_aa_mask = GL_CA_LAYER_EDGE_TOP_CHROMIUM;
222 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 224 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
223 result = new_ca_layer_tree->ScheduleCALayer( 225 result = new_ca_layer_tree->ScheduleCALayer(
224 is_clipped, 226 is_clipped,
225 clip_rect, 227 clip_rect,
226 sorting_context_id, 228 sorting_context_id,
227 transform, 229 transform,
228 io_surface, 230 io_surface,
229 contents_rect, 231 contents_rect,
230 rect, 232 rect,
231 background_color, 233 background_color,
232 edge_aa_mask, 234 edge_aa_mask,
(...skipping 13 matching lines...) Expand all
246 [[clip_and_sorting_layer sublayers] objectAtIndex:0]); 248 [[clip_and_sorting_layer sublayers] objectAtIndex:0]);
247 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 249 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
248 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]); 250 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
249 251
250 // Validate the content layer. Note that top and bottom edges flip. 252 // Validate the content layer. Note that top and bottom edges flip.
251 EXPECT_EQ(kCALayerBottomEdge, [content_layer edgeAntialiasingMask]); 253 EXPECT_EQ(kCALayerBottomEdge, [content_layer edgeAntialiasingMask]);
252 } 254 }
253 255
254 // Change the contents and commit. 256 // Change the contents and commit.
255 { 257 {
256 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 258 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
257 result = new_ca_layer_tree->ScheduleCALayer( 259 result = new_ca_layer_tree->ScheduleCALayer(
258 is_clipped, 260 is_clipped,
259 clip_rect, 261 clip_rect,
260 sorting_context_id, 262 sorting_context_id,
261 transform, 263 transform,
262 nullptr, 264 nullptr,
263 contents_rect, 265 contents_rect,
264 rect, 266 rect,
265 background_color, 267 background_color,
266 edge_aa_mask, 268 edge_aa_mask,
(...skipping 15 matching lines...) Expand all
282 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]); 284 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
283 285
284 // Validate the content layer. Note that edge anti-aliasing no longer flips. 286 // Validate the content layer. Note that edge anti-aliasing no longer flips.
285 EXPECT_EQ(nil, [content_layer contents]); 287 EXPECT_EQ(nil, [content_layer contents]);
286 EXPECT_EQ(kCALayerTopEdge, [content_layer edgeAntialiasingMask]); 288 EXPECT_EQ(kCALayerTopEdge, [content_layer edgeAntialiasingMask]);
287 } 289 }
288 290
289 // Change the rect size. 291 // Change the rect size.
290 { 292 {
291 rect = gfx::Rect(rect.origin(), gfx::Size(32, 16)); 293 rect = gfx::Rect(rect.origin(), gfx::Size(32, 16));
292 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 294 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
293 result = new_ca_layer_tree->ScheduleCALayer( 295 result = new_ca_layer_tree->ScheduleCALayer(
294 is_clipped, 296 is_clipped,
295 clip_rect, 297 clip_rect,
296 sorting_context_id, 298 sorting_context_id,
297 transform, 299 transform,
298 nullptr, 300 nullptr,
299 contents_rect, 301 contents_rect,
300 rect, 302 rect,
301 background_color, 303 background_color,
302 edge_aa_mask, 304 edge_aa_mask,
(...skipping 15 matching lines...) Expand all
318 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]); 320 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
319 321
320 // Validate the content layer. 322 // Validate the content layer.
321 EXPECT_EQ(rect.origin(), gfx::Point([content_layer position])); 323 EXPECT_EQ(rect.origin(), gfx::Point([content_layer position]));
322 EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds])); 324 EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds]));
323 } 325 }
324 326
325 // Change the rect position. 327 // Change the rect position.
326 { 328 {
327 rect = gfx::Rect(gfx::Point(16, 4), rect.size()); 329 rect = gfx::Rect(gfx::Point(16, 4), rect.size());
328 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 330 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
329 result = new_ca_layer_tree->ScheduleCALayer( 331 result = new_ca_layer_tree->ScheduleCALayer(
330 is_clipped, 332 is_clipped,
331 clip_rect, 333 clip_rect,
332 sorting_context_id, 334 sorting_context_id,
333 transform, 335 transform,
334 nullptr, 336 nullptr,
335 contents_rect, 337 contents_rect,
336 rect, 338 rect,
337 background_color, 339 background_color,
338 edge_aa_mask, 340 edge_aa_mask,
(...skipping 15 matching lines...) Expand all
354 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]); 356 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
355 357
356 // Validate the content layer. 358 // Validate the content layer.
357 EXPECT_EQ(rect.origin(), gfx::Point([content_layer position])); 359 EXPECT_EQ(rect.origin(), gfx::Point([content_layer position]));
358 EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds])); 360 EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds]));
359 } 361 }
360 362
361 // Change the opacity. 363 // Change the opacity.
362 { 364 {
363 opacity = 1.0f; 365 opacity = 1.0f;
364 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 366 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
365 result = new_ca_layer_tree->ScheduleCALayer( 367 result = new_ca_layer_tree->ScheduleCALayer(
366 is_clipped, 368 is_clipped,
367 clip_rect, 369 clip_rect,
368 sorting_context_id, 370 sorting_context_id,
369 transform, 371 transform,
370 nullptr, 372 nullptr,
371 contents_rect, 373 contents_rect,
372 rect, 374 rect,
373 background_color, 375 background_color,
374 edge_aa_mask, 376 edge_aa_mask,
(...skipping 14 matching lines...) Expand all
389 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 391 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
390 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]); 392 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
391 393
392 // Validate the content layer. 394 // Validate the content layer.
393 EXPECT_EQ(opacity, [content_layer opacity]); 395 EXPECT_EQ(opacity, [content_layer opacity]);
394 } 396 }
395 397
396 // Add the clipping and IOSurface contents back. 398 // Add the clipping and IOSurface contents back.
397 { 399 {
398 is_clipped = true; 400 is_clipped = true;
399 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 401 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
400 result = new_ca_layer_tree->ScheduleCALayer( 402 result = new_ca_layer_tree->ScheduleCALayer(
401 is_clipped, 403 is_clipped,
402 clip_rect, 404 clip_rect,
403 sorting_context_id, 405 sorting_context_id,
404 transform, 406 transform,
405 io_surface, 407 io_surface,
406 contents_rect, 408 contents_rect,
407 rect, 409 rect,
408 background_color, 410 background_color,
409 edge_aa_mask, 411 edge_aa_mask,
(...skipping 15 matching lines...) Expand all
425 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]); 427 EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
426 428
427 // Validate the content layer. 429 // Validate the content layer.
428 EXPECT_EQ(static_cast<id>(io_surface.get()), [content_layer contents]); 430 EXPECT_EQ(static_cast<id>(io_surface.get()), [content_layer contents]);
429 EXPECT_EQ(kCALayerBottomEdge, [content_layer edgeAntialiasingMask]); 431 EXPECT_EQ(kCALayerBottomEdge, [content_layer edgeAntialiasingMask]);
430 } 432 }
431 433
432 // Change the scale factor. This should result in a new tree being created. 434 // Change the scale factor. This should result in a new tree being created.
433 { 435 {
434 scale_factor = 2.0f; 436 scale_factor = 2.0f;
435 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 437 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
436 result = new_ca_layer_tree->ScheduleCALayer( 438 result = new_ca_layer_tree->ScheduleCALayer(
437 is_clipped, 439 is_clipped,
438 clip_rect, 440 clip_rect,
439 sorting_context_id, 441 sorting_context_id,
440 transform, 442 transform,
441 io_surface, 443 io_surface,
442 contents_rect, 444 contents_rect,
443 rect, 445 rect,
444 background_color, 446 background_color,
445 edge_aa_mask, 447 edge_aa_mask,
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 // * 1 non-flat (new sorting context layer) 521 // * 1 non-flat (new sorting context layer)
520 // * 2 flat and the same (new sorting context layer, 1 transform layer) 522 // * 2 flat and the same (new sorting context layer, 1 transform layer)
521 gfx::Transform transforms[5]; 523 gfx::Transform transforms[5];
522 transforms[0].Translate(10, 10); 524 transforms[0].Translate(10, 10);
523 transforms[1].RotateAboutZAxis(45.0f); 525 transforms[1].RotateAboutZAxis(45.0f);
524 transforms[2].RotateAboutYAxis(45.0f); 526 transforms[2].RotateAboutYAxis(45.0f);
525 transforms[3].Translate(10, 10); 527 transforms[3].Translate(10, 10);
526 transforms[4].Translate(10, 10); 528 transforms[4].Translate(10, 10);
527 529
528 // Schedule and commit the layers. 530 // Schedule and commit the layers.
529 scoped_ptr<CALayerTree> ca_layer_tree(new CALayerTree); 531 std::unique_ptr<CALayerTree> ca_layer_tree(new CALayerTree);
530 for (size_t i = 0; i < 5; ++i) { 532 for (size_t i = 0; i < 5; ++i) {
531 bool result = ca_layer_tree->ScheduleCALayer( 533 bool result = ca_layer_tree->ScheduleCALayer(
532 is_clipped, 534 is_clipped,
533 clip_rect, 535 clip_rect,
534 sorting_context_id, 536 sorting_context_id,
535 transforms[i], 537 transforms[i],
536 io_surfaces[i], 538 io_surfaces[i],
537 contents_rect, 539 contents_rect,
538 rect, 540 rect,
539 background_color, 541 background_color,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 float scale_factor = 1.0f; 606 float scale_factor = 1.0f;
605 607
606 // We'll use the IOSurface contents to identify the content layers. 608 // We'll use the IOSurface contents to identify the content layers.
607 base::ScopedCFTypeRef<IOSurfaceRef> io_surfaces[3]; 609 base::ScopedCFTypeRef<IOSurfaceRef> io_surfaces[3];
608 for (size_t i = 0; i < 3; ++i) { 610 for (size_t i = 0; i < 3; ++i) {
609 io_surfaces[i].reset(gfx::CreateIOSurface( 611 io_surfaces[i].reset(gfx::CreateIOSurface(
610 gfx::Size(256, 256), gfx::BufferFormat::BGRA_8888)); 612 gfx::Size(256, 256), gfx::BufferFormat::BGRA_8888));
611 } 613 }
612 614
613 // Schedule and commit the layers. 615 // Schedule and commit the layers.
614 scoped_ptr<CALayerTree> ca_layer_tree(new CALayerTree); 616 std::unique_ptr<CALayerTree> ca_layer_tree(new CALayerTree);
615 for (size_t i = 0; i < 3; ++i) { 617 for (size_t i = 0; i < 3; ++i) {
616 bool result = ca_layer_tree->ScheduleCALayer( 618 bool result = ca_layer_tree->ScheduleCALayer(
617 is_clipped, 619 is_clipped,
618 clip_rect, 620 clip_rect,
619 sorting_context_ids[i], 621 sorting_context_ids[i],
620 transform, 622 transform,
621 io_surfaces[i], 623 io_surfaces[i],
622 contents_rect, 624 contents_rect,
623 rect, 625 rect,
624 background_color, 626 background_color,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 float opacity = 1.0f; 676 float opacity = 1.0f;
675 677
676 // Vary the clipping parameters within sorting contexts. 678 // Vary the clipping parameters within sorting contexts.
677 bool is_clippeds[3] = { true, true, false}; 679 bool is_clippeds[3] = { true, true, false};
678 gfx::Rect clip_rects[3] = { 680 gfx::Rect clip_rects[3] = {
679 gfx::Rect(0, 0, 16, 16), 681 gfx::Rect(0, 0, 16, 16),
680 gfx::Rect(4, 8, 16, 32), 682 gfx::Rect(4, 8, 16, 32),
681 gfx::Rect(0, 0, 16, 16) 683 gfx::Rect(0, 0, 16, 16)
682 }; 684 };
683 685
684 scoped_ptr<CALayerTree> ca_layer_tree(new CALayerTree); 686 std::unique_ptr<CALayerTree> ca_layer_tree(new CALayerTree);
685 // First send the various clip parameters to sorting context zero. This is 687 // First send the various clip parameters to sorting context zero. This is
686 // legitimate. 688 // legitimate.
687 for (size_t i = 0; i < 3; ++i) { 689 for (size_t i = 0; i < 3; ++i) {
688 int sorting_context_id = 0; 690 int sorting_context_id = 0;
689 bool result = ca_layer_tree->ScheduleCALayer( 691 bool result = ca_layer_tree->ScheduleCALayer(
690 is_clippeds[i], 692 is_clippeds[i],
691 clip_rects[i], 693 clip_rects[i],
692 sorting_context_id, 694 sorting_context_id,
693 transform, 695 transform,
694 io_surface, 696 io_surface,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 int sorting_context_id = 0; 748 int sorting_context_id = 0;
747 gfx::Transform transform; 749 gfx::Transform transform;
748 gfx::RectF contents_rect(0.0f, 0.0f, 1.0f, 1.0f); 750 gfx::RectF contents_rect(0.0f, 0.0f, 1.0f, 1.0f);
749 gfx::Rect rect(16, 32, 64, 128); 751 gfx::Rect rect(16, 32, 64, 128);
750 unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0); 752 unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0);
751 unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM; 753 unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM;
752 float opacity = 0.5f; 754 float opacity = 0.5f;
753 float scale_factor = 1.0f; 755 float scale_factor = 1.0f;
754 bool result = false; 756 bool result = false;
755 757
756 scoped_ptr<CALayerTree> ca_layer_tree; 758 std::unique_ptr<CALayerTree> ca_layer_tree;
757 CALayer* root_layer = nil; 759 CALayer* root_layer = nil;
758 CALayer* clip_and_sorting_layer = nil; 760 CALayer* clip_and_sorting_layer = nil;
759 CALayer* transform_layer = nil; 761 CALayer* transform_layer = nil;
760 CALayer* content_layer1 = nil; 762 CALayer* content_layer1 = nil;
761 CALayer* content_layer2 = nil; 763 CALayer* content_layer2 = nil;
762 CALayer* content_layer3 = nil; 764 CALayer* content_layer3 = nil;
763 765
764 // Validate the initial values. 766 // Validate the initial values.
765 { 767 {
766 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 768 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
767 result = new_ca_layer_tree->ScheduleCALayer( 769 result = new_ca_layer_tree->ScheduleCALayer(
768 is_clipped, clip_rect, sorting_context_id, transform, io_surface, 770 is_clipped, clip_rect, sorting_context_id, transform, io_surface,
769 contents_rect, rect, background_color, edge_aa_mask, opacity); 771 contents_rect, rect, background_color, edge_aa_mask, opacity);
770 EXPECT_TRUE(result); 772 EXPECT_TRUE(result);
771 new_ca_layer_tree->CommitScheduledCALayers( 773 new_ca_layer_tree->CommitScheduledCALayers(
772 superlayer_, std::move(ca_layer_tree), scale_factor); 774 superlayer_, std::move(ca_layer_tree), scale_factor);
773 std::swap(new_ca_layer_tree, ca_layer_tree); 775 std::swap(new_ca_layer_tree, ca_layer_tree);
774 776
775 // Validate the tree structure. 777 // Validate the tree structure.
776 EXPECT_EQ(1u, [[superlayer_ sublayers] count]); 778 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
777 root_layer = [[superlayer_ sublayers] objectAtIndex:0]; 779 root_layer = [[superlayer_ sublayers] objectAtIndex:0];
778 EXPECT_EQ(1u, [[root_layer sublayers] count]); 780 EXPECT_EQ(1u, [[root_layer sublayers] count]);
779 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0]; 781 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
780 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]); 782 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
781 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0]; 783 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
782 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 784 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
783 content_layer1 = [[transform_layer sublayers] objectAtIndex:0]; 785 content_layer1 = [[transform_layer sublayers] objectAtIndex:0];
784 786
785 // Validate the content layer. 787 // Validate the content layer.
786 EXPECT_FALSE([content_layer1 788 EXPECT_FALSE([content_layer1
787 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]); 789 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
788 } 790 }
789 791
790 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256), 792 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256),
791 gfx::BufferFormat::YUV_420_BIPLANAR)); 793 gfx::BufferFormat::YUV_420_BIPLANAR));
792 794
793 // Pass another frame. 795 // Pass another frame.
794 { 796 {
795 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 797 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
796 result = new_ca_layer_tree->ScheduleCALayer( 798 result = new_ca_layer_tree->ScheduleCALayer(
797 is_clipped, clip_rect, sorting_context_id, transform, io_surface, 799 is_clipped, clip_rect, sorting_context_id, transform, io_surface,
798 contents_rect, rect, background_color, edge_aa_mask, opacity); 800 contents_rect, rect, background_color, edge_aa_mask, opacity);
799 EXPECT_TRUE(result); 801 EXPECT_TRUE(result);
800 new_ca_layer_tree->CommitScheduledCALayers( 802 new_ca_layer_tree->CommitScheduledCALayers(
801 superlayer_, std::move(ca_layer_tree), scale_factor); 803 superlayer_, std::move(ca_layer_tree), scale_factor);
802 std::swap(new_ca_layer_tree, ca_layer_tree); 804 std::swap(new_ca_layer_tree, ca_layer_tree);
803 805
804 // Validate the tree structure. 806 // Validate the tree structure.
805 EXPECT_EQ(1u, [[superlayer_ sublayers] count]); 807 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
(...skipping 10 matching lines...) Expand all
816 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]); 818 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
817 EXPECT_EQ(content_layer2, content_layer1); 819 EXPECT_EQ(content_layer2, content_layer1);
818 } 820 }
819 821
820 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256), 822 io_surface.reset(gfx::CreateIOSurface(gfx::Size(256, 256),
821 gfx::BufferFormat::YUV_420_BIPLANAR)); 823 gfx::BufferFormat::YUV_420_BIPLANAR));
822 824
823 // Pass a frame that is clipped. 825 // Pass a frame that is clipped.
824 contents_rect = gfx::RectF(0, 0, 1, 0.9); 826 contents_rect = gfx::RectF(0, 0, 1, 0.9);
825 { 827 {
826 scoped_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree); 828 std::unique_ptr<CALayerTree> new_ca_layer_tree(new CALayerTree);
827 result = new_ca_layer_tree->ScheduleCALayer( 829 result = new_ca_layer_tree->ScheduleCALayer(
828 is_clipped, clip_rect, sorting_context_id, transform, io_surface, 830 is_clipped, clip_rect, sorting_context_id, transform, io_surface,
829 contents_rect, rect, background_color, edge_aa_mask, opacity); 831 contents_rect, rect, background_color, edge_aa_mask, opacity);
830 EXPECT_TRUE(result); 832 EXPECT_TRUE(result);
831 new_ca_layer_tree->CommitScheduledCALayers( 833 new_ca_layer_tree->CommitScheduledCALayers(
832 superlayer_, std::move(ca_layer_tree), scale_factor); 834 superlayer_, std::move(ca_layer_tree), scale_factor);
833 std::swap(new_ca_layer_tree, ca_layer_tree); 835 std::swap(new_ca_layer_tree, ca_layer_tree);
834 836
835 // Validate the tree structure. 837 // Validate the tree structure.
836 EXPECT_EQ(1u, [[superlayer_ sublayers] count]); 838 EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
837 root_layer = [[superlayer_ sublayers] objectAtIndex:0]; 839 root_layer = [[superlayer_ sublayers] objectAtIndex:0];
838 EXPECT_EQ(1u, [[root_layer sublayers] count]); 840 EXPECT_EQ(1u, [[root_layer sublayers] count]);
839 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0]; 841 clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
840 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]); 842 EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
841 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0]; 843 transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
842 EXPECT_EQ(1u, [[transform_layer sublayers] count]); 844 EXPECT_EQ(1u, [[transform_layer sublayers] count]);
843 content_layer3 = [[transform_layer sublayers] objectAtIndex:0]; 845 content_layer3 = [[transform_layer sublayers] objectAtIndex:0];
844 846
845 // Validate the content layer. 847 // Validate the content layer.
846 EXPECT_FALSE([content_layer3 848 EXPECT_FALSE([content_layer3
847 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]); 849 isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
848 EXPECT_EQ(content_layer3, content_layer2); 850 EXPECT_EQ(content_layer3, content_layer2);
849 } 851 }
850 } 852 }
851 853
852 } // namespace gpu 854 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/ipc/service/ca_layer_tree_mac.mm ('k') | gpu/ipc/service/child_window_surface_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698