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

Side by Side Diff: cc/layer_tree_host_unittest_delegated.cc

Issue 12310179: cc: Without valid frame, delegated renderer layer is not drawable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: morecleanup Created 7 years, 9 months 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/delegated_renderer_layer_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "cc/layer_tree_host.h" 5 #include "cc/layer_tree_host.h"
6 6
7 #include "cc/delegated_frame_data.h" 7 #include "cc/delegated_frame_data.h"
8 #include "cc/delegated_renderer_layer.h" 8 #include "cc/delegated_renderer_layer.h"
9 #include "cc/delegated_renderer_layer_impl.h" 9 #include "cc/delegated_renderer_layer_impl.h"
10 #include "cc/layer_tree_impl.h" 10 #include "cc/layer_tree_impl.h"
11 #include "cc/test/layer_tree_test_common.h" 11 #include "cc/test/layer_tree_test_common.h"
12 #include "gpu/GLES2/gl2extchromium.h" 12 #include "gpu/GLES2/gl2extchromium.h"
13 13
14 namespace cc { 14 namespace cc {
15 namespace { 15 namespace {
16 16
17 // These tests deal with delegated renderer layers. 17 // These tests deal with delegated renderer layers.
18 class LayerTreeHostDelegatedTest : public ThreadedTest { 18 class LayerTreeHostDelegatedTest : public ThreadedTest {
19 protected: 19 protected:
20 class TestDelegatedRendererLayer : public DelegatedRendererLayer {
21 public:
22 static scoped_refptr<DelegatedRendererLayer> Create(
23 LayerTreeHostDelegatedTest* test) {
24 return new TestDelegatedRendererLayer(test);
25 }
26
27 virtual void update(ResourceUpdateQueue& queue,
28 const OcclusionTracker* occlusion,
29 RenderingStats* stats) OVERRIDE {
30 DelegatedRendererLayer::update(queue, occlusion, stats);
31 test_->UpdateDelegatedLayer(this);
32
33 }
34 protected:
35 explicit TestDelegatedRendererLayer(LayerTreeHostDelegatedTest* test)
36 : DelegatedRendererLayer(),
37 test_(test) {}
38 virtual ~TestDelegatedRendererLayer() {}
39 LayerTreeHostDelegatedTest* test_;
40 };
41
42 // Called by each delegated renderer layer when update is called on it.
43 virtual void UpdateDelegatedLayer(TestDelegatedRendererLayer* layer) {}
44
45 scoped_ptr<DelegatedFrameData> CreateFrameData(gfx::Rect root_output_rect, 20 scoped_ptr<DelegatedFrameData> CreateFrameData(gfx::Rect root_output_rect,
46 gfx::Rect root_damage_rect) { 21 gfx::Rect root_damage_rect) {
47 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); 22 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData);
48 23
49 scoped_ptr<RenderPass> root_pass(RenderPass::Create()); 24 scoped_ptr<RenderPass> root_pass(RenderPass::Create());
50 root_pass->SetNew(RenderPass::Id(1, 1), 25 root_pass->SetNew(RenderPass::Id(1, 1),
51 root_output_rect, 26 root_output_rect,
52 root_damage_rect, 27 root_damage_rect,
53 gfx::Transform()); 28 gfx::Transform());
54 frame->render_pass_list.push_back(root_pass.Pass()); 29 frame->render_pass_list.push_back(root_pass.Pass());
55 return frame.Pass(); 30 return frame.Pass();
56 } 31 }
57 32
58 scoped_ptr<DelegatedFrameData> CreateEmptyFrameData() { 33 scoped_ptr<DelegatedFrameData> CreateEmptyFrameData() {
59 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); 34 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData);
60 return frame.Pass(); 35 return frame.Pass();
61 } 36 }
62 }; 37 };
63 38
64 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer 39 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer
65 : public LayerTreeHostDelegatedTest { 40 : public LayerTreeHostDelegatedTest {
66 public: 41 public:
67 virtual void setupTree() OVERRIDE { 42 virtual void setupTree() OVERRIDE {
68 root_ = Layer::create(); 43 root_ = Layer::create();
69 root_->setAnchorPoint(gfx::PointF()); 44 root_->setAnchorPoint(gfx::PointF());
70 root_->setBounds(gfx::Size(10, 10)); 45 root_->setBounds(gfx::Size(10, 10));
71 46
72 delegated_ = TestDelegatedRendererLayer::Create(this); 47 delegated_ = DelegatedRendererLayer::Create();
73 delegated_->setAnchorPoint(gfx::PointF()); 48 delegated_->setAnchorPoint(gfx::PointF());
74 delegated_->setBounds(gfx::Size(10, 10)); 49 delegated_->setBounds(gfx::Size(10, 10));
75 delegated_->setIsDrawable(true); 50 delegated_->setIsDrawable(true);
76 51
77 root_->addChild(delegated_); 52 root_->addChild(delegated_);
78 m_layerTreeHost->setRootLayer(root_); 53 m_layerTreeHost->setRootLayer(root_);
79 LayerTreeHostDelegatedTest::setupTree(); 54 LayerTreeHostDelegatedTest::setupTree();
80 } 55 }
81 56
82 virtual void beginTest() OVERRIDE { 57 virtual void beginTest() OVERRIDE {
83 postSetNeedsCommitToMainThread(); 58 postSetNeedsCommitToMainThread();
84 } 59 }
85 60
86 virtual void afterTest() OVERRIDE {} 61 virtual void afterTest() OVERRIDE {}
87 62
88 protected: 63 protected:
89 scoped_refptr<Layer> root_; 64 scoped_refptr<Layer> root_;
90 scoped_refptr<DelegatedRendererLayer> delegated_; 65 scoped_refptr<DelegatedRendererLayer> delegated_;
91 }; 66 };
92 67
93 class LayerTreeHostDelegatedTestCreateChildId 68 class LayerTreeHostDelegatedTestCreateChildId
94 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { 69 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
95 public: 70 public:
96 LayerTreeHostDelegatedTestCreateChildId() 71 LayerTreeHostDelegatedTestCreateChildId()
97 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), 72 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(),
98 num_activates_(0), 73 num_activates_(0),
99 did_reset_child_id_(false) {} 74 did_reset_child_id_(false) {}
100 75
101 virtual void UpdateDelegatedLayer(TestDelegatedRendererLayer* layer) 76 virtual void didCommit() OVERRIDE {
102 OVERRIDE {
103 if (testEnded()) 77 if (testEnded())
104 return; 78 return;
105 layer->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), 79 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1),
106 gfx::Rect(0, 0, 1, 1))); 80 gfx::Rect(0, 0, 1, 1)));
107 } 81 }
108 82
109 virtual void treeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 83 virtual void treeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
110 LayerImpl* root_impl = host_impl->activeTree()->RootLayer(); 84 LayerImpl* root_impl = host_impl->activeTree()->RootLayer();
111 DelegatedRendererLayerImpl* delegated_impl = 85 DelegatedRendererLayerImpl* delegated_impl =
112 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]); 86 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]);
113 87
114 ++num_activates_; 88 ++num_activates_;
115 switch(num_activates_) { 89 switch(num_activates_) {
116 case 1: 90 case 2:
117 EXPECT_TRUE(delegated_impl->child_id()); 91 EXPECT_TRUE(delegated_impl->child_id());
118 EXPECT_FALSE(did_reset_child_id_); 92 EXPECT_FALSE(did_reset_child_id_);
119 93
120 host_impl->resourceProvider()->graphicsContext3D()->loseContextCHROMIUM( 94 host_impl->resourceProvider()->graphicsContext3D()->loseContextCHROMIUM(
121 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); 95 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB);
122 break; 96 break;
123 case 2: 97 case 3:
124 EXPECT_TRUE(delegated_impl->child_id()); 98 EXPECT_TRUE(delegated_impl->child_id());
125 EXPECT_TRUE(did_reset_child_id_); 99 EXPECT_TRUE(did_reset_child_id_);
126 endTest(); 100 endTest();
127 break; 101 break;
128 } 102 }
129 } 103 }
130 104
131 virtual void initializedRendererOnThread(LayerTreeHostImpl* host_impl, 105 virtual void initializedRendererOnThread(LayerTreeHostImpl* host_impl,
132 bool success) OVERRIDE { 106 bool success) OVERRIDE {
133 EXPECT_TRUE(success); 107 EXPECT_TRUE(success);
134 108
135 if (!num_activates_) 109 if (num_activates_ < 2)
136 return; 110 return;
137 111
138 LayerImpl* root_impl = host_impl->activeTree()->RootLayer(); 112 LayerImpl* root_impl = host_impl->activeTree()->RootLayer();
139 DelegatedRendererLayerImpl* delegated_impl = 113 DelegatedRendererLayerImpl* delegated_impl =
140 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]); 114 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]);
141 115
142 EXPECT_EQ(1, num_activates_); 116 EXPECT_EQ(2, num_activates_);
143 EXPECT_FALSE(delegated_impl->child_id()); 117 EXPECT_FALSE(delegated_impl->child_id());
144 did_reset_child_id_ = true; 118 did_reset_child_id_ = true;
145 } 119 }
146 120
147 virtual void afterTest() OVERRIDE {} 121 virtual void afterTest() OVERRIDE {}
148 122
149 protected: 123 protected:
150 int num_activates_; 124 int num_activates_;
151 bool did_reset_child_id_; 125 bool did_reset_child_id_;
152 }; 126 };
153 127
154 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId) 128 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId)
155 129
156 class LayerTreeHostDelegatedTestLayerUsesFrameDamage 130 class LayerTreeHostDelegatedTestLayerUsesFrameDamage
157 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { 131 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
158 public: 132 public:
159 LayerTreeHostDelegatedTestLayerUsesFrameDamage() 133 LayerTreeHostDelegatedTestLayerUsesFrameDamage()
160 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), 134 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(),
161 first_draw_for_source_frame_(true) {} 135 first_draw_for_source_frame_(true) {}
162 136
163 virtual void didCommit() OVERRIDE { 137 virtual void didCommit() OVERRIDE {
164 int next_source_frame_number = m_layerTreeHost->commitNumber(); 138 int next_source_frame_number = m_layerTreeHost->commitNumber();
165 switch (next_source_frame_number) { 139 switch (next_source_frame_number) {
166 case 1: 140 case 1:
141 // The first time the layer gets a frame the whole layer should be
142 // damaged.
143 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1),
144 gfx::Rect(0, 0, 1, 1)));
145 break;
146 case 2:
167 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage. 147 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage.
168 // The frame size is 20x20 while the layer is 10x10, so this should 148 // The frame size is 20x20 while the layer is 10x10, so this should
169 // produce a gfx::Rect(1, 1, 5, 3) damage rect. 149 // produce a gfx::Rect(1, 1, 5, 3) damage rect.
170 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), 150 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20),
171 gfx::Rect(2, 2, 5, 5))); 151 gfx::Rect(2, 2, 5, 5)));
172 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), 152 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20),
173 gfx::Rect(7, 2, 5, 6))); 153 gfx::Rect(7, 2, 5, 6)));
174 break; 154 break;
175 case 2: 155 case 3:
176 // Should create zero damage. 156 // Should create zero damage.
177 m_layerTreeHost->setNeedsCommit(); 157 m_layerTreeHost->setNeedsCommit();
178 break; 158 break;
179 case 3: 159 case 4:
180 // Should damage the full viewport. 160 // Should damage the full viewport.
181 delegated_->setBounds(gfx::Size(2, 2)); 161 delegated_->setBounds(gfx::Size(2, 2));
182 break; 162 break;
183 case 4: 163 case 5:
184 // Should create zero damage. 164 // Should create zero damage.
185 m_layerTreeHost->setNeedsCommit(); 165 m_layerTreeHost->setNeedsCommit();
186 break; 166 break;
187 case 5: 167 case 6:
188 // Should damage the full layer. 168 // Should damage the full layer.
189 delegated_->setBounds(gfx::Size(6, 6)); 169 delegated_->setBounds(gfx::Size(6, 6));
190 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), 170 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5),
191 gfx::Rect(1, 1, 2, 2))); 171 gfx::Rect(1, 1, 2, 2)));
192 break; 172 break;
193 case 6: 173 case 7:
194 // Should create zero damage. 174 // Should create zero damage.
195 m_layerTreeHost->setNeedsCommit(); 175 m_layerTreeHost->setNeedsCommit();
196 break; 176 break;
197 case 7: 177 case 8:
198 // Should damage the full layer. 178 // Should damage the full layer.
199 delegated_->SetDisplaySize(gfx::Size(10, 10)); 179 delegated_->SetDisplaySize(gfx::Size(10, 10));
200 break; 180 break;
201 case 8: 181 case 9:
202 // Should create zero damage. 182 // Should create zero damage.
203 m_layerTreeHost->setNeedsCommit(); 183 m_layerTreeHost->setNeedsCommit();
204 break; 184 break;
205 case 9: 185 case 10:
206 // Setting an empty frame should damage the whole layer the 186 // Setting an empty frame should damage the whole layer the
207 // first time. 187 // first time.
208 delegated_->SetFrameData(CreateEmptyFrameData()); 188 delegated_->SetFrameData(CreateEmptyFrameData());
209 break; 189 break;
210 case 10: 190 case 11:
211 // Setting an empty frame shouldn't damage anything after the 191 // Setting an empty frame shouldn't damage anything after the
212 // first time. 192 // first time.
213 delegated_->SetFrameData(CreateEmptyFrameData()); 193 delegated_->SetFrameData(CreateEmptyFrameData());
214 break; 194 break;
215 case 11: 195 case 12:
196 // Having valid content to display agains should damage the whole layer.
197 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 10, 10),
198 gfx::Rect(5, 5, 1, 1)));
199 break;
200 case 13:
216 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is 201 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is
217 // 5x5 and the display size is now set to 10x10, so this should result 202 // 5x5 and the display size is now set to 10x10, so this should result
218 // in a gfx::Rect(2, 2, 4, 4) damage rect. 203 // in a gfx::Rect(2, 2, 4, 4) damage rect.
219 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), 204 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5),
220 gfx::Rect(1, 1, 2, 2))); 205 gfx::Rect(1, 1, 2, 2)));
221 break; 206 break;
222 case 12: 207 case 14:
223 // Should create zero damage. 208 // Should create zero damage.
224 m_layerTreeHost->setNeedsCommit(); 209 m_layerTreeHost->setNeedsCommit();
225 break; 210 break;
226 } 211 }
227 first_draw_for_source_frame_ = true; 212 first_draw_for_source_frame_ = true;
228 } 213 }
229 214
230 virtual bool prepareToDrawOnThread(LayerTreeHostImpl* host_impl, 215 virtual bool prepareToDrawOnThread(LayerTreeHostImpl* host_impl,
231 LayerTreeHostImpl::FrameData& frame, 216 LayerTreeHostImpl::FrameData& frame,
232 bool result) { 217 bool result) {
233 EXPECT_TRUE(result); 218 EXPECT_TRUE(result);
234 219
235 if (!first_draw_for_source_frame_) 220 if (!first_draw_for_source_frame_)
236 return result; 221 return result;
237 222
238 gfx::RectF damage_rect = frame.renderPasses.back()->damage_rect; 223 gfx::RectF damage_rect = frame.renderPasses.back()->damage_rect;
239 224
240 switch (host_impl->activeTree()->source_frame_number()) { 225 switch (host_impl->activeTree()->source_frame_number()) {
241 case 0: 226 case 0:
227 // Before the layer has a frame to display it should not
228 // be visible at all, and not damage anything.
229 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
230 damage_rect.ToString());
231 break;
232 case 1:
242 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), 233 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(),
243 damage_rect.ToString()); 234 damage_rect.ToString());
244 break; 235 break;
245 case 1: 236 case 2:
246 EXPECT_EQ(gfx::RectF(1.f, 1.f, 5.f, 3.f).ToString(), 237 EXPECT_EQ(gfx::RectF(1.f, 1.f, 5.f, 3.f).ToString(),
247 damage_rect.ToString()); 238 damage_rect.ToString());
248 break; 239 break;
249 case 2: 240 case 3:
250 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), 241 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
251 damage_rect.ToString()); 242 damage_rect.ToString());
252 break; 243 break;
253 case 3: 244 case 4:
254 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), 245 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(),
255 damage_rect.ToString()); 246 damage_rect.ToString());
256 break; 247 break;
257 case 4: 248 case 5:
258 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), 249 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
259 damage_rect.ToString()); 250 damage_rect.ToString());
260 break; 251 break;
261 case 5: 252 case 6:
262 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), 253 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(),
263 damage_rect.ToString()); 254 damage_rect.ToString());
264 break; 255 break;
265 case 6: 256 case 7:
266 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), 257 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
267 damage_rect.ToString()); 258 damage_rect.ToString());
268 break; 259 break;
269 case 7: 260 case 8:
270 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), 261 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(),
271 damage_rect.ToString()); 262 damage_rect.ToString());
272 break; 263 break;
273 case 8: 264 case 9:
274 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), 265 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
275 damage_rect.ToString()); 266 damage_rect.ToString());
276 break; 267 break;
277 case 9: 268 case 10:
278 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), 269 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(),
279 damage_rect.ToString()); 270 damage_rect.ToString());
280 break; 271 break;
281 case 10: 272 case 11:
282 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), 273 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
283 damage_rect.ToString()); 274 damage_rect.ToString());
284 break; 275 break;
285 case 11: 276 case 12:
277 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(),
278 damage_rect.ToString());
279 break;
280 case 13:
286 EXPECT_EQ(gfx::RectF(2.f, 2.f, 4.f, 4.f).ToString(), 281 EXPECT_EQ(gfx::RectF(2.f, 2.f, 4.f, 4.f).ToString(),
287 damage_rect.ToString()); 282 damage_rect.ToString());
288 break; 283 break;
289 case 12: 284 case 14:
290 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), 285 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(),
291 damage_rect.ToString()); 286 damage_rect.ToString());
292 endTest(); 287 endTest();
293 break; 288 break;
294 } 289 }
295 290
296 return result; 291 return result;
297 } 292 }
298 293
299 protected: 294 protected:
300 bool first_draw_for_source_frame_; 295 bool first_draw_for_source_frame_;
301 }; 296 };
302 297
303 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage) 298 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage)
304 299
305 } // namespace 300 } // namespace
306 } // namespace cc 301 } // namespace cc
OLDNEW
« no previous file with comments | « cc/delegated_renderer_layer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698