| 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/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_test.h" | 7 #include "cc/test/layer_tree_pixel_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) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 0x00000000 // transparent | 45 0x00000000 // transparent |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 const int kBlendModesCount = arraysize(kBlendModes); | 48 const int kBlendModesCount = arraysize(kBlendModes); |
| 49 const int kCSSTestColorsCount = arraysize(kCSSTestColors); | 49 const int kCSSTestColorsCount = arraysize(kCSSTestColors); |
| 50 | 50 |
| 51 using RenderPassOptions = uint32; | 51 using RenderPassOptions = uint32; |
| 52 const uint32 kUseMasks = 1 << 0; | 52 const uint32 kUseMasks = 1 << 0; |
| 53 const uint32 kUseAntialiasing = 1 << 1; | 53 const uint32 kUseAntialiasing = 1 << 1; |
| 54 const uint32 kUseColorMatrix = 1 << 2; | 54 const uint32 kUseColorMatrix = 1 << 2; |
| 55 const uint32 kForceShaders = 1 << 3; |
| 55 | 56 |
| 56 class LayerTreeHostBlendingPixelTest : public LayerTreePixelTest { | 57 class LayerTreeHostBlendingPixelTest : public LayerTreePixelTest { |
| 57 public: | 58 public: |
| 58 LayerTreeHostBlendingPixelTest() { | 59 LayerTreeHostBlendingPixelTest() |
| 60 : force_antialiasing_(false), force_blending_with_shaders_(false) { |
| 59 pixel_comparator_.reset(new FuzzyPixelOffByOneComparator(true)); | 61 pixel_comparator_.reset(new FuzzyPixelOffByOneComparator(true)); |
| 60 } | 62 } |
| 61 | 63 |
| 62 virtual void InitializeSettings(LayerTreeSettings* settings) override { | 64 virtual void InitializeSettings(LayerTreeSettings* settings) override { |
| 63 settings->force_antialiasing = force_antialiasing_; | 65 settings->force_antialiasing = force_antialiasing_; |
| 66 settings->force_blending_with_shaders = force_blending_with_shaders_; |
| 64 } | 67 } |
| 65 | 68 |
| 66 protected: | 69 protected: |
| 67 void RunBlendingWithRootPixelTestType(PixelTestType type) { | 70 void RunBlendingWithRootPixelTestType(PixelTestType type) { |
| 68 const int kLaneWidth = 15; | 71 const int kLaneWidth = 2; |
| 69 const int kLaneHeight = kBlendModesCount * kLaneWidth; | 72 const int kLaneHeight = kLaneWidth; |
| 70 const int kRootSize = (kBlendModesCount + 2) * kLaneWidth; | 73 const int kRootWidth = (kBlendModesCount + 2) * kLaneWidth; |
| 74 const int kRootHeight = 2 * kLaneWidth + kLaneHeight; |
| 71 | 75 |
| 72 scoped_refptr<SolidColorLayer> background = | 76 scoped_refptr<SolidColorLayer> background = |
| 73 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), kCSSOrange); | 77 CreateSolidColorLayer(gfx::Rect(kRootWidth, kRootHeight), kCSSOrange); |
| 74 | 78 |
| 75 // Orange child layers will blend with the green background | 79 // Orange child layers will blend with the green background |
| 76 for (int i = 0; i < kBlendModesCount; ++i) { | 80 for (int i = 0; i < kBlendModesCount; ++i) { |
| 77 gfx::Rect child_rect( | 81 gfx::Rect child_rect( |
| 78 (i + 1) * kLaneWidth, kLaneWidth, kLaneWidth, kLaneHeight); | 82 (i + 1) * kLaneWidth, kLaneWidth, kLaneWidth, kLaneHeight); |
| 79 scoped_refptr<SolidColorLayer> green_lane = | 83 scoped_refptr<SolidColorLayer> green_lane = |
| 80 CreateSolidColorLayer(child_rect, kCSSGreen); | 84 CreateSolidColorLayer(child_rect, kCSSGreen); |
| 81 background->AddChild(green_lane); | 85 background->AddChild(green_lane); |
| 82 green_lane->SetBlendMode(kBlendModes[i]); | 86 green_lane->SetBlendMode(kBlendModes[i]); |
| 83 } | 87 } |
| 84 | 88 |
| 85 RunPixelTest(type, | 89 RunPixelTest(type, |
| 86 background, | 90 background, |
| 87 base::FilePath(FILE_PATH_LITERAL("blending_with_root.png"))); | 91 base::FilePath(FILE_PATH_LITERAL("blending_with_root.png"))); |
| 88 } | 92 } |
| 89 | 93 |
| 90 void RunBlendingWithTransparentPixelTestType(PixelTestType type) { | 94 void RunBlendingWithTransparentPixelTestType(PixelTestType type) { |
| 91 const int kLaneWidth = 15; | 95 const int kLaneWidth = 2; |
| 92 const int kLaneHeight = kBlendModesCount * kLaneWidth; | 96 const int kLaneHeight = 3 * kLaneWidth; |
| 93 const int kRootSize = (kBlendModesCount + 2) * kLaneWidth; | 97 const int kRootWidth = (kBlendModesCount + 2) * kLaneWidth; |
| 98 const int kRootHeight = 2 * kLaneWidth + kLaneHeight; |
| 94 | 99 |
| 95 scoped_refptr<SolidColorLayer> root = | 100 scoped_refptr<SolidColorLayer> root = |
| 96 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), kCSSBrown); | 101 CreateSolidColorLayer(gfx::Rect(kRootWidth, kRootHeight), kCSSBrown); |
| 97 | 102 |
| 98 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 103 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 99 gfx::Rect(0, kLaneWidth * 2, kRootSize, kLaneWidth), kCSSOrange); | 104 gfx::Rect(0, kLaneWidth * 2, kRootWidth, kLaneWidth), kCSSOrange); |
| 100 | 105 |
| 101 root->AddChild(background); | 106 root->AddChild(background); |
| 102 background->SetIsRootForIsolatedGroup(true); | 107 background->SetIsRootForIsolatedGroup(true); |
| 103 | 108 |
| 104 // Orange child layers will blend with the green background | 109 // Orange child layers will blend with the green background |
| 105 for (int i = 0; i < kBlendModesCount; ++i) { | 110 for (int i = 0; i < kBlendModesCount; ++i) { |
| 106 gfx::Rect child_rect( | 111 gfx::Rect child_rect( |
| 107 (i + 1) * kLaneWidth, -kLaneWidth, kLaneWidth, kLaneHeight); | 112 (i + 1) * kLaneWidth, -kLaneWidth, kLaneWidth, kLaneHeight); |
| 108 scoped_refptr<SolidColorLayer> green_lane = | 113 scoped_refptr<SolidColorLayer> green_lane = |
| 109 CreateSolidColorLayer(child_rect, kCSSGreen); | 114 CreateSolidColorLayer(child_rect, kCSSGreen); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 131 SkRect::MakeXYWH(0, i * kLaneHeight, kLaneWidth, kLaneHeight), paint); | 136 SkRect::MakeXYWH(0, i * kLaneHeight, kLaneWidth, kLaneHeight), paint); |
| 132 } | 137 } |
| 133 scoped_refptr<ImageLayer> layer = ImageLayer::Create(); | 138 scoped_refptr<ImageLayer> layer = ImageLayer::Create(); |
| 134 layer->SetIsDrawable(true); | 139 layer->SetIsDrawable(true); |
| 135 layer->SetBounds(gfx::Size(width, height)); | 140 layer->SetBounds(gfx::Size(width, height)); |
| 136 layer->SetBitmap(backing_store); | 141 layer->SetBitmap(backing_store); |
| 137 return layer; | 142 return layer; |
| 138 } | 143 } |
| 139 | 144 |
| 140 void SetupMaskLayer(scoped_refptr<Layer> layer) { | 145 void SetupMaskLayer(scoped_refptr<Layer> layer) { |
| 141 const int kMaskOffset = 5; | 146 const int kMaskOffset = 2; |
| 142 gfx::Size bounds = layer->bounds(); | 147 gfx::Size bounds = layer->bounds(); |
| 143 scoped_refptr<ImageLayer> mask = ImageLayer::Create(); | 148 scoped_refptr<ImageLayer> mask = ImageLayer::Create(); |
| 144 mask->SetIsDrawable(true); | 149 mask->SetIsDrawable(true); |
| 145 mask->SetIsMask(true); | 150 mask->SetIsMask(true); |
| 146 mask->SetBounds(bounds); | 151 mask->SetBounds(bounds); |
| 147 | 152 |
| 148 SkBitmap bitmap; | 153 SkBitmap bitmap; |
| 149 bitmap.allocN32Pixels(bounds.width(), bounds.height()); | 154 bitmap.allocN32Pixels(bounds.width(), bounds.height()); |
| 150 SkCanvas canvas(bitmap); | 155 SkCanvas canvas(bitmap); |
| 151 SkPaint paint; | 156 SkPaint paint; |
| 152 paint.setColor(SK_ColorWHITE); | 157 paint.setColor(SK_ColorWHITE); |
| 153 canvas.clear(SK_ColorTRANSPARENT); | 158 canvas.clear(SK_ColorTRANSPARENT); |
| 154 canvas.drawRect(SkRect::MakeXYWH(kMaskOffset, | 159 canvas.drawRect(SkRect::MakeXYWH(kMaskOffset, |
| 155 kMaskOffset, | 160 kMaskOffset, |
| 156 bounds.width() - kMaskOffset * 2, | 161 bounds.width() - kMaskOffset * 2, |
| 157 bounds.height() - kMaskOffset * 2), | 162 bounds.height() - kMaskOffset * 2), |
| 158 paint); | 163 paint); |
| 159 mask->SetBitmap(bitmap); | 164 mask->SetBitmap(bitmap); |
| 160 layer->SetMaskLayer(mask.get()); | 165 layer->SetMaskLayer(mask.get()); |
| 161 } | 166 } |
| 162 | 167 |
| 163 void SetupColorMatrix(scoped_refptr<Layer> layer) { | 168 void SetupColorMatrix(scoped_refptr<Layer> layer) { |
| 164 FilterOperations filter_operations; | 169 FilterOperations filter_operations; |
| 165 filter_operations.Append(FilterOperation::CreateSepiaFilter(1.f)); | 170 filter_operations.Append(FilterOperation::CreateSepiaFilter(.001f)); |
| 166 layer->SetFilters(filter_operations); | 171 layer->SetFilters(filter_operations); |
| 167 } | 172 } |
| 168 | 173 |
| 169 void CreateBlendingColorLayers(int width, | 174 void CreateBlendingColorLayers(int lane_width, |
| 170 int height, | 175 int lane_height, |
| 171 scoped_refptr<Layer> background, | 176 scoped_refptr<Layer> background, |
| 172 RenderPassOptions flags) { | 177 RenderPassOptions flags) { |
| 173 const int kLanesCount = kBlendModesCount + 4; | 178 const int kLanesCount = kBlendModesCount + 4; |
| 174 int lane_width = width / kLanesCount; | |
| 175 const SkColor kMiscOpaqueColor = 0xffc86464; | 179 const SkColor kMiscOpaqueColor = 0xffc86464; |
| 176 const SkColor kMiscTransparentColor = 0x80c86464; | 180 const SkColor kMiscTransparentColor = 0x80c86464; |
| 177 const SkXfermode::Mode kCoeffBlendMode = SkXfermode::kScreen_Mode; | 181 const SkXfermode::Mode kCoeffBlendMode = SkXfermode::kScreen_Mode; |
| 178 const SkXfermode::Mode kShaderBlendMode = SkXfermode::kColorBurn_Mode; | 182 const SkXfermode::Mode kShaderBlendMode = SkXfermode::kColorBurn_Mode; |
| 179 // add vertical lanes with each of the blend modes | 183 // add vertical lanes with each of the blend modes |
| 180 for (int i = 0; i < kLanesCount; ++i) { | 184 for (int i = 0; i < kLanesCount; ++i) { |
| 181 gfx::Rect child_rect(i * lane_width, 0, lane_width, height); | 185 gfx::Rect child_rect(i * lane_width, 0, lane_width, lane_height); |
| 182 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; | 186 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; |
| 183 float opacity = 1.f; | 187 float opacity = 1.f; |
| 184 SkColor color = kMiscOpaqueColor; | 188 SkColor color = kMiscOpaqueColor; |
| 185 | 189 |
| 186 if (i < kBlendModesCount) { | 190 if (i < kBlendModesCount) { |
| 187 blend_mode = kBlendModes[i]; | 191 blend_mode = kBlendModes[i]; |
| 188 } else if (i == kBlendModesCount) { | 192 } else if (i == kBlendModesCount) { |
| 189 blend_mode = kCoeffBlendMode; | 193 blend_mode = kCoeffBlendMode; |
| 190 opacity = 0.5f; | 194 opacity = 0.5f; |
| 191 } else if (i == kBlendModesCount + 1) { | 195 } else if (i == kBlendModesCount + 1) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 209 if (flags & kUseColorMatrix) { | 213 if (flags & kUseColorMatrix) { |
| 210 SetupColorMatrix(lane); | 214 SetupColorMatrix(lane); |
| 211 } | 215 } |
| 212 background->AddChild(lane); | 216 background->AddChild(lane); |
| 213 } | 217 } |
| 214 } | 218 } |
| 215 | 219 |
| 216 void RunBlendingWithRenderPass(PixelTestType type, | 220 void RunBlendingWithRenderPass(PixelTestType type, |
| 217 const base::FilePath::CharType* expected_path, | 221 const base::FilePath::CharType* expected_path, |
| 218 RenderPassOptions flags) { | 222 RenderPassOptions flags) { |
| 219 const int kRootSize = 400; | 223 const int kLaneWidth = 8; |
| 224 const int kLaneHeight = kLaneWidth * kCSSTestColorsCount; |
| 225 const int kRootSize = kLaneHeight; |
| 220 | 226 |
| 221 scoped_refptr<SolidColorLayer> root = | 227 scoped_refptr<SolidColorLayer> root = |
| 222 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), SK_ColorWHITE); | 228 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), SK_ColorWHITE); |
| 223 scoped_refptr<Layer> background = | 229 scoped_refptr<Layer> background = |
| 224 CreateColorfulBackdropLayer(kRootSize, kRootSize); | 230 CreateColorfulBackdropLayer(kRootSize, kRootSize); |
| 225 | 231 |
| 226 background->SetIsRootForIsolatedGroup(true); | 232 background->SetIsRootForIsolatedGroup(true); |
| 227 root->AddChild(background); | 233 root->AddChild(background); |
| 228 | 234 |
| 229 CreateBlendingColorLayers(kRootSize, kRootSize, background.get(), flags); | 235 CreateBlendingColorLayers(kLaneWidth, kLaneHeight, background.get(), flags); |
| 230 | 236 |
| 231 this->impl_side_painting_ = false; | 237 this->impl_side_painting_ = false; |
| 232 this->force_antialiasing_ = (flags & kUseAntialiasing); | 238 this->force_antialiasing_ = (flags & kUseAntialiasing); |
| 239 this->force_blending_with_shaders_ = (flags & kForceShaders); |
| 233 | 240 |
| 234 if ((flags & kUseAntialiasing) && (type == PIXEL_TEST_GL)) { | 241 if ((flags & kUseAntialiasing) && (type == PIXEL_TEST_GL)) { |
| 235 // Anti aliasing causes differences up to 7 pixels at the edges. | 242 // Anti aliasing causes differences up to 8 pixels at the edges. |
| 236 // Several pixels have 9 units difference on the alpha channel. | 243 int large_error_allowed = 8; |
| 237 int large_error_allowed = (flags & kUseMasks) ? 7 : 9; | |
| 238 // Blending results might differ with one pixel. | 244 // Blending results might differ with one pixel. |
| 239 int small_error_allowed = 1; | 245 int small_error_allowed = 1; |
| 240 // Most of the errors are one pixel errors. | 246 // Most of the errors are one pixel errors. |
| 241 float percentage_pixels_small_error = (flags & kUseMasks) ? 7.7f : 12.1f; | 247 float percentage_pixels_small_error = 13.1f; |
| 242 // Because of anti-aliasing, around 3% of pixels (at the edges) have | 248 // Because of anti-aliasing, around 10% of pixels (at the edges) have |
| 243 // bigger errors (from small_error_allowed + 1 to large_error_allowed). | 249 // bigger errors (from small_error_allowed + 1 to large_error_allowed). |
| 244 float percentage_pixels_error = (flags & kUseMasks) ? 12.4f : 15.f; | 250 float percentage_pixels_error = 22.5f; |
| 245 // The average error is still close to 1. | 251 // The average error is still close to 1. |
| 246 float average_error_allowed_in_bad_pixels = | 252 float average_error_allowed_in_bad_pixels = 1.4f; |
| 247 (flags & kUseMasks) ? 1.3f : 1.f; | |
| 248 | |
| 249 // The sepia filter generates more small errors, but the number of large | |
| 250 // errors remains around 3%. | |
| 251 if (flags & kUseColorMatrix) { | |
| 252 percentage_pixels_small_error = (flags & kUseMasks) ? 14.0f : 26.f; | |
| 253 percentage_pixels_error = (flags & kUseMasks) ? 18.5f : 29.f; | |
| 254 average_error_allowed_in_bad_pixels = (flags & kUseMasks) ? 0.9f : 0.7f; | |
| 255 } | |
| 256 | 253 |
| 257 pixel_comparator_.reset( | 254 pixel_comparator_.reset( |
| 258 new FuzzyPixelComparator(false, // discard_alpha | 255 new FuzzyPixelComparator(false, // discard_alpha |
| 259 percentage_pixels_error, | 256 percentage_pixels_error, |
| 260 percentage_pixels_small_error, | |
| 261 average_error_allowed_in_bad_pixels, | |
| 262 large_error_allowed, | |
| 263 small_error_allowed)); | |
| 264 } else if ((flags & kUseColorMatrix) && (type == PIXEL_TEST_GL)) { | |
| 265 float percentage_pixels_error = 100.f; | |
| 266 float percentage_pixels_small_error = 0.f; | |
| 267 float average_error_allowed_in_bad_pixels = 1.f; | |
| 268 int large_error_allowed = 2; | |
| 269 int small_error_allowed = 0; | |
| 270 pixel_comparator_.reset( | |
| 271 new FuzzyPixelComparator(false, // discard_alpha | |
| 272 percentage_pixels_error, | |
| 273 percentage_pixels_small_error, | 257 percentage_pixels_small_error, |
| 274 average_error_allowed_in_bad_pixels, | 258 average_error_allowed_in_bad_pixels, |
| 275 large_error_allowed, | 259 large_error_allowed, |
| 276 small_error_allowed)); | 260 small_error_allowed)); |
| 277 } | 261 } |
| 278 | 262 |
| 279 RunPixelTest(type, root, base::FilePath(expected_path)); | 263 RunPixelTest(type, root, base::FilePath(expected_path)); |
| 280 } | 264 } |
| 281 | 265 |
| 282 bool force_antialiasing_ = false; | 266 bool force_antialiasing_; |
| 267 bool force_blending_with_shaders_; |
| 283 }; | 268 }; |
| 284 | 269 |
| 285 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRoot_GL) { | 270 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRoot_GL) { |
| 286 RunBlendingWithRootPixelTestType(PIXEL_TEST_GL); | 271 RunBlendingWithRootPixelTestType(PIXEL_TEST_GL); |
| 287 } | 272 } |
| 288 | 273 |
| 289 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRoot_Software) { | 274 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRoot_Software) { |
| 290 RunBlendingWithRootPixelTestType(PIXEL_TEST_SOFTWARE); | 275 RunBlendingWithRootPixelTestType(PIXEL_TEST_SOFTWARE); |
| 291 } | 276 } |
| 292 | 277 |
| 293 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithBackgroundFilter) { | 278 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithBackgroundFilter) { |
| 294 const int kLaneWidth = 15; | 279 const int kLaneWidth = 2; |
| 295 const int kLaneHeight = kBlendModesCount * kLaneWidth; | 280 const int kLaneHeight = kLaneWidth; |
| 296 const int kRootSize = (kBlendModesCount + 2) * kLaneWidth; | 281 const int kRootWidth = (kBlendModesCount + 2) * kLaneWidth; |
| 282 const int kRootHeight = 2 * kLaneWidth + kLaneHeight; |
| 297 | 283 |
| 298 scoped_refptr<SolidColorLayer> background = | 284 scoped_refptr<SolidColorLayer> background = |
| 299 CreateSolidColorLayer(gfx::Rect(kRootSize, kRootSize), kCSSOrange); | 285 CreateSolidColorLayer(gfx::Rect(kRootWidth, kRootHeight), kCSSOrange); |
| 300 | 286 |
| 301 // Orange child layers have a background filter set and they will blend with | 287 // Orange child layers have a background filter set and they will blend with |
| 302 // the green background | 288 // the green background |
| 303 for (int i = 0; i < kBlendModesCount; ++i) { | 289 for (int i = 0; i < kBlendModesCount; ++i) { |
| 304 gfx::Rect child_rect( | 290 gfx::Rect child_rect( |
| 305 (i + 1) * kLaneWidth, kLaneWidth, kLaneWidth, kLaneHeight); | 291 (i + 1) * kLaneWidth, kLaneWidth, kLaneWidth, kLaneHeight); |
| 306 scoped_refptr<SolidColorLayer> green_lane = | 292 scoped_refptr<SolidColorLayer> green_lane = |
| 307 CreateSolidColorLayer(child_rect, kCSSGreen); | 293 CreateSolidColorLayer(child_rect, kCSSGreen); |
| 308 background->AddChild(green_lane); | 294 background->AddChild(green_lane); |
| 309 | 295 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 | 356 |
| 371 TEST_F(LayerTreeHostBlendingPixelTest, | 357 TEST_F(LayerTreeHostBlendingPixelTest, |
| 372 BlendingWithRenderPassWithMaskAA_Software) { | 358 BlendingWithRenderPassWithMaskAA_Software) { |
| 373 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, | 359 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, |
| 374 FILE_PATH_LITERAL("blending_render_pass_mask.png"), | 360 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 375 kUseMasks | kUseAntialiasing); | 361 kUseMasks | kUseAntialiasing); |
| 376 } | 362 } |
| 377 | 363 |
| 378 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRenderPassColorMatrix_GL) { | 364 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRenderPassColorMatrix_GL) { |
| 379 RunBlendingWithRenderPass(PIXEL_TEST_GL, | 365 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 380 FILE_PATH_LITERAL("blending_render_pass_cm.png"), | 366 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 381 kUseColorMatrix); | 367 kUseColorMatrix); |
| 382 } | 368 } |
| 383 | 369 |
| 384 TEST_F(LayerTreeHostBlendingPixelTest, | 370 TEST_F(LayerTreeHostBlendingPixelTest, |
| 385 BlendingWithRenderPassColorMatrix_Software) { | 371 BlendingWithRenderPassColorMatrix_Software) { |
| 386 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, | 372 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, |
| 387 FILE_PATH_LITERAL("blending_render_pass_cm.png"), | 373 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 388 kUseColorMatrix); | 374 kUseColorMatrix); |
| 389 } | 375 } |
| 390 | 376 |
| 391 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRenderPassColorMatrixAA_GL) { | 377 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRenderPassColorMatrixAA_GL) { |
| 392 RunBlendingWithRenderPass(PIXEL_TEST_GL, | 378 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 393 FILE_PATH_LITERAL("blending_render_pass_cm.png"), | 379 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 394 kUseAntialiasing | kUseColorMatrix); | 380 kUseAntialiasing | kUseColorMatrix); |
| 395 } | 381 } |
| 396 | 382 |
| 397 TEST_F(LayerTreeHostBlendingPixelTest, | 383 TEST_F(LayerTreeHostBlendingPixelTest, |
| 398 BlendingWithRenderPassColorMatrixAA_Software) { | 384 BlendingWithRenderPassColorMatrixAA_Software) { |
| 399 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, | 385 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, |
| 400 FILE_PATH_LITERAL("blending_render_pass_cm.png"), | 386 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 401 kUseAntialiasing | kUseColorMatrix); | 387 kUseAntialiasing | kUseColorMatrix); |
| 402 } | 388 } |
| 403 | 389 |
| 404 TEST_F(LayerTreeHostBlendingPixelTest, | 390 TEST_F(LayerTreeHostBlendingPixelTest, |
| 405 BlendingWithRenderPassWithMaskColorMatrix_GL) { | 391 BlendingWithRenderPassWithMaskColorMatrix_GL) { |
| 406 RunBlendingWithRenderPass( | 392 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 407 PIXEL_TEST_GL, | 393 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 408 FILE_PATH_LITERAL("blending_render_pass_mask_cm.png"), | 394 kUseMasks | kUseColorMatrix); |
| 409 kUseMasks | kUseColorMatrix); | |
| 410 } | 395 } |
| 411 | 396 |
| 412 TEST_F(LayerTreeHostBlendingPixelTest, | 397 TEST_F(LayerTreeHostBlendingPixelTest, |
| 413 BlendingWithRenderPassWithMaskColorMatrix_Software) { | 398 BlendingWithRenderPassWithMaskColorMatrix_Software) { |
| 414 RunBlendingWithRenderPass( | 399 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, |
| 415 PIXEL_TEST_SOFTWARE, | 400 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 416 FILE_PATH_LITERAL("blending_render_pass_mask_cm.png"), | 401 kUseMasks | kUseColorMatrix); |
| 417 kUseMasks | kUseColorMatrix); | |
| 418 } | 402 } |
| 419 | 403 |
| 420 TEST_F(LayerTreeHostBlendingPixelTest, | 404 TEST_F(LayerTreeHostBlendingPixelTest, |
| 421 BlendingWithRenderPassWithMaskColorMatrixAA_GL) { | 405 BlendingWithRenderPassWithMaskColorMatrixAA_GL) { |
| 422 RunBlendingWithRenderPass( | 406 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 423 PIXEL_TEST_GL, | 407 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 424 FILE_PATH_LITERAL("blending_render_pass_mask_cm.png"), | 408 kUseMasks | kUseAntialiasing | kUseColorMatrix); |
| 425 kUseMasks | kUseAntialiasing | kUseColorMatrix); | |
| 426 } | 409 } |
| 427 | 410 |
| 428 TEST_F(LayerTreeHostBlendingPixelTest, | 411 TEST_F(LayerTreeHostBlendingPixelTest, |
| 429 BlendingWithRenderPassWithMaskColorMatrixAA_Software) { | 412 BlendingWithRenderPassWithMaskColorMatrixAA_Software) { |
| 413 RunBlendingWithRenderPass(PIXEL_TEST_SOFTWARE, |
| 414 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 415 kUseMasks | kUseAntialiasing | kUseColorMatrix); |
| 416 } |
| 417 |
| 418 // Tests for render passes forcing shaders for all the blend modes. |
| 419 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRenderPassShaders_GL) { |
| 420 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 421 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 422 kForceShaders); |
| 423 } |
| 424 |
| 425 TEST_F(LayerTreeHostBlendingPixelTest, BlendingWithRenderPassShadersAA_GL) { |
| 426 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 427 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 428 kUseAntialiasing | kForceShaders); |
| 429 } |
| 430 |
| 431 TEST_F(LayerTreeHostBlendingPixelTest, |
| 432 BlendingWithRenderPassShadersWithMask_GL) { |
| 433 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 434 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 435 kUseMasks | kForceShaders); |
| 436 } |
| 437 |
| 438 TEST_F(LayerTreeHostBlendingPixelTest, |
| 439 BlendingWithRenderPassShadersWithMaskAA_GL) { |
| 440 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 441 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 442 kUseMasks | kUseAntialiasing | kForceShaders); |
| 443 } |
| 444 |
| 445 TEST_F(LayerTreeHostBlendingPixelTest, |
| 446 BlendingWithRenderPassShadersColorMatrix_GL) { |
| 447 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 448 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 449 kUseColorMatrix | kForceShaders); |
| 450 } |
| 451 |
| 452 TEST_F(LayerTreeHostBlendingPixelTest, |
| 453 BlendingWithRenderPassShadersColorMatrixAA_GL) { |
| 454 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 455 FILE_PATH_LITERAL("blending_render_pass.png"), |
| 456 kUseAntialiasing | kUseColorMatrix | kForceShaders); |
| 457 } |
| 458 |
| 459 TEST_F(LayerTreeHostBlendingPixelTest, |
| 460 BlendingWithRenderPassShadersWithMaskColorMatrix_GL) { |
| 461 RunBlendingWithRenderPass(PIXEL_TEST_GL, |
| 462 FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 463 kUseMasks | kUseColorMatrix | kForceShaders); |
| 464 } |
| 465 |
| 466 TEST_F(LayerTreeHostBlendingPixelTest, |
| 467 BlendingWithRenderPassShadersWithMaskColorMatrixAA_GL) { |
| 430 RunBlendingWithRenderPass( | 468 RunBlendingWithRenderPass( |
| 431 PIXEL_TEST_SOFTWARE, | 469 PIXEL_TEST_GL, FILE_PATH_LITERAL("blending_render_pass_mask.png"), |
| 432 FILE_PATH_LITERAL("blending_render_pass_mask_cm.png"), | 470 kUseMasks | kUseAntialiasing | kUseColorMatrix | kForceShaders); |
| 433 kUseMasks | kUseAntialiasing | kUseColorMatrix); | |
| 434 } | 471 } |
| 435 | 472 |
| 436 } // namespace | 473 } // namespace |
| 437 } // namespace cc | 474 } // namespace cc |
| 438 | 475 |
| 439 #endif // OS_ANDROID | 476 #endif // OS_ANDROID |
| OLD | NEW |