| OLD | NEW |
| 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/layers/image_layer.h" | 5 #include "cc/layers/picture_image_layer.h" |
| 6 #include "cc/layers/solid_color_layer.h" | 6 #include "cc/layers/solid_color_layer.h" |
| 7 #include "cc/test/layer_tree_pixel_resource_test.h" | 7 #include "cc/test/layer_tree_pixel_resource_test.h" |
| 8 #include "cc/test/pixel_comparator.h" | 8 #include "cc/test/pixel_comparator.h" |
| 9 | 9 |
| 10 #if !defined(OS_ANDROID) | 10 #if !defined(OS_ANDROID) |
| 11 | 11 |
| 12 namespace cc { | 12 namespace cc { |
| 13 namespace { | 13 namespace { |
| 14 | 14 |
| 15 SkXfermode::Mode const kBlendModes[] = { | 15 SkXfermode::Mode const kBlendModes[] = { |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 SkBitmap backing_store; | 130 SkBitmap backing_store; |
| 131 backing_store.allocN32Pixels(width, height); | 131 backing_store.allocN32Pixels(width, height); |
| 132 SkCanvas canvas(backing_store); | 132 SkCanvas canvas(backing_store); |
| 133 canvas.clear(SK_ColorTRANSPARENT); | 133 canvas.clear(SK_ColorTRANSPARENT); |
| 134 for (int i = 0; i < kCSSTestColorsCount; ++i) { | 134 for (int i = 0; i < kCSSTestColorsCount; ++i) { |
| 135 SkPaint paint; | 135 SkPaint paint; |
| 136 paint.setColor(kCSSTestColors[i]); | 136 paint.setColor(kCSSTestColors[i]); |
| 137 canvas.drawRect( | 137 canvas.drawRect( |
| 138 SkRect::MakeXYWH(0, i * kLaneHeight, kLaneWidth, kLaneHeight), paint); | 138 SkRect::MakeXYWH(0, i * kLaneHeight, kLaneWidth, kLaneHeight), paint); |
| 139 } | 139 } |
| 140 scoped_refptr<ImageLayer> layer = ImageLayer::Create(); | 140 scoped_refptr<PictureImageLayer> layer = PictureImageLayer::Create(); |
| 141 layer->SetIsDrawable(true); | 141 layer->SetIsDrawable(true); |
| 142 layer->SetBounds(gfx::Size(width, height)); | 142 layer->SetBounds(gfx::Size(width, height)); |
| 143 layer->SetBitmap(backing_store); | 143 layer->SetBitmap(backing_store); |
| 144 return layer; | 144 return layer; |
| 145 } | 145 } |
| 146 | 146 |
| 147 void SetupMaskLayer(scoped_refptr<Layer> layer) { | 147 void SetupMaskLayer(scoped_refptr<Layer> layer) { |
| 148 const int kMaskOffset = 2; | 148 const int kMaskOffset = 2; |
| 149 gfx::Size bounds = layer->bounds(); | 149 gfx::Size bounds = layer->bounds(); |
| 150 scoped_refptr<ImageLayer> mask = ImageLayer::Create(); | 150 scoped_refptr<PictureImageLayer> mask = PictureImageLayer::Create(); |
| 151 mask->SetIsDrawable(true); | 151 mask->SetIsDrawable(true); |
| 152 mask->SetIsMask(true); | 152 mask->SetIsMask(true); |
| 153 mask->SetBounds(bounds); | 153 mask->SetBounds(bounds); |
| 154 | 154 |
| 155 SkBitmap bitmap; | 155 SkBitmap bitmap; |
| 156 bitmap.allocN32Pixels(bounds.width(), bounds.height()); | 156 bitmap.allocN32Pixels(bounds.width(), bounds.height()); |
| 157 SkCanvas canvas(bitmap); | 157 SkCanvas canvas(bitmap); |
| 158 SkPaint paint; | 158 SkPaint paint; |
| 159 paint.setColor(SK_ColorWHITE); | 159 paint.setColor(SK_ColorWHITE); |
| 160 canvas.clear(SK_ColorTRANSPARENT); | 160 canvas.clear(SK_ColorTRANSPARENT); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 scoped_refptr<SolidColorLayer> root = | 230 scoped_refptr<SolidColorLayer> root = |
| 231 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), SK_ColorWHITE); | 231 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), SK_ColorWHITE); |
| 232 scoped_refptr<Layer> background = | 232 scoped_refptr<Layer> background = |
| 233 CreateColorfulBackdropLayer(kRootSize, kRootSize); | 233 CreateColorfulBackdropLayer(kRootSize, kRootSize); |
| 234 | 234 |
| 235 background->SetIsRootForIsolatedGroup(true); | 235 background->SetIsRootForIsolatedGroup(true); |
| 236 root->AddChild(background); | 236 root->AddChild(background); |
| 237 | 237 |
| 238 CreateBlendingColorLayers(kLaneWidth, kLaneHeight, background.get(), flags); | 238 CreateBlendingColorLayers(kLaneWidth, kLaneHeight, background.get(), flags); |
| 239 | 239 |
| 240 this->impl_side_painting_ = false; | |
| 241 this->force_antialiasing_ = (flags & kUseAntialiasing); | 240 this->force_antialiasing_ = (flags & kUseAntialiasing); |
| 242 this->force_blending_with_shaders_ = (flags & kForceShaders); | 241 this->force_blending_with_shaders_ = (flags & kForceShaders); |
| 243 | 242 |
| 244 if ((flags & kUseAntialiasing) && (test_type_ == PIXEL_TEST_GL)) { | 243 if ((flags & kUseAntialiasing) && (test_type_ == PIXEL_TEST_GL)) { |
| 245 // Anti aliasing causes differences up to 8 pixels at the edges. | 244 // Anti aliasing causes differences up to 8 pixels at the edges. |
| 246 int large_error_allowed = 8; | 245 int large_error_allowed = 8; |
| 247 // Blending results might differ with one pixel. | 246 // Blending results might differ with one pixel. |
| 248 int small_error_allowed = 1; | 247 int small_error_allowed = 1; |
| 249 // Most of the errors are one pixel errors. | 248 // Most of the errors are one pixel errors. |
| 250 float percentage_pixels_small_error = 13.1f; | 249 float percentage_pixels_small_error = 13.1f; |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 } | 429 } |
| 431 | 430 |
| 432 TEST_F(LayerTreeHostBlendingPixelTest, | 431 TEST_F(LayerTreeHostBlendingPixelTest, |
| 433 BlendingWithRenderPassShadersWithMask_GL) { | 432 BlendingWithRenderPassShadersWithMask_GL) { |
| 434 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, | 433 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, |
| 435 FILE_PATH_LITERAL("blending_render_pass_mask.png"), | 434 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 436 kUseMasks | kForceShaders); | 435 kUseMasks | kForceShaders); |
| 437 } | 436 } |
| 438 | 437 |
| 439 TEST_F(LayerTreeHostBlendingPixelTest, | 438 TEST_F(LayerTreeHostBlendingPixelTest, |
| 439 BlendingWithRenderPassShadersWithMask_GL_TextureRect) { |
| 440 RunBlendingWithRenderPass(GL_ZERO_COPY_RECT_DRAW, |
| 441 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 442 kUseMasks | kForceShaders); |
| 443 } |
| 444 |
| 445 TEST_F(LayerTreeHostBlendingPixelTest, |
| 440 BlendingWithRenderPassShadersWithMaskAA_GL) { | 446 BlendingWithRenderPassShadersWithMaskAA_GL) { |
| 441 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, | 447 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, |
| 442 FILE_PATH_LITERAL("blending_render_pass_mask.png"), | 448 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 443 kUseMasks | kUseAntialiasing | kForceShaders); | 449 kUseMasks | kUseAntialiasing | kForceShaders); |
| 444 } | 450 } |
| 445 | 451 |
| 446 TEST_F(LayerTreeHostBlendingPixelTest, | 452 TEST_F(LayerTreeHostBlendingPixelTest, |
| 453 BlendingWithRenderPassShadersWithMaskAA_GL_TextureRect) { |
| 454 RunBlendingWithRenderPass(GL_ZERO_COPY_RECT_DRAW, |
| 455 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 456 kUseMasks | kUseAntialiasing | kForceShaders); |
| 457 } |
| 458 |
| 459 TEST_F(LayerTreeHostBlendingPixelTest, |
| 447 BlendingWithRenderPassShadersColorMatrix_GL) { | 460 BlendingWithRenderPassShadersColorMatrix_GL) { |
| 448 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, | 461 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, |
| 449 FILE_PATH_LITERAL("blending_render_pass.png"), | 462 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 450 kUseColorMatrix | kForceShaders); | 463 kUseColorMatrix | kForceShaders); |
| 451 } | 464 } |
| 452 | 465 |
| 453 TEST_F(LayerTreeHostBlendingPixelTest, | 466 TEST_F(LayerTreeHostBlendingPixelTest, |
| 454 BlendingWithRenderPassShadersColorMatrixAA_GL) { | 467 BlendingWithRenderPassShadersColorMatrixAA_GL) { |
| 455 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, | 468 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, |
| 456 FILE_PATH_LITERAL("blending_render_pass.png"), | 469 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 457 kUseAntialiasing | kUseColorMatrix | kForceShaders); | 470 kUseAntialiasing | kUseColorMatrix | kForceShaders); |
| 458 } | 471 } |
| 459 | 472 |
| 460 TEST_F(LayerTreeHostBlendingPixelTest, | 473 TEST_F(LayerTreeHostBlendingPixelTest, |
| 461 BlendingWithRenderPassShadersWithMaskColorMatrix_GL) { | 474 BlendingWithRenderPassShadersWithMaskColorMatrix_GL) { |
| 462 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, | 475 RunBlendingWithRenderPass(GL_ASYNC_UPLOAD_2D_DRAW, |
| 463 FILE_PATH_LITERAL("blending_render_pass_mask.png"), | 476 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 464 kUseMasks | kUseColorMatrix | kForceShaders); | 477 kUseMasks | kUseColorMatrix | kForceShaders); |
| 465 } | 478 } |
| 466 | 479 |
| 467 TEST_F(LayerTreeHostBlendingPixelTest, | 480 TEST_F(LayerTreeHostBlendingPixelTest, |
| 481 BlendingWithRenderPassShadersWithMaskColorMatrix_GL_TextureRect) { |
| 482 RunBlendingWithRenderPass(GL_ZERO_COPY_RECT_DRAW, |
| 483 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 484 kUseMasks | kUseColorMatrix | kForceShaders); |
| 485 } |
| 486 |
| 487 TEST_F(LayerTreeHostBlendingPixelTest, |
| 468 BlendingWithRenderPassShadersWithMaskColorMatrixAA_GL) { | 488 BlendingWithRenderPassShadersWithMaskColorMatrixAA_GL) { |
| 469 RunBlendingWithRenderPass( | 489 RunBlendingWithRenderPass( |
| 470 GL_ASYNC_UPLOAD_2D_DRAW, | 490 GL_ASYNC_UPLOAD_2D_DRAW, |
| 471 FILE_PATH_LITERAL("blending_render_pass_mask.png"), | 491 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 472 kUseMasks | kUseAntialiasing | kUseColorMatrix | kForceShaders); | 492 kUseMasks | kUseAntialiasing | kUseColorMatrix | kForceShaders); |
| 473 } | 493 } |
| 474 | 494 |
| 475 } // namespace | 495 } // namespace |
| 476 } // namespace cc | 496 } // namespace cc |
| 477 | 497 |
| 478 #endif // OS_ANDROID | 498 #endif // OS_ANDROID |
| OLD | NEW |