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

Side by Side Diff: cc/raster/raster_source_unittest.cc

Issue 2175553002: Raster PictureLayerTiling with fractional translation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: combined Created 3 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 | « cc/raster/raster_source.cc ('k') | cc/raster/zero_copy_raster_buffer_provider.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "cc/raster/raster_source.h" 5 #include "cc/raster/raster_source.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
11 #include "cc/base/scale_translate2d.h"
11 #include "cc/test/fake_recording_source.h" 12 #include "cc/test/fake_recording_source.h"
12 #include "cc/test/skia_common.h" 13 #include "cc/test/skia_common.h"
13 #include "cc/tiles/software_image_decode_cache.h" 14 #include "cc/tiles/software_image_decode_cache.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/skia/include/core/SkPixelRef.h" 16 #include "third_party/skia/include/core/SkPixelRef.h"
16 #include "third_party/skia/include/core/SkRefCnt.h" 17 #include "third_party/skia/include/core/SkRefCnt.h"
17 #include "third_party/skia/include/core/SkShader.h" 18 #include "third_party/skia/include/core/SkShader.h"
18 #include "ui/gfx/geometry/rect.h" 19 #include "ui/gfx/geometry/rect.h"
19 #include "ui/gfx/geometry/size_conversions.h" 20 #include "ui/gfx/geometry/size_conversions.h"
20 21
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 // up to one pixel outside the content rect is guaranteed to be opaque. 284 // up to one pixel outside the content rect is guaranteed to be opaque.
284 // Outside of that is undefined. 285 // Outside of that is undefined.
285 gfx::Rect canvas_rect(content_rect); 286 gfx::Rect canvas_rect(content_rect);
286 canvas_rect.Inset(0, 0, -1, -1); 287 canvas_rect.Inset(0, 0, -1, -1);
287 288
288 SkBitmap bitmap; 289 SkBitmap bitmap;
289 bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height()); 290 bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height());
290 SkCanvas canvas(bitmap); 291 SkCanvas canvas(bitmap);
291 canvas.clear(SK_ColorTRANSPARENT); 292 canvas.clear(SK_ColorTRANSPARENT);
292 293
293 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), canvas_rect, 294 raster->PlaybackToCanvas(
294 canvas_rect, contents_scale, 295 &canvas, ColorSpaceForTesting(), canvas_rect, canvas_rect,
295 RasterSource::PlaybackSettings()); 296 ScaleTranslate2d(contents_scale, gfx::Vector2dF()),
297 RasterSource::PlaybackSettings());
296 298
297 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels()); 299 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
298 int num_pixels = bitmap.width() * bitmap.height(); 300 int num_pixels = bitmap.width() * bitmap.height();
299 bool all_white = true; 301 bool all_white = true;
300 for (int i = 0; i < num_pixels; ++i) { 302 for (int i = 0; i < num_pixels; ++i) {
301 EXPECT_EQ(SkColorGetA(pixels[i]), 255u); 303 EXPECT_EQ(SkColorGetA(pixels[i]), 255u);
302 all_white &= (SkColorGetR(pixels[i]) == 255); 304 all_white &= (SkColorGetR(pixels[i]) == 255);
303 all_white &= (SkColorGetG(pixels[i]) == 255); 305 all_white &= (SkColorGetG(pixels[i]) == 255);
304 all_white &= (SkColorGetB(pixels[i]) == 255); 306 all_white &= (SkColorGetB(pixels[i]) == 255);
305 } 307 }
(...skipping 30 matching lines...) Expand all
336 338
337 SkBitmap bitmap; 339 SkBitmap bitmap;
338 bitmap.allocN32Pixels(content_bounds.width(), content_bounds.height()); 340 bitmap.allocN32Pixels(content_bounds.width(), content_bounds.height());
339 SkCanvas canvas(bitmap); 341 SkCanvas canvas(bitmap);
340 canvas.clear(SK_ColorTRANSPARENT); 342 canvas.clear(SK_ColorTRANSPARENT);
341 343
342 // Playback the full rect which should make everything white. 344 // Playback the full rect which should make everything white.
343 gfx::Rect raster_full_rect(content_bounds); 345 gfx::Rect raster_full_rect(content_bounds);
344 gfx::Rect playback_rect(content_bounds); 346 gfx::Rect playback_rect(content_bounds);
345 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect, 347 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect,
346 playback_rect, contents_scale, 348 playback_rect,
349 ScaleTranslate2d(contents_scale, gfx::Vector2dF()),
347 RasterSource::PlaybackSettings()); 350 RasterSource::PlaybackSettings());
348 351
349 { 352 {
350 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels()); 353 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
351 for (int i = 0; i < bitmap.width(); ++i) { 354 for (int i = 0; i < bitmap.width(); ++i) {
352 for (int j = 0; j < bitmap.height(); ++j) { 355 for (int j = 0; j < bitmap.height(); ++j) {
353 SCOPED_TRACE(i); 356 SCOPED_TRACE(i);
354 SCOPED_TRACE(j); 357 SCOPED_TRACE(j);
355 EXPECT_EQ(255u, SkColorGetA(pixels[i + j * bitmap.width()])); 358 EXPECT_EQ(255u, SkColorGetA(pixels[i + j * bitmap.width()]));
356 EXPECT_EQ(255u, SkColorGetR(pixels[i + j * bitmap.width()])); 359 EXPECT_EQ(255u, SkColorGetR(pixels[i + j * bitmap.width()]));
(...skipping 11 matching lines...) Expand all
368 recording_source->Rerecord(); 371 recording_source->Rerecord();
369 372
370 // Make a new RasterSource from the new recording. 373 // Make a new RasterSource from the new recording.
371 raster = 374 raster =
372 RasterSource::CreateFromRecordingSource(recording_source.get(), false); 375 RasterSource::CreateFromRecordingSource(recording_source.get(), false);
373 376
374 // We're going to playback from "everything is black" into a smaller area, 377 // We're going to playback from "everything is black" into a smaller area,
375 // that touches the edge pixels of the recording. 378 // that touches the edge pixels of the recording.
376 playback_rect.Inset(1, 2, 0, 1); 379 playback_rect.Inset(1, 2, 0, 1);
377 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect, 380 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect,
378 playback_rect, contents_scale, 381 playback_rect,
382 ScaleTranslate2d(contents_scale, gfx::Vector2dF()),
379 RasterSource::PlaybackSettings()); 383 RasterSource::PlaybackSettings());
380 384
381 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels()); 385 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
382 int num_black = 0; 386 int num_black = 0;
383 int num_white = 0; 387 int num_white = 0;
384 for (int i = 0; i < bitmap.width(); ++i) { 388 for (int i = 0; i < bitmap.width(); ++i) {
385 for (int j = 0; j < bitmap.height(); ++j) { 389 for (int j = 0; j < bitmap.height(); ++j) {
386 SCOPED_TRACE(j); 390 SCOPED_TRACE(j);
387 SCOPED_TRACE(i); 391 SCOPED_TRACE(i);
388 bool expect_black = playback_rect.Contains(i, j); 392 bool expect_black = playback_rect.Contains(i, j);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 437
434 SkBitmap bitmap; 438 SkBitmap bitmap;
435 bitmap.allocN32Pixels(content_bounds.width(), content_bounds.height()); 439 bitmap.allocN32Pixels(content_bounds.width(), content_bounds.height());
436 SkCanvas canvas(bitmap); 440 SkCanvas canvas(bitmap);
437 canvas.clear(SK_ColorTRANSPARENT); 441 canvas.clear(SK_ColorTRANSPARENT);
438 442
439 // Playback the full rect which should make everything light gray (alpha=10). 443 // Playback the full rect which should make everything light gray (alpha=10).
440 gfx::Rect raster_full_rect(content_bounds); 444 gfx::Rect raster_full_rect(content_bounds);
441 gfx::Rect playback_rect(content_bounds); 445 gfx::Rect playback_rect(content_bounds);
442 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect, 446 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect,
443 playback_rect, contents_scale, 447 playback_rect,
448 ScaleTranslate2d(contents_scale, gfx::Vector2dF()),
444 RasterSource::PlaybackSettings()); 449 RasterSource::PlaybackSettings());
445 450
446 { 451 {
447 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels()); 452 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
448 for (int i = 0; i < bitmap.width(); ++i) { 453 for (int i = 0; i < bitmap.width(); ++i) {
449 for (int j = 0; j < bitmap.height(); ++j) { 454 for (int j = 0; j < bitmap.height(); ++j) {
450 SCOPED_TRACE(i); 455 SCOPED_TRACE(i);
451 SCOPED_TRACE(j); 456 SCOPED_TRACE(j);
452 EXPECT_EQ(alpha_dark, SkColorGetA(pixels[i + j * bitmap.width()])); 457 EXPECT_EQ(alpha_dark, SkColorGetA(pixels[i + j * bitmap.width()]));
453 EXPECT_EQ(alpha_dark, SkColorGetR(pixels[i + j * bitmap.width()])); 458 EXPECT_EQ(alpha_dark, SkColorGetR(pixels[i + j * bitmap.width()]));
(...skipping 19 matching lines...) Expand all
473 // Make a new RasterSource from the new recording. 478 // Make a new RasterSource from the new recording.
474 raster = RasterSource::CreateFromRecordingSource(recording_source_light.get(), 479 raster = RasterSource::CreateFromRecordingSource(recording_source_light.get(),
475 false); 480 false);
476 481
477 // We're going to playback from alpha(18) white rectangle into a smaller area 482 // We're going to playback from alpha(18) white rectangle into a smaller area
478 // of the recording resulting in a smaller lighter white rectangle over a 483 // of the recording resulting in a smaller lighter white rectangle over a
479 // darker white background rectangle. 484 // darker white background rectangle.
480 playback_rect = 485 playback_rect =
481 gfx::Rect(gfx::ScaleToCeiledSize(partial_bounds, contents_scale)); 486 gfx::Rect(gfx::ScaleToCeiledSize(partial_bounds, contents_scale));
482 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect, 487 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), raster_full_rect,
483 playback_rect, contents_scale, 488 playback_rect,
489 ScaleTranslate2d(contents_scale, gfx::Vector2dF()),
484 RasterSource::PlaybackSettings()); 490 RasterSource::PlaybackSettings());
485 491
486 // Test that the whole playback_rect was cleared and repainted with new alpha. 492 // Test that the whole playback_rect was cleared and repainted with new alpha.
487 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels()); 493 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
488 for (int i = 0; i < playback_rect.width(); ++i) { 494 for (int i = 0; i < playback_rect.width(); ++i) {
489 for (int j = 0; j < playback_rect.height(); ++j) { 495 for (int j = 0; j < playback_rect.height(); ++j) {
490 SCOPED_TRACE(j); 496 SCOPED_TRACE(j);
491 SCOPED_TRACE(i); 497 SCOPED_TRACE(i);
492 EXPECT_EQ(alpha_light, SkColorGetA(pixels[i + j * bitmap.width()])); 498 EXPECT_EQ(alpha_light, SkColorGetA(pixels[i + j * bitmap.width()]));
493 EXPECT_EQ(alpha_light, SkColorGetR(pixels[i + j * bitmap.width()])); 499 EXPECT_EQ(alpha_light, SkColorGetR(pixels[i + j * bitmap.width()]));
(...skipping 20 matching lines...) Expand all
514 gfx::ScaleToCeiledSize(layer_bounds, contents_scale)); 520 gfx::ScaleToCeiledSize(layer_bounds, contents_scale));
515 521
516 gfx::Rect canvas_rect(content_bounds); 522 gfx::Rect canvas_rect(content_bounds);
517 canvas_rect.Inset(0, 0, -1, -1); 523 canvas_rect.Inset(0, 0, -1, -1);
518 524
519 SkBitmap bitmap; 525 SkBitmap bitmap;
520 bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height()); 526 bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height());
521 SkCanvas canvas(bitmap); 527 SkCanvas canvas(bitmap);
522 528
523 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), canvas_rect, 529 raster->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), canvas_rect,
524 canvas_rect, contents_scale, 530 canvas_rect,
531 ScaleTranslate2d(contents_scale, gfx::Vector2dF()),
525 RasterSource::PlaybackSettings()); 532 RasterSource::PlaybackSettings());
526 533
527 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels()); 534 SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
528 int num_pixels = bitmap.width() * bitmap.height(); 535 int num_pixels = bitmap.width() * bitmap.height();
529 for (int i = 0; i < num_pixels; ++i) { 536 for (int i = 0; i < num_pixels; ++i) {
530 EXPECT_EQ(SkColorGetA(pixels[i]), 0u); 537 EXPECT_EQ(SkColorGetA(pixels[i]), 0u);
531 } 538 }
532 } 539 }
533 540
534 TEST(RasterSourceTest, GetPictureMemoryUsageIncludesClientReportedMemory) { 541 TEST(RasterSourceTest, GetPictureMemoryUsageIncludesClientReportedMemory) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 595
589 SkBitmap bitmap; 596 SkBitmap bitmap;
590 bitmap.allocN32Pixels(size.width() * 0.5f, size.height() * 0.25f); 597 bitmap.allocN32Pixels(size.width() * 0.5f, size.height() * 0.25f);
591 SkCanvas canvas(bitmap); 598 SkCanvas canvas(bitmap);
592 canvas.scale(0.5f, 0.25f); 599 canvas.scale(0.5f, 0.25f);
593 600
594 RasterSource::PlaybackSettings settings; 601 RasterSource::PlaybackSettings settings;
595 settings.playback_to_shared_canvas = true; 602 settings.playback_to_shared_canvas = true;
596 settings.use_image_hijack_canvas = true; 603 settings.use_image_hijack_canvas = true;
597 raster_source->PlaybackToCanvas(&canvas, ColorSpaceForTesting(), 604 raster_source->PlaybackToCanvas(&canvas, ColorSpaceForTesting(),
598 gfx::Rect(size), gfx::Rect(size), 1.f, 605 gfx::Rect(size), gfx::Rect(size),
599 settings); 606 ScaleTranslate2d(), settings);
600 607
601 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 0)); 608 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 0));
602 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 0)); 609 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 0));
603 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24)); 610 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24));
604 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24)); 611 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24));
605 for (int x = 0; x < 49; ++x) 612 for (int x = 0; x < 49; ++x)
606 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12)); 613 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12));
607 for (int y = 0; y < 24; ++y) 614 for (int y = 0; y < 24; ++y)
608 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y)); 615 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y));
609 } 616 }
610 617
611 } // namespace 618 } // namespace
612 } // namespace cc 619 } // namespace cc
OLDNEW
« no previous file with comments | « cc/raster/raster_source.cc ('k') | cc/raster/zero_copy_raster_buffer_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698