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 |