OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/playback/discardable_image_map.h" | 5 #include "cc/playback/discardable_image_map.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 // Discardable pixel refs are found in the following grids: | 65 // Discardable pixel refs are found in the following grids: |
66 // |---|---|---|---| | 66 // |---|---|---|---| |
67 // | | x | | x | | 67 // | | x | | x | |
68 // |---|---|---|---| | 68 // |---|---|---|---| |
69 // | x | | x | | | 69 // | x | | x | | |
70 // |---|---|---|---| | 70 // |---|---|---|---| |
71 // | | x | | x | | 71 // | | x | | x | |
72 // |---|---|---|---| | 72 // |---|---|---|---| |
73 // | x | | x | | | 73 // | x | | x | | |
74 // |---|---|---|---| | 74 // |---|---|---|---| |
75 skia::RefPtr<SkImage> discardable_image[4][4]; | 75 sk_sp<SkImage> discardable_image[4][4]; |
76 for (int y = 0; y < 4; ++y) { | 76 for (int y = 0; y < 4; ++y) { |
77 for (int x = 0; x < 4; ++x) { | 77 for (int x = 0; x < 4; ++x) { |
78 if ((x + y) & 1) { | 78 if ((x + y) & 1) { |
79 discardable_image[y][x] = CreateDiscardableImage(gfx::Size(500, 500)); | 79 discardable_image[y][x] = CreateDiscardableImage(gfx::Size(500, 500)); |
80 SkPaint paint; | 80 SkPaint paint; |
81 content_layer_client.add_draw_image( | 81 content_layer_client.add_draw_image( |
82 discardable_image[y][x].get(), gfx::Point(x * 512 + 6, y * 512 + 6), | 82 discardable_image[y][x].get(), gfx::Point(x * 512 + 6, y * 512 + 6), |
83 paint); | 83 paint); |
84 } | 84 } |
85 } | 85 } |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 // Discardable pixel refs are found in the following grids: | 142 // Discardable pixel refs are found in the following grids: |
143 // |---|---|---|---| | 143 // |---|---|---|---| |
144 // | | x | | x | | 144 // | | x | | x | |
145 // |---|---|---|---| | 145 // |---|---|---|---| |
146 // | x | | x | | | 146 // | x | | x | | |
147 // |---|---|---|---| | 147 // |---|---|---|---| |
148 // | | x | | x | | 148 // | | x | | x | |
149 // |---|---|---|---| | 149 // |---|---|---|---| |
150 // | x | | x | | | 150 // | x | | x | | |
151 // |---|---|---|---| | 151 // |---|---|---|---| |
152 skia::RefPtr<SkImage> discardable_image[4][4]; | 152 sk_sp<SkImage> discardable_image[4][4]; |
153 for (int y = 0; y < 4; ++y) { | 153 for (int y = 0; y < 4; ++y) { |
154 for (int x = 0; x < 4; ++x) { | 154 for (int x = 0; x < 4; ++x) { |
155 if ((x + y) & 1) { | 155 if ((x + y) & 1) { |
156 discardable_image[y][x] = CreateDiscardableImage(gfx::Size(500, 500)); | 156 discardable_image[y][x] = CreateDiscardableImage(gfx::Size(500, 500)); |
157 SkPaint paint; | 157 SkPaint paint; |
158 content_layer_client.add_draw_image( | 158 content_layer_client.add_draw_image( |
159 discardable_image[y][x].get(), | 159 discardable_image[y][x].get(), |
160 gfx::Point(1024 + x * 512 + 6, y * 512 + 6), paint); | 160 gfx::Point(1024 + x * 512 + 6, y * 512 + 6), paint); |
161 } | 161 } |
162 } | 162 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 // Discardable pixel refs are found in the following grids: | 242 // Discardable pixel refs are found in the following grids: |
243 // |---|---|---|---| | 243 // |---|---|---|---| |
244 // | | x | | x | | 244 // | | x | | x | |
245 // |---|---|---|---| | 245 // |---|---|---|---| |
246 // | x | | x | | | 246 // | x | | x | | |
247 // |---|---|---|---| | 247 // |---|---|---|---| |
248 // | | x | | x | | 248 // | | x | | x | |
249 // |---|---|---|---| | 249 // |---|---|---|---| |
250 // | x | | x | | | 250 // | x | | x | | |
251 // |---|---|---|---| | 251 // |---|---|---|---| |
252 skia::RefPtr<SkImage> discardable_image[4][4]; | 252 sk_sp<SkImage> discardable_image[4][4]; |
253 for (int y = 0; y < 4; ++y) { | 253 for (int y = 0; y < 4; ++y) { |
254 for (int x = 0; x < 4; ++x) { | 254 for (int x = 0; x < 4; ++x) { |
255 if ((x + y) & 1) { | 255 if ((x + y) & 1) { |
256 discardable_image[y][x] = CreateDiscardableImage(gfx::Size(500, 500)); | 256 discardable_image[y][x] = CreateDiscardableImage(gfx::Size(500, 500)); |
257 SkPaint paint; | 257 SkPaint paint; |
258 content_layer_client.add_draw_image( | 258 content_layer_client.add_draw_image( |
259 discardable_image[y][x].get(), gfx::Point(x * 512 + 6, y * 512 + 6), | 259 discardable_image[y][x].get(), gfx::Point(x * 512 + 6, y * 512 + 6), |
260 paint); | 260 paint); |
261 } | 261 } |
262 } | 262 } |
(...skipping 29 matching lines...) Expand all Loading... |
292 } | 292 } |
293 } | 293 } |
294 } | 294 } |
295 } | 295 } |
296 | 296 |
297 TEST_F(DiscardableImageMapTest, GetDiscardableImagesInRectMassiveImage) { | 297 TEST_F(DiscardableImageMapTest, GetDiscardableImagesInRectMassiveImage) { |
298 gfx::Rect visible_rect(2048, 2048); | 298 gfx::Rect visible_rect(2048, 2048); |
299 FakeContentLayerClient content_layer_client; | 299 FakeContentLayerClient content_layer_client; |
300 content_layer_client.set_bounds(visible_rect.size()); | 300 content_layer_client.set_bounds(visible_rect.size()); |
301 | 301 |
302 skia::RefPtr<SkImage> discardable_image; | 302 sk_sp<SkImage> discardable_image; |
303 discardable_image = CreateDiscardableImage(gfx::Size(1 << 25, 1 << 25)); | 303 discardable_image = CreateDiscardableImage(gfx::Size(1 << 25, 1 << 25)); |
304 SkPaint paint; | 304 SkPaint paint; |
305 content_layer_client.add_draw_image(discardable_image.get(), gfx::Point(0, 0), | 305 content_layer_client.add_draw_image(discardable_image.get(), gfx::Point(0, 0), |
306 paint); | 306 paint); |
307 | 307 |
308 FakeRecordingSource recording_source; | 308 FakeRecordingSource recording_source; |
309 Region invalidation(visible_rect); | 309 Region invalidation(visible_rect); |
310 recording_source.SetGenerateDiscardableImagesMetadata(true); | 310 recording_source.SetGenerateDiscardableImagesMetadata(true); |
311 recording_source.UpdateAndExpandInvalidation( | 311 recording_source.UpdateAndExpandInvalidation( |
312 &content_layer_client, &invalidation, visible_rect.size(), 1, | 312 &content_layer_client, &invalidation, visible_rect.size(), 1, |
(...skipping 11 matching lines...) Expand all Loading... |
324 EXPECT_EQ(1u, images.size()); | 324 EXPECT_EQ(1u, images.size()); |
325 EXPECT_TRUE(images[0].image == discardable_image.get()); | 325 EXPECT_TRUE(images[0].image == discardable_image.get()); |
326 EXPECT_EQ(gfx::Rect(0, 0, 1 << 25, 1 << 25), images[0].image_rect); | 326 EXPECT_EQ(gfx::Rect(0, 0, 1 << 25, 1 << 25), images[0].image_rect); |
327 } | 327 } |
328 | 328 |
329 TEST_F(DiscardableImageMapTest, PaintDestroyedWhileImageIsDrawn) { | 329 TEST_F(DiscardableImageMapTest, PaintDestroyedWhileImageIsDrawn) { |
330 gfx::Rect visible_rect(2048, 2048); | 330 gfx::Rect visible_rect(2048, 2048); |
331 FakeContentLayerClient content_layer_client; | 331 FakeContentLayerClient content_layer_client; |
332 content_layer_client.set_bounds(visible_rect.size()); | 332 content_layer_client.set_bounds(visible_rect.size()); |
333 | 333 |
334 skia::RefPtr<SkImage> discardable_image; | 334 sk_sp<SkImage> discardable_image; |
335 discardable_image = CreateDiscardableImage(gfx::Size(10, 10)); | 335 discardable_image = CreateDiscardableImage(gfx::Size(10, 10)); |
336 | 336 |
337 DiscardableImageMap image_map; | 337 DiscardableImageMap image_map; |
338 { | 338 { |
339 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, | 339 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, |
340 visible_rect.size()); | 340 visible_rect.size()); |
341 { | 341 { |
342 std::unique_ptr<SkPaint> paint(new SkPaint()); | 342 std::unique_ptr<SkPaint> paint(new SkPaint()); |
343 generator.canvas()->saveLayer(gfx::RectToSkRect(visible_rect), | 343 generator.canvas()->saveLayer(gfx::RectToSkRect(visible_rect), |
344 paint.get()); | 344 paint.get()); |
345 } | 345 } |
346 generator.canvas()->drawImage(discardable_image.get(), 0, 0, nullptr); | 346 generator.canvas()->drawImage(discardable_image.get(), 0, 0, nullptr); |
347 generator.canvas()->restore(); | 347 generator.canvas()->restore(); |
348 } | 348 } |
349 | 349 |
350 std::vector<PositionDrawImage> images = | 350 std::vector<PositionDrawImage> images = |
351 GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); | 351 GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); |
352 EXPECT_EQ(1u, images.size()); | 352 EXPECT_EQ(1u, images.size()); |
353 EXPECT_TRUE(images[0].image == discardable_image.get()); | 353 EXPECT_TRUE(images[0].image == discardable_image.get()); |
354 } | 354 } |
355 | 355 |
356 } // namespace cc | 356 } // namespace cc |
OLD | NEW |