| 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 "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 #include "cc/output/copy_output_request.h" | 6 #include "cc/output/copy_output_request.h" |
| 7 #include "cc/output/copy_output_result.h" | 7 #include "cc/output/copy_output_result.h" |
| 8 #include "cc/test/layer_tree_pixel_test.h" | 8 #include "cc/test/layer_tree_pixel_test.h" |
| 9 #include "cc/test/paths.h" | 9 #include "cc/test/paths.h" |
| 10 | 10 |
| 11 #if !defined(OS_ANDROID) | 11 #if !defined(OS_ANDROID) |
| 12 | 12 |
| 13 namespace cc { | 13 namespace cc { |
| 14 namespace { | 14 namespace { |
| 15 | 15 |
| 16 class LayerTreeHostReadbackPixelTest : public LayerTreePixelTest { | 16 class LayerTreeHostReadbackPixelTest : public LayerTreePixelTest { |
| 17 protected: | 17 protected: |
| 18 LayerTreeHostReadbackPixelTest() : force_readback_as_bitmap_(false) {} | |
| 19 | |
| 20 virtual scoped_ptr<CopyOutputRequest> CreateCopyOutputRequest() OVERRIDE { | 18 virtual scoped_ptr<CopyOutputRequest> CreateCopyOutputRequest() OVERRIDE { |
| 21 scoped_ptr<CopyOutputRequest> request; | 19 scoped_ptr<CopyOutputRequest> request; |
| 22 if (force_readback_as_bitmap_) { | 20 |
| 23 request = CopyOutputRequest::CreateBitmapRequest( | 21 switch (test_type_) { |
| 24 base::Bind(&LayerTreeHostReadbackPixelTest::ReadbackResultAsBitmap, | 22 case GL_WITH_BITMAP: |
| 25 base::Unretained(this))); | 23 case SOFTWARE_WITH_BITMAP: |
| 26 } else if (!use_gl_) { | 24 request = CopyOutputRequest::CreateBitmapRequest( |
| 27 request = CopyOutputRequest::CreateRequest( | 25 base::Bind(&LayerTreeHostReadbackPixelTest::ReadbackResultAsBitmap, |
| 28 base::Bind(&LayerTreeHostReadbackPixelTest::ReadbackResultAsBitmap, | 26 base::Unretained(this))); |
| 29 base::Unretained(this))); | 27 break; |
| 30 } else { | 28 case SOFTWARE_WITH_DEFAULT: |
| 31 request = CopyOutputRequest::CreateRequest( | 29 request = CopyOutputRequest::CreateRequest( |
| 32 base::Bind(&LayerTreeHostReadbackPixelTest::ReadbackResultAsTexture, | 30 base::Bind(&LayerTreeHostReadbackPixelTest::ReadbackResultAsBitmap, |
| 33 base::Unretained(this))); | 31 base::Unretained(this))); |
| 32 break; |
| 33 case GL_WITH_DEFAULT: |
| 34 request = CopyOutputRequest::CreateRequest( |
| 35 base::Bind(&LayerTreeHostReadbackPixelTest::ReadbackResultAsTexture, |
| 36 base::Unretained(this))); |
| 37 break; |
| 34 } | 38 } |
| 35 | 39 |
| 36 if (!copy_subrect_.IsEmpty()) | 40 if (!copy_subrect_.IsEmpty()) |
| 37 request->set_area(copy_subrect_); | 41 request->set_area(copy_subrect_); |
| 38 return request.Pass(); | 42 return request.Pass(); |
| 39 } | 43 } |
| 40 | 44 |
| 41 void ReadbackResultAsBitmap(scoped_ptr<CopyOutputResult> result) { | 45 void ReadbackResultAsBitmap(scoped_ptr<CopyOutputResult> result) { |
| 42 EXPECT_TRUE(result->HasBitmap()); | 46 EXPECT_TRUE(result->HasBitmap()); |
| 43 result_bitmap_ = result->TakeBitmap().Pass(); | 47 result_bitmap_ = result->TakeBitmap().Pass(); |
| 44 EndTest(); | 48 EndTest(); |
| 45 } | 49 } |
| 46 | 50 |
| 47 void ReadbackResultAsTexture(scoped_ptr<CopyOutputResult> result) { | 51 void ReadbackResultAsTexture(scoped_ptr<CopyOutputResult> result) { |
| 48 EXPECT_TRUE(result->HasTexture()); | 52 EXPECT_TRUE(result->HasTexture()); |
| 49 | 53 |
| 50 scoped_ptr<TextureMailbox> texture_mailbox = result->TakeTexture().Pass(); | 54 scoped_ptr<TextureMailbox> texture_mailbox = result->TakeTexture().Pass(); |
| 51 EXPECT_TRUE(texture_mailbox->IsValid()); | 55 EXPECT_TRUE(texture_mailbox->IsValid()); |
| 52 EXPECT_TRUE(texture_mailbox->IsTexture()); | 56 EXPECT_TRUE(texture_mailbox->IsTexture()); |
| 53 | 57 |
| 54 scoped_ptr<SkBitmap> bitmap = | 58 scoped_ptr<SkBitmap> bitmap = |
| 55 CopyTextureMailboxToBitmap(result->size(), *texture_mailbox); | 59 CopyTextureMailboxToBitmap(result->size(), *texture_mailbox); |
| 56 ReadbackResultAsBitmap(CopyOutputResult::CreateBitmapResult(bitmap.Pass())); | 60 ReadbackResultAsBitmap(CopyOutputResult::CreateBitmapResult(bitmap.Pass())); |
| 57 | 61 |
| 58 texture_mailbox->RunReleaseCallback(0, false); | 62 texture_mailbox->RunReleaseCallback(0, false); |
| 59 } | 63 } |
| 60 | 64 |
| 61 bool force_readback_as_bitmap_; | |
| 62 gfx::Rect copy_subrect_; | 65 gfx::Rect copy_subrect_; |
| 63 }; | 66 }; |
| 64 | 67 |
| 65 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_Software) { | 68 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_Software) { |
| 66 use_gl_ = false; | |
| 67 force_readback_as_bitmap_ = false; | |
| 68 | |
| 69 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 69 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 70 gfx::Rect(200, 200), SK_ColorWHITE); | 70 gfx::Rect(200, 200), SK_ColorWHITE); |
| 71 | 71 |
| 72 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 72 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 73 gfx::Rect(200, 200), SK_ColorGREEN); | 73 gfx::Rect(200, 200), SK_ColorGREEN); |
| 74 background->AddChild(green); | 74 background->AddChild(green); |
| 75 | 75 |
| 76 RunPixelTest(background, | 76 RunPixelTest(SOFTWARE_WITH_DEFAULT, |
| 77 background, |
| 77 base::FilePath(FILE_PATH_LITERAL( | 78 base::FilePath(FILE_PATH_LITERAL( |
| 78 "green.png"))); | 79 "green.png"))); |
| 79 } | 80 } |
| 80 | 81 |
| 81 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_Software_Bitmap) { | 82 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_Software_Bitmap) { |
| 82 use_gl_ = false; | |
| 83 force_readback_as_bitmap_ = true; | |
| 84 | |
| 85 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 83 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 86 gfx::Rect(200, 200), SK_ColorWHITE); | 84 gfx::Rect(200, 200), SK_ColorWHITE); |
| 87 | 85 |
| 88 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 86 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 89 gfx::Rect(200, 200), SK_ColorGREEN); | 87 gfx::Rect(200, 200), SK_ColorGREEN); |
| 90 background->AddChild(green); | 88 background->AddChild(green); |
| 91 | 89 |
| 92 RunPixelTest(background, | 90 RunPixelTest(SOFTWARE_WITH_BITMAP, |
| 91 background, |
| 93 base::FilePath(FILE_PATH_LITERAL( | 92 base::FilePath(FILE_PATH_LITERAL( |
| 94 "green.png"))); | 93 "green.png"))); |
| 95 } | 94 } |
| 96 | 95 |
| 97 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL_Bitmap) { | 96 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL_Bitmap) { |
| 98 use_gl_ = true; | |
| 99 force_readback_as_bitmap_ = true; | |
| 100 | |
| 101 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 97 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 102 gfx::Rect(200, 200), SK_ColorWHITE); | 98 gfx::Rect(200, 200), SK_ColorWHITE); |
| 103 | 99 |
| 104 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 100 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 105 gfx::Rect(200, 200), SK_ColorGREEN); | 101 gfx::Rect(200, 200), SK_ColorGREEN); |
| 106 background->AddChild(green); | 102 background->AddChild(green); |
| 107 | 103 |
| 108 RunPixelTest(background, | 104 RunPixelTest(GL_WITH_BITMAP, |
| 105 background, |
| 109 base::FilePath(FILE_PATH_LITERAL( | 106 base::FilePath(FILE_PATH_LITERAL( |
| 110 "green.png"))); | 107 "green.png"))); |
| 111 } | 108 } |
| 112 | 109 |
| 113 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL) { | 110 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL) { |
| 114 use_gl_ = true; | |
| 115 force_readback_as_bitmap_ = false; | |
| 116 | |
| 117 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 111 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 118 gfx::Rect(200, 200), SK_ColorWHITE); | 112 gfx::Rect(200, 200), SK_ColorWHITE); |
| 119 | 113 |
| 120 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 114 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 121 gfx::Rect(200, 200), SK_ColorGREEN); | 115 gfx::Rect(200, 200), SK_ColorGREEN); |
| 122 background->AddChild(green); | 116 background->AddChild(green); |
| 123 | 117 |
| 124 RunPixelTest(background, | 118 RunPixelTest(GL_WITH_DEFAULT, |
| 119 background, |
| 125 base::FilePath(FILE_PATH_LITERAL( | 120 base::FilePath(FILE_PATH_LITERAL( |
| 126 "green.png"))); | 121 "green.png"))); |
| 127 } | 122 } |
| 128 | 123 |
| 129 TEST_F(LayerTreeHostReadbackPixelTest, | 124 TEST_F(LayerTreeHostReadbackPixelTest, |
| 130 ReadbackRootLayerWithChild_Software) { | 125 ReadbackRootLayerWithChild_Software) { |
| 131 use_gl_ = false; | |
| 132 force_readback_as_bitmap_ = false; | |
| 133 | |
| 134 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 126 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 135 gfx::Rect(200, 200), SK_ColorWHITE); | 127 gfx::Rect(200, 200), SK_ColorWHITE); |
| 136 | 128 |
| 137 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 129 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 138 gfx::Rect(200, 200), SK_ColorGREEN); | 130 gfx::Rect(200, 200), SK_ColorGREEN); |
| 139 background->AddChild(green); | 131 background->AddChild(green); |
| 140 | 132 |
| 141 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 133 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 142 gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); | 134 gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
| 143 green->AddChild(blue); | 135 green->AddChild(blue); |
| 144 | 136 |
| 145 RunPixelTest(background, | 137 RunPixelTest(SOFTWARE_WITH_DEFAULT, |
| 138 background, |
| 146 base::FilePath(FILE_PATH_LITERAL( | 139 base::FilePath(FILE_PATH_LITERAL( |
| 147 "green_with_blue_corner.png"))); | 140 "green_with_blue_corner.png"))); |
| 148 } | 141 } |
| 149 | 142 |
| 150 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_GL_Bitmap) { | 143 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_GL_Bitmap) { |
| 151 use_gl_ = true; | |
| 152 force_readback_as_bitmap_ = true; | |
| 153 | |
| 154 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 144 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 155 gfx::Rect(200, 200), SK_ColorWHITE); | 145 gfx::Rect(200, 200), SK_ColorWHITE); |
| 156 | 146 |
| 157 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 147 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 158 gfx::Rect(200, 200), SK_ColorGREEN); | 148 gfx::Rect(200, 200), SK_ColorGREEN); |
| 159 background->AddChild(green); | 149 background->AddChild(green); |
| 160 | 150 |
| 161 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 151 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 162 gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); | 152 gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
| 163 green->AddChild(blue); | 153 green->AddChild(blue); |
| 164 | 154 |
| 165 RunPixelTest(background, | 155 RunPixelTest(GL_WITH_BITMAP, |
| 156 background, |
| 166 base::FilePath(FILE_PATH_LITERAL( | 157 base::FilePath(FILE_PATH_LITERAL( |
| 167 "green_with_blue_corner.png"))); | 158 "green_with_blue_corner.png"))); |
| 168 } | 159 } |
| 169 | 160 |
| 170 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_GL) { | 161 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_GL) { |
| 171 use_gl_ = true; | |
| 172 force_readback_as_bitmap_ = false; | |
| 173 | |
| 174 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 162 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 175 gfx::Rect(200, 200), SK_ColorWHITE); | 163 gfx::Rect(200, 200), SK_ColorWHITE); |
| 176 | 164 |
| 177 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 165 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 178 gfx::Rect(200, 200), SK_ColorGREEN); | 166 gfx::Rect(200, 200), SK_ColorGREEN); |
| 179 background->AddChild(green); | 167 background->AddChild(green); |
| 180 | 168 |
| 181 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 169 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 182 gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); | 170 gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
| 183 green->AddChild(blue); | 171 green->AddChild(blue); |
| 184 | 172 |
| 185 RunPixelTest(background, | 173 RunPixelTest(GL_WITH_DEFAULT, |
| 174 background, |
| 186 base::FilePath(FILE_PATH_LITERAL( | 175 base::FilePath(FILE_PATH_LITERAL( |
| 187 "green_with_blue_corner.png"))); | 176 "green_with_blue_corner.png"))); |
| 188 } | 177 } |
| 189 | 178 |
| 190 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_Software) { | 179 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_Software) { |
| 191 use_gl_ = false; | |
| 192 force_readback_as_bitmap_ = false; | |
| 193 | |
| 194 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 180 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 195 gfx::Rect(200, 200), SK_ColorWHITE); | 181 gfx::Rect(200, 200), SK_ColorWHITE); |
| 196 | 182 |
| 197 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 183 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 198 gfx::Rect(200, 200), SK_ColorGREEN); | 184 gfx::Rect(200, 200), SK_ColorGREEN); |
| 199 background->AddChild(green); | 185 background->AddChild(green); |
| 200 | 186 |
| 201 RunPixelTestWithReadbackTarget(background, | 187 RunPixelTestWithReadbackTarget(SOFTWARE_WITH_DEFAULT, |
| 188 background, |
| 202 green.get(), | 189 green.get(), |
| 203 base::FilePath(FILE_PATH_LITERAL( | 190 base::FilePath(FILE_PATH_LITERAL( |
| 204 "green.png"))); | 191 "green.png"))); |
| 205 } | 192 } |
| 206 | 193 |
| 207 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_GL_Bitmap) { | 194 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_GL_Bitmap) { |
| 208 use_gl_ = true; | |
| 209 force_readback_as_bitmap_ = true; | |
| 210 | |
| 211 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 195 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 212 gfx::Rect(200, 200), SK_ColorWHITE); | 196 gfx::Rect(200, 200), SK_ColorWHITE); |
| 213 | 197 |
| 214 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 198 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 215 gfx::Rect(200, 200), SK_ColorGREEN); | 199 gfx::Rect(200, 200), SK_ColorGREEN); |
| 216 background->AddChild(green); | 200 background->AddChild(green); |
| 217 | 201 |
| 218 RunPixelTestWithReadbackTarget(background, | 202 RunPixelTestWithReadbackTarget(GL_WITH_BITMAP, |
| 203 background, |
| 219 green.get(), | 204 green.get(), |
| 220 base::FilePath(FILE_PATH_LITERAL( | 205 base::FilePath(FILE_PATH_LITERAL( |
| 221 "green.png"))); | 206 "green.png"))); |
| 222 } | 207 } |
| 223 | 208 |
| 224 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_GL) { | 209 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_GL) { |
| 225 use_gl_ = true; | |
| 226 force_readback_as_bitmap_ = false; | |
| 227 | |
| 228 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 210 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 229 gfx::Rect(200, 200), SK_ColorWHITE); | 211 gfx::Rect(200, 200), SK_ColorWHITE); |
| 230 | 212 |
| 231 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 213 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 232 gfx::Rect(200, 200), SK_ColorGREEN); | 214 gfx::Rect(200, 200), SK_ColorGREEN); |
| 233 background->AddChild(green); | 215 background->AddChild(green); |
| 234 | 216 |
| 235 RunPixelTestWithReadbackTarget(background, | 217 RunPixelTestWithReadbackTarget(GL_WITH_DEFAULT, |
| 218 background, |
| 236 green.get(), | 219 green.get(), |
| 237 base::FilePath(FILE_PATH_LITERAL( | 220 base::FilePath(FILE_PATH_LITERAL( |
| 238 "green.png"))); | 221 "green.png"))); |
| 239 } | 222 } |
| 240 | 223 |
| 241 TEST_F(LayerTreeHostReadbackPixelTest, | 224 TEST_F(LayerTreeHostReadbackPixelTest, |
| 242 ReadbackSmallNonRootLayer_Software) { | 225 ReadbackSmallNonRootLayer_Software) { |
| 243 use_gl_ = false; | |
| 244 force_readback_as_bitmap_ = false; | |
| 245 | |
| 246 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 226 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 247 gfx::Rect(200, 200), SK_ColorWHITE); | 227 gfx::Rect(200, 200), SK_ColorWHITE); |
| 248 | 228 |
| 249 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 229 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 250 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); | 230 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
| 251 background->AddChild(green); | 231 background->AddChild(green); |
| 252 | 232 |
| 253 RunPixelTestWithReadbackTarget(background, | 233 RunPixelTestWithReadbackTarget(SOFTWARE_WITH_DEFAULT, |
| 234 background, |
| 254 green.get(), | 235 green.get(), |
| 255 base::FilePath(FILE_PATH_LITERAL( | 236 base::FilePath(FILE_PATH_LITERAL( |
| 256 "green_small.png"))); | 237 "green_small.png"))); |
| 257 } | 238 } |
| 258 | 239 |
| 259 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_GL_Bitmap) { | 240 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_GL_Bitmap) { |
| 260 use_gl_ = true; | |
| 261 force_readback_as_bitmap_ = true; | |
| 262 | |
| 263 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 241 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 264 gfx::Rect(200, 200), SK_ColorWHITE); | 242 gfx::Rect(200, 200), SK_ColorWHITE); |
| 265 | 243 |
| 266 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 244 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 267 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); | 245 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
| 268 background->AddChild(green); | 246 background->AddChild(green); |
| 269 | 247 |
| 270 RunPixelTestWithReadbackTarget(background, | 248 RunPixelTestWithReadbackTarget(GL_WITH_BITMAP, |
| 249 background, |
| 271 green.get(), | 250 green.get(), |
| 272 base::FilePath(FILE_PATH_LITERAL( | 251 base::FilePath(FILE_PATH_LITERAL( |
| 273 "green_small.png"))); | 252 "green_small.png"))); |
| 274 } | 253 } |
| 275 | 254 |
| 276 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_GL) { | 255 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_GL) { |
| 277 use_gl_ = true; | |
| 278 force_readback_as_bitmap_ = false; | |
| 279 | |
| 280 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 256 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 281 gfx::Rect(200, 200), SK_ColorWHITE); | 257 gfx::Rect(200, 200), SK_ColorWHITE); |
| 282 | 258 |
| 283 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 259 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 284 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); | 260 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
| 285 background->AddChild(green); | 261 background->AddChild(green); |
| 286 | 262 |
| 287 RunPixelTestWithReadbackTarget(background, | 263 RunPixelTestWithReadbackTarget(GL_WITH_DEFAULT, |
| 264 background, |
| 288 green.get(), | 265 green.get(), |
| 289 base::FilePath(FILE_PATH_LITERAL( | 266 base::FilePath(FILE_PATH_LITERAL( |
| 290 "green_small.png"))); | 267 "green_small.png"))); |
| 291 } | 268 } |
| 292 | 269 |
| 293 TEST_F(LayerTreeHostReadbackPixelTest, | 270 TEST_F(LayerTreeHostReadbackPixelTest, |
| 294 ReadbackSmallNonRootLayerWithChild_Software) { | 271 ReadbackSmallNonRootLayerWithChild_Software) { |
| 295 use_gl_ = false; | |
| 296 force_readback_as_bitmap_ = false; | |
| 297 | |
| 298 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 272 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 299 gfx::Rect(200, 200), SK_ColorWHITE); | 273 gfx::Rect(200, 200), SK_ColorWHITE); |
| 300 | 274 |
| 301 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 275 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 302 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); | 276 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
| 303 background->AddChild(green); | 277 background->AddChild(green); |
| 304 | 278 |
| 305 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 279 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 306 gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); | 280 gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
| 307 green->AddChild(blue); | 281 green->AddChild(blue); |
| 308 | 282 |
| 309 RunPixelTestWithReadbackTarget(background, | 283 RunPixelTestWithReadbackTarget(SOFTWARE_WITH_DEFAULT, |
| 284 background, |
| 310 green.get(), | 285 green.get(), |
| 311 base::FilePath(FILE_PATH_LITERAL( | 286 base::FilePath(FILE_PATH_LITERAL( |
| 312 "green_small_with_blue_corner.png"))); | 287 "green_small_with_blue_corner.png"))); |
| 313 } | 288 } |
| 314 | 289 |
| 315 TEST_F(LayerTreeHostReadbackPixelTest, | 290 TEST_F(LayerTreeHostReadbackPixelTest, |
| 316 ReadbackSmallNonRootLayerWithChild_GL_Bitmap) { | 291 ReadbackSmallNonRootLayerWithChild_GL_Bitmap) { |
| 317 use_gl_ = true; | |
| 318 force_readback_as_bitmap_ = true; | |
| 319 | |
| 320 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 292 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 321 gfx::Rect(200, 200), SK_ColorWHITE); | 293 gfx::Rect(200, 200), SK_ColorWHITE); |
| 322 | 294 |
| 323 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 295 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 324 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); | 296 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
| 325 background->AddChild(green); | 297 background->AddChild(green); |
| 326 | 298 |
| 327 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 299 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 328 gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); | 300 gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
| 329 green->AddChild(blue); | 301 green->AddChild(blue); |
| 330 | 302 |
| 331 RunPixelTestWithReadbackTarget(background, | 303 RunPixelTestWithReadbackTarget(GL_WITH_BITMAP, |
| 304 background, |
| 332 green.get(), | 305 green.get(), |
| 333 base::FilePath(FILE_PATH_LITERAL( | 306 base::FilePath(FILE_PATH_LITERAL( |
| 334 "green_small_with_blue_corner.png"))); | 307 "green_small_with_blue_corner.png"))); |
| 335 } | 308 } |
| 336 | 309 |
| 337 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayerWithChild_GL) { | 310 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayerWithChild_GL) { |
| 338 use_gl_ = true; | |
| 339 force_readback_as_bitmap_ = false; | |
| 340 | |
| 341 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 311 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 342 gfx::Rect(200, 200), SK_ColorWHITE); | 312 gfx::Rect(200, 200), SK_ColorWHITE); |
| 343 | 313 |
| 344 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 314 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 345 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); | 315 gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
| 346 background->AddChild(green); | 316 background->AddChild(green); |
| 347 | 317 |
| 348 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 318 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 349 gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); | 319 gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
| 350 green->AddChild(blue); | 320 green->AddChild(blue); |
| 351 | 321 |
| 352 RunPixelTestWithReadbackTarget(background, | 322 RunPixelTestWithReadbackTarget(GL_WITH_DEFAULT, |
| 323 background, |
| 353 green.get(), | 324 green.get(), |
| 354 base::FilePath(FILE_PATH_LITERAL( | 325 base::FilePath(FILE_PATH_LITERAL( |
| 355 "green_small_with_blue_corner.png"))); | 326 "green_small_with_blue_corner.png"))); |
| 356 } | 327 } |
| 357 | 328 |
| 358 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_Software) { | 329 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_Software) { |
| 359 use_gl_ = false; | |
| 360 force_readback_as_bitmap_ = false; | |
| 361 | |
| 362 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 330 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 363 gfx::Rect(200, 200), SK_ColorWHITE); | 331 gfx::Rect(200, 200), SK_ColorWHITE); |
| 364 | 332 |
| 365 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 333 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 366 gfx::Rect(200, 200), SK_ColorGREEN); | 334 gfx::Rect(200, 200), SK_ColorGREEN); |
| 367 background->AddChild(green); | 335 background->AddChild(green); |
| 368 | 336 |
| 369 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 337 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 370 gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); | 338 gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
| 371 green->AddChild(blue); | 339 green->AddChild(blue); |
| 372 | 340 |
| 373 // Grab the middle of the viewport. | 341 // Grab the middle of the viewport. |
| 374 copy_subrect_ = gfx::Rect(50, 50, 100, 100); | 342 copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
| 375 | 343 |
| 376 RunPixelTest(background, | 344 RunPixelTest(SOFTWARE_WITH_DEFAULT, |
| 345 background, |
| 377 base::FilePath(FILE_PATH_LITERAL( | 346 base::FilePath(FILE_PATH_LITERAL( |
| 378 "green_small_with_blue_corner.png"))); | 347 "green_small_with_blue_corner.png"))); |
| 379 } | 348 } |
| 380 | 349 |
| 381 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_GL_Bitmap) { | 350 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_GL_Bitmap) { |
| 382 use_gl_ = true; | |
| 383 force_readback_as_bitmap_ = true; | |
| 384 | |
| 385 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 351 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 386 gfx::Rect(200, 200), SK_ColorWHITE); | 352 gfx::Rect(200, 200), SK_ColorWHITE); |
| 387 | 353 |
| 388 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 354 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 389 gfx::Rect(200, 200), SK_ColorGREEN); | 355 gfx::Rect(200, 200), SK_ColorGREEN); |
| 390 background->AddChild(green); | 356 background->AddChild(green); |
| 391 | 357 |
| 392 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 358 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 393 gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); | 359 gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
| 394 green->AddChild(blue); | 360 green->AddChild(blue); |
| 395 | 361 |
| 396 // Grab the middle of the viewport. | 362 // Grab the middle of the viewport. |
| 397 copy_subrect_ = gfx::Rect(50, 50, 100, 100); | 363 copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
| 398 | 364 |
| 399 RunPixelTest(background, | 365 RunPixelTest(GL_WITH_BITMAP, |
| 366 background, |
| 400 base::FilePath(FILE_PATH_LITERAL( | 367 base::FilePath(FILE_PATH_LITERAL( |
| 401 "green_small_with_blue_corner.png"))); | 368 "green_small_with_blue_corner.png"))); |
| 402 } | 369 } |
| 403 | 370 |
| 404 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_GL) { | 371 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_GL) { |
| 405 use_gl_ = true; | |
| 406 force_readback_as_bitmap_ = false; | |
| 407 | |
| 408 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 372 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 409 gfx::Rect(200, 200), SK_ColorWHITE); | 373 gfx::Rect(200, 200), SK_ColorWHITE); |
| 410 | 374 |
| 411 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 375 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 412 gfx::Rect(200, 200), SK_ColorGREEN); | 376 gfx::Rect(200, 200), SK_ColorGREEN); |
| 413 background->AddChild(green); | 377 background->AddChild(green); |
| 414 | 378 |
| 415 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 379 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 416 gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); | 380 gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
| 417 green->AddChild(blue); | 381 green->AddChild(blue); |
| 418 | 382 |
| 419 // Grab the middle of the viewport. | 383 // Grab the middle of the viewport. |
| 420 copy_subrect_ = gfx::Rect(50, 50, 100, 100); | 384 copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
| 421 | 385 |
| 422 RunPixelTest(background, | 386 RunPixelTest(GL_WITH_DEFAULT, |
| 387 background, |
| 423 base::FilePath(FILE_PATH_LITERAL( | 388 base::FilePath(FILE_PATH_LITERAL( |
| 424 "green_small_with_blue_corner.png"))); | 389 "green_small_with_blue_corner.png"))); |
| 425 } | 390 } |
| 426 | 391 |
| 427 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_Software) { | 392 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_Software) { |
| 428 use_gl_ = false; | |
| 429 force_readback_as_bitmap_ = false; | |
| 430 | |
| 431 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 393 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 432 gfx::Rect(200, 200), SK_ColorWHITE); | 394 gfx::Rect(200, 200), SK_ColorWHITE); |
| 433 | 395 |
| 434 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 396 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 435 gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); | 397 gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
| 436 background->AddChild(green); | 398 background->AddChild(green); |
| 437 | 399 |
| 438 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 400 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 439 gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); | 401 gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
| 440 green->AddChild(blue); | 402 green->AddChild(blue); |
| 441 | 403 |
| 442 // Grab the middle of the viewport. | 404 // Grab the middle of the viewport. |
| 443 copy_subrect_ = gfx::Rect(25, 25, 100, 100); | 405 copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
| 444 | 406 |
| 445 RunPixelTestWithReadbackTarget(background, | 407 RunPixelTestWithReadbackTarget(SOFTWARE_WITH_DEFAULT, |
| 408 background, |
| 446 green.get(), | 409 green.get(), |
| 447 base::FilePath(FILE_PATH_LITERAL( | 410 base::FilePath(FILE_PATH_LITERAL( |
| 448 "green_small_with_blue_corner.png"))); | 411 "green_small_with_blue_corner.png"))); |
| 449 } | 412 } |
| 450 | 413 |
| 451 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_GL_Bitmap) { | 414 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_GL_Bitmap) { |
| 452 use_gl_ = true; | |
| 453 force_readback_as_bitmap_ = true; | |
| 454 | |
| 455 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 415 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 456 gfx::Rect(200, 200), SK_ColorWHITE); | 416 gfx::Rect(200, 200), SK_ColorWHITE); |
| 457 | 417 |
| 458 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 418 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 459 gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); | 419 gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
| 460 background->AddChild(green); | 420 background->AddChild(green); |
| 461 | 421 |
| 462 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 422 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 463 gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); | 423 gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
| 464 green->AddChild(blue); | 424 green->AddChild(blue); |
| 465 | 425 |
| 466 // Grab the middle of the viewport. | 426 // Grab the middle of the viewport. |
| 467 copy_subrect_ = gfx::Rect(25, 25, 100, 100); | 427 copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
| 468 | 428 |
| 469 RunPixelTestWithReadbackTarget(background, | 429 RunPixelTestWithReadbackTarget(GL_WITH_BITMAP, |
| 430 background, |
| 470 green.get(), | 431 green.get(), |
| 471 base::FilePath(FILE_PATH_LITERAL( | 432 base::FilePath(FILE_PATH_LITERAL( |
| 472 "green_small_with_blue_corner.png"))); | 433 "green_small_with_blue_corner.png"))); |
| 473 } | 434 } |
| 474 | 435 |
| 475 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_GL) { | 436 TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_GL) { |
| 476 use_gl_ = true; | |
| 477 force_readback_as_bitmap_ = true; | |
| 478 | |
| 479 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 437 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
| 480 gfx::Rect(200, 200), SK_ColorWHITE); | 438 gfx::Rect(200, 200), SK_ColorWHITE); |
| 481 | 439 |
| 482 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( | 440 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayer( |
| 483 gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); | 441 gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
| 484 background->AddChild(green); | 442 background->AddChild(green); |
| 485 | 443 |
| 486 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( | 444 scoped_refptr<SolidColorLayer> blue = CreateSolidColorLayer( |
| 487 gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); | 445 gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
| 488 green->AddChild(blue); | 446 green->AddChild(blue); |
| 489 | 447 |
| 490 // Grab the middle of the viewport. | 448 // Grab the middle of the viewport. |
| 491 copy_subrect_ = gfx::Rect(25, 25, 100, 100); | 449 copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
| 492 | 450 |
| 493 RunPixelTestWithReadbackTarget(background, | 451 RunPixelTestWithReadbackTarget(GL_WITH_DEFAULT, |
| 452 background, |
| 494 green.get(), | 453 green.get(), |
| 495 base::FilePath(FILE_PATH_LITERAL( | 454 base::FilePath(FILE_PATH_LITERAL( |
| 496 "green_small_with_blue_corner.png"))); | 455 "green_small_with_blue_corner.png"))); |
| 497 } | 456 } |
| 498 | 457 |
| 499 } // namespace | 458 } // namespace |
| 500 } // namespace cc | 459 } // namespace cc |
| 501 | 460 |
| 502 #endif // OS_ANDROID | 461 #endif // OS_ANDROID |
| OLD | NEW |