Chromium Code Reviews| Index: cc/tiles/checker_image_tracker.h |
| diff --git a/cc/tiles/checker_image_tracker.h b/cc/tiles/checker_image_tracker.h |
| index b2a16ecf9b2d60c9e4b9cc1371c47329c9fd406e..7c4ed22006cd34a8ca46a4e8a78ee98cdafad1f8 100644 |
| --- a/cc/tiles/checker_image_tracker.h |
| +++ b/cc/tiles/checker_image_tracker.h |
| @@ -37,16 +37,13 @@ class CC_EXPORT CheckerImageTracker { |
| bool enable_checker_imaging); |
| ~CheckerImageTracker(); |
| - // Given the |images| for a tile, filters the images which will be deferred |
| - // asynchronously using the image decoded service, eliminating them from |
| - // |images| adds them to the |checkered_images| set, so they can be skipped |
| - // during the rasterization of this tile. |
| - // The entries remaining in |images| are for images for which a cached decode |
| - // from the image decode service is available, or which must be decoded before |
| - // before this tile can be rasterized. |
| - void FilterImagesForCheckeringForTile(std::vector<DrawImage>* images, |
| - ImageIdFlatSet* checkered_images, |
| - WhichTree tree); |
| + // Returns true if the decode for |image| will be deferred to the image decode |
| + // service and it should be be skipped during raster. |
| + bool ShouldCheckerImage(const sk_sp<const SkImage>& image, |
| + WhichTree tree) const; |
| + |
| + using ImageDecodeQueue = std::vector<sk_sp<const SkImage>>; |
| + void SetImageDecodeQueue(ImageDecodeQueue image_decode_queue); |
| // Returns the set of images to invalidate on the sync tree. |
| const ImageIdFlatSet& TakeImagesToInvalidateOnSyncTree(); |
| @@ -58,12 +55,9 @@ class CC_EXPORT CheckerImageTracker { |
| ImageController::ImageDecodeRequestId request_id, |
| ImageController::ImageDecodeResult result); |
| - // Returns true if the decode for |image| will be deferred to the image decode |
| - // service and it should be be skipped during raster. |
| - bool ShouldCheckerImage(const sk_sp<const SkImage>& image, |
| - WhichTree tree) const; |
| - |
| - void ScheduleImageDecodeIfNecessary(const sk_sp<const SkImage>& image); |
| + // Called when the next request in the |image_decode_queue_| should be |
| + // scheduled with the image decode service. |
| + void ScheduleNextImageDecode(); |
| ImageController* image_controller_; |
| CheckerImageTrackerClient* client_; |
| @@ -76,11 +70,15 @@ class CC_EXPORT CheckerImageTracker { |
| // A set of images which were invalidated on the current sync tree. |
| ImageIdFlatSet invalidated_images_on_current_sync_tree_; |
| - // A set of images which are currently pending decode from the image decode |
| - // service. |
| - // TODO(khushalsagar): This should be a queue that gets re-built each time we |
| - // do a PrepareTiles? See crbug.com/689184. |
| - ImageIdFlatSet pending_image_decodes_; |
| + // The queue of images pending decode. We maintain a queue to ensure that the |
| + // order in which images are decoded is aligned with the priority of the tiles |
| + // dependent on these images. |
| + ImageDecodeQueue image_decode_queue_; |
| + size_t next_image_to_decode_ = 0; |
|
vmpstr
2017/03/17 18:32:13
next_image_index? Or what is this? size_t is certa
Khushal
2017/03/27 13:57:33
Done.
|
| + |
| + // The currently outstanding image decode that has been scheduled with the |
| + // decode service. |
| + sk_sp<const SkImage> outstanding_image_decode_; |
| // A set of images which have been decoded at least once from the |
| // ImageDecodeService and should not be checkered again. |