Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: cc/tile_manager.h

Issue 11453014: Implement the logic to kick off image decoding jobs for TileManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix for win_rel trybot Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/picture_pile_impl.cc ('k') | cc/tile_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 #ifndef CC_TILE_MANAGER_H_ 5 #ifndef CC_TILE_MANAGER_H_
6 #define CC_TILE_MANAGER_H_ 6 #define CC_TILE_MANAGER_H_
7 7
8 #include <list>
8 #include <queue> 9 #include <queue>
9 #include <vector> 10 #include <vector>
10 11
12 #include "base/hash_tables.h"
11 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
12 #include "base/values.h" 14 #include "base/values.h"
13 #include "cc/resource_pool.h" 15 #include "cc/resource_pool.h"
14 #include "cc/tile_priority.h" 16 #include "cc/tile_priority.h"
15 17
16 namespace cc { 18 namespace cc {
17 19
18 class RasterThread; 20 class RasterThread;
19 class ResourceProvider; 21 class ResourceProvider;
20 class Tile; 22 class Tile;
(...skipping 25 matching lines...) Expand all
46 public: 48 public:
47 ManagedTileState(); 49 ManagedTileState();
48 ~ManagedTileState(); 50 ~ManagedTileState();
49 51
50 // Persisted state: valid all the time. 52 // Persisted state: valid all the time.
51 bool can_use_gpu_memory; 53 bool can_use_gpu_memory;
52 bool can_be_freed; 54 bool can_be_freed;
53 scoped_ptr<ResourcePool::Resource> resource; 55 scoped_ptr<ResourcePool::Resource> resource;
54 bool resource_is_being_initialized; 56 bool resource_is_being_initialized;
55 bool contents_swizzled; 57 bool contents_swizzled;
58 bool need_to_gather_pixel_refs;
59 std::list<skia::LazyPixelRef*> pending_pixel_refs;
56 60
57 // Ephemeral state, valid only during Manage. 61 // Ephemeral state, valid only during Manage.
58 TileManagerBin bin; 62 TileManagerBin bin;
59 TileResolution resolution; 63 TileResolution resolution;
60 float time_to_needed_in_seconds; 64 float time_to_needed_in_seconds;
61 }; 65 };
62 66
63 // This class manages tiles, deciding which should get rasterized and which 67 // This class manages tiles, deciding which should get rasterized and which
64 // should no longer have any memory assigned to them. Tile objects are "owned" 68 // should no longer have any memory assigned to them. Tile objects are "owned"
65 // by layers; they automatically register with the manager when they are 69 // by layers; they automatically register with the manager when they are
(...skipping 18 matching lines...) Expand all
84 friend class Tile; 88 friend class Tile;
85 void RegisterTile(Tile*); 89 void RegisterTile(Tile*);
86 void UnregisterTile(Tile*); 90 void UnregisterTile(Tile*);
87 void WillModifyTilePriority(Tile*, WhichTree, const TilePriority& new_priority ); 91 void WillModifyTilePriority(Tile*, WhichTree, const TilePriority& new_priority );
88 92
89 private: 93 private:
90 void AssignGpuMemoryToTiles(); 94 void AssignGpuMemoryToTiles();
91 void FreeResourcesForTile(Tile*); 95 void FreeResourcesForTile(Tile*);
92 void ScheduleManageTiles(); 96 void ScheduleManageTiles();
93 void ScheduleCheckForCompletedSetPixels(); 97 void ScheduleCheckForCompletedSetPixels();
94 void DispatchMoreRasterTasks(); 98 void DispatchMoreTasks();
95 void DispatchOneRasterTask(RasterThread*, scoped_refptr<Tile>); 99 void DispatchOneRasterTask(RasterThread*, scoped_refptr<Tile>);
96 void OnRasterTaskCompleted( 100 void OnRasterTaskCompleted(
97 scoped_refptr<Tile>, 101 scoped_refptr<Tile>,
98 scoped_ptr<ResourcePool::Resource>, 102 scoped_ptr<ResourcePool::Resource>,
99 scoped_refptr<PicturePileImpl>, 103 scoped_refptr<PicturePileImpl>,
100 RenderingStats*); 104 RenderingStats*);
101 void DidFinishTileInitialization(Tile*); 105 void DidFinishTileInitialization(Tile*);
106 void DispatchImageDecodingTasksForTile(Tile*);
107 void OnImageDecodingTaskCompleted(scoped_refptr<Tile>, uint32_t);
108 void DispatchOneImageDecodingTask(
109 RasterThread*, scoped_refptr<Tile>, skia::LazyPixelRef*);
110 RasterThread* GetFreeRasterThread();
102 111
103 TileManagerClient* client_; 112 TileManagerClient* client_;
104 scoped_ptr<ResourcePool> resource_pool_; 113 scoped_ptr<ResourcePool> resource_pool_;
105 bool manage_tiles_pending_; 114 bool manage_tiles_pending_;
106 bool check_for_completed_set_pixels_pending_; 115 bool check_for_completed_set_pixels_pending_;
107 116
108 GlobalStateThatImpactsTilePriority global_state_; 117 GlobalStateThatImpactsTilePriority global_state_;
109 118
110 typedef std::vector<Tile*> TileVector; 119 typedef std::vector<Tile*> TileVector;
111 TileVector tiles_; 120 TileVector tiles_;
112 TileVector tiles_that_need_to_be_rasterized_; 121 TileVector tiles_that_need_to_be_rasterized_;
113 122
123 typedef std::list<Tile*> TileList;
124 // Tiles with image decoding tasks. These tiles need to be rasterized
125 // when all the image decoding tasks finish.
126 TileList tiles_with_image_decoding_tasks_;
127
128 typedef base::hash_map<uint32_t, skia::LazyPixelRef*> PixelRefMap;
129 PixelRefMap pending_decode_tasks_;
130
114 typedef std::queue<scoped_refptr<Tile> > TileQueue; 131 typedef std::queue<scoped_refptr<Tile> > TileQueue;
115 TileQueue tiles_with_pending_set_pixels_; 132 TileQueue tiles_with_pending_set_pixels_;
116 133
117 typedef ScopedPtrVector<RasterThread> RasterThreadVector; 134 typedef ScopedPtrVector<RasterThread> RasterThreadVector;
118 RasterThreadVector raster_threads_; 135 RasterThreadVector raster_threads_;
119 136
120 RenderingStats rendering_stats_; 137 RenderingStats rendering_stats_;
121 138
122 DISALLOW_COPY_AND_ASSIGN(TileManager); 139 DISALLOW_COPY_AND_ASSIGN(TileManager);
123 }; 140 };
124 141
125 } // namespace cc 142 } // namespace cc
126 143
127 #endif // CC_TILE_MANAGER_H_ 144 #endif // CC_TILE_MANAGER_H_
OLDNEW
« no previous file with comments | « cc/picture_pile_impl.cc ('k') | cc/tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698