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

Side by Side Diff: cc/delegated_renderer_layer_impl_unittest.cc

Issue 11419269: cc: Give ownership of render passes to the renderer when drawing a frame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 | « no previous file | cc/direct_renderer.h » ('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 #include "cc/delegated_renderer_layer_impl.h" 5 #include "cc/delegated_renderer_layer_impl.h"
6 6
7 #include "cc/append_quads_data.h" 7 #include "cc/append_quads_data.h"
8 #include "cc/layer_tree_host_impl.h" 8 #include "cc/layer_tree_host_impl.h"
9 #include "cc/quad_sink.h" 9 #include "cc/quad_sink.h"
10 #include "cc/render_pass_draw_quad.h" 10 #include "cc/render_pass_draw_quad.h"
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 LayerImpl* m_rootLayerPtr; 165 LayerImpl* m_rootLayerPtr;
166 LayerImpl* m_layerBeforePtr; 166 LayerImpl* m_layerBeforePtr;
167 LayerImpl* m_layerAfterPtr; 167 LayerImpl* m_layerAfterPtr;
168 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; 168 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr;
169 }; 169 };
170 170
171 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) 171 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses)
172 { 172 {
173 LayerTreeHostImpl::FrameData frame; 173 LayerTreeHostImpl::FrameData frame;
174 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 174 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
175 m_hostImpl->drawLayers(frame);
176 m_hostImpl->didDrawAllLayers(frame);
177 175
178 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes. 176 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes.
179 ASSERT_EQ(5u, frame.renderPasses.size()); 177 ASSERT_EQ(5u, frame.renderPasses.size());
180 178
181 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame. 179 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame.
182 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); 180 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id);
183 EXPECT_EQ(1, frame.renderPasses[1]->id.index); 181 EXPECT_EQ(1, frame.renderPasses[1]->id.index);
184 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); 182 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id);
185 EXPECT_EQ(2, frame.renderPasses[2]->id.index); 183 EXPECT_EQ(2, frame.renderPasses[2]->id.index);
186 // And all other RenderPasses should be non-delegated. 184 // And all other RenderPasses should be non-delegated.
187 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); 185 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id);
188 EXPECT_EQ(0, frame.renderPasses[0]->id.index); 186 EXPECT_EQ(0, frame.renderPasses[0]->id.index);
189 EXPECT_NE(4, frame.renderPasses[3]->id.layer_id); 187 EXPECT_NE(4, frame.renderPasses[3]->id.layer_id);
190 EXPECT_EQ(0, frame.renderPasses[3]->id.index); 188 EXPECT_EQ(0, frame.renderPasses[3]->id.index);
191 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); 189 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id);
192 EXPECT_EQ(0, frame.renderPasses[4]->id.index); 190 EXPECT_EQ(0, frame.renderPasses[4]->id.index);
193 191
194 // The DelegatedRendererLayer should have added its RenderPasses to the fram e in order. 192 // The DelegatedRendererLayer should have added its RenderPasses to the fram e in order.
195 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); 193 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect);
196 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); 194 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect);
195
196 m_hostImpl->drawLayers(frame);
197 m_hostImpl->didDrawAllLayers(frame);
197 } 198 }
198 199
199 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses ) 200 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses )
200 { 201 {
201 LayerTreeHostImpl::FrameData frame; 202 LayerTreeHostImpl::FrameData frame;
202 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 203 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
203 m_hostImpl->drawLayers(frame);
204 m_hostImpl->didDrawAllLayers(frame);
205 204
206 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes. 205 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes.
207 ASSERT_EQ(5u, frame.renderPasses.size()); 206 ASSERT_EQ(5u, frame.renderPasses.size());
208 207
209 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame. 208 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame.
210 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); 209 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id);
211 EXPECT_EQ(1, frame.renderPasses[1]->id.index); 210 EXPECT_EQ(1, frame.renderPasses[1]->id.index);
212 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); 211 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id);
213 EXPECT_EQ(2, frame.renderPasses[2]->id.index); 212 EXPECT_EQ(2, frame.renderPasses[2]->id.index);
214 213
215 // The DelegatedRendererLayer should have added copies of its quads to contr ibuting RenderPasses. 214 // The DelegatedRendererLayer should have added copies of its quads to contr ibuting RenderPasses.
216 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); 215 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size());
217 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect); 216 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect);
218 217
219 // Verify it added the right quads. 218 // Verify it added the right quads.
220 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); 219 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size());
221 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r ect); 220 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r ect);
222 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r ect); 221 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r ect);
223 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); 222 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size());
224 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect); 223 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect);
224
225 m_hostImpl->drawLayers(frame);
226 m_hostImpl->didDrawAllLayers(frame);
225 } 227 }
226 228
227 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) 229 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass)
228 { 230 {
229 LayerTreeHostImpl::FrameData frame; 231 LayerTreeHostImpl::FrameData frame;
230 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 232 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
231 m_hostImpl->drawLayers(frame);
232 m_hostImpl->didDrawAllLayers(frame);
233 233
234 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes. 234 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes.
235 ASSERT_EQ(5u, frame.renderPasses.size()); 235 ASSERT_EQ(5u, frame.renderPasses.size());
236 236
237 // The layer's target is the RenderPass from m_layerAfter. 237 // The layer's target is the RenderPass from m_layerAfter.
238 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id); 238 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id);
239 239
240 // The DelegatedRendererLayer should have added copies of quads in its root RenderPass to its target RenderPass. 240 // The DelegatedRendererLayer should have added copies of quads in its root RenderPass to its target RenderPass.
241 // The m_layerAfter also adds one quad. 241 // The m_layerAfter also adds one quad.
242 ASSERT_EQ(2u, frame.renderPasses[3]->quad_list.size()); 242 ASSERT_EQ(2u, frame.renderPasses[3]->quad_list.size());
243 243
244 // Verify it added the right quads. 244 // Verify it added the right quads.
245 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r ect); 245 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r ect);
246 246
247 // Its target layer should have a quad as well. 247 // Its target layer should have a quad as well.
248 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quad_list[1]- >rect); 248 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quad_list[1]- >rect);
249
250 m_hostImpl->drawLayers(frame);
251 m_hostImpl->didDrawAllLayers(frame);
249 } 252 }
250 253
251 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF orTheTarget) 254 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF orTheTarget)
252 { 255 {
253 LayerTreeHostImpl::FrameData frame; 256 LayerTreeHostImpl::FrameData frame;
254 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 257 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
255 m_hostImpl->drawLayers(frame);
256 m_hostImpl->didDrawAllLayers(frame);
257 258
258 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes. 259 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes.
259 ASSERT_EQ(5u, frame.renderPasses.size()); 260 ASSERT_EQ(5u, frame.renderPasses.size());
260 261
261 // The DelegatedRendererLayer is at position 3,3 compared to its target, and has a translation transform of 1,1. 262 // The DelegatedRendererLayer is at position 3,3 compared to its target, and has a translation transform of 1,1.
262 // So its root RenderPass' quads should all be transformed by that combined amount. 263 // So its root RenderPass' quads should all be transformed by that combined amount.
263 gfx::Transform transform; 264 gfx::Transform transform;
264 transform.Translate(4, 4); 265 transform.Translate(4, 4);
265 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quad_list[ 0]->quadTransform()); 266 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quad_list[ 0]->quadTransform());
266 267
267 // Quads from non-root RenderPasses should not be shifted though. 268 // Quads from non-root RenderPasses should not be shifted though.
268 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); 269 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size());
269 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[0]->quadTransform()); 270 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[0]->quadTransform());
270 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[1]->quadTransform()); 271 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[1]->quadTransform());
271 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); 272 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size());
272 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua d_list[0]->quadTransform()); 273 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua d_list[0]->quadTransform());
274
275 m_hostImpl->drawLayers(frame);
276 m_hostImpl->didDrawAllLayers(frame);
273 } 277 }
274 278
275 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) 279 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface)
276 { 280 {
277 LayerTreeHostImpl::FrameData frame; 281 LayerTreeHostImpl::FrameData frame;
278 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 282 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
279 m_hostImpl->drawLayers(frame);
280 m_hostImpl->didDrawAllLayers(frame);
281 283
282 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then 284 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then
283 // it has no need to be a renderSurface for the quads it carries. 285 // it has no need to be a renderSurface for the quads it carries.
284 EXPECT_FALSE(m_delegatedRendererLayerPtr->renderSurface()); 286 EXPECT_FALSE(m_delegatedRendererLayerPtr->renderSurface());
287
288 m_hostImpl->drawLayers(frame);
289 m_hostImpl->didDrawAllLayers(frame);
285 } 290 }
286 291
287 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurface) 292 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurface)
288 { 293 {
289 m_delegatedRendererLayerPtr->setOpacity(0.5f); 294 m_delegatedRendererLayerPtr->setOpacity(0.5f);
290 295
291 LayerTreeHostImpl::FrameData frame; 296 LayerTreeHostImpl::FrameData frame;
292 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 297 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
293 m_hostImpl->drawLayers(frame);
294 m_hostImpl->didDrawAllLayers(frame);
295 298
296 // This test case has quads from multiple layers in the delegated renderer, 299 // This test case has quads from multiple layers in the delegated renderer,
297 // so if the DelegatedRendererLayer has opacity < 1, it should end up with 300 // so if the DelegatedRendererLayer has opacity < 1, it should end up with
298 // a render surface. 301 // a render surface.
299 EXPECT_TRUE(m_delegatedRendererLayerPtr->renderSurface()); 302 EXPECT_TRUE(m_delegatedRendererLayerPtr->renderSurface());
300 303
304 m_hostImpl->drawLayers(frame);
305 m_hostImpl->didDrawAllLayers(frame);
301 } 306 }
302 307
303 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm plTestSimple { 308 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm plTestSimple {
304 public: 309 public:
305 DelegatedRendererLayerImplTestOwnSurface() 310 DelegatedRendererLayerImplTestOwnSurface()
306 : DelegatedRendererLayerImplTestSimple() 311 : DelegatedRendererLayerImplTestSimple()
307 { 312 {
308 m_delegatedRendererLayerPtr->setForceRenderSurface(true); 313 m_delegatedRendererLayerPtr->setForceRenderSurface(true);
309 } 314 }
310 }; 315 };
311 316
312 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) 317 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses)
313 { 318 {
314 LayerTreeHostImpl::FrameData frame; 319 LayerTreeHostImpl::FrameData frame;
315 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 320 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
316 m_hostImpl->drawLayers(frame);
317 m_hostImpl->didDrawAllLayers(frame);
318 321
319 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass. 322 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass.
320 ASSERT_EQ(6u, frame.renderPasses.size()); 323 ASSERT_EQ(6u, frame.renderPasses.size());
321 324
322 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame. 325 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame.
323 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); 326 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id);
324 EXPECT_EQ(1, frame.renderPasses[1]->id.index); 327 EXPECT_EQ(1, frame.renderPasses[1]->id.index);
325 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); 328 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id);
326 EXPECT_EQ(2, frame.renderPasses[2]->id.index); 329 EXPECT_EQ(2, frame.renderPasses[2]->id.index);
327 // The DelegatedRendererLayer should have added a RenderPass for its surface to the frame. 330 // The DelegatedRendererLayer should have added a RenderPass for its surface to the frame.
328 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); 331 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id);
329 EXPECT_EQ(0, frame.renderPasses[3]->id.index); 332 EXPECT_EQ(0, frame.renderPasses[3]->id.index);
330 // And all other RenderPasses should be non-delegated. 333 // And all other RenderPasses should be non-delegated.
331 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); 334 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id);
332 EXPECT_EQ(0, frame.renderPasses[0]->id.index); 335 EXPECT_EQ(0, frame.renderPasses[0]->id.index);
333 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); 336 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id);
334 EXPECT_EQ(0, frame.renderPasses[4]->id.index); 337 EXPECT_EQ(0, frame.renderPasses[4]->id.index);
335 EXPECT_NE(4, frame.renderPasses[5]->id.layer_id); 338 EXPECT_NE(4, frame.renderPasses[5]->id.layer_id);
336 EXPECT_EQ(0, frame.renderPasses[5]->id.index); 339 EXPECT_EQ(0, frame.renderPasses[5]->id.index);
337 340
338 // The DelegatedRendererLayer should have added its RenderPasses to the fram e in order. 341 // The DelegatedRendererLayer should have added its RenderPasses to the fram e in order.
339 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); 342 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect);
340 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); 343 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect);
344
345 m_hostImpl->drawLayers(frame);
346 m_hostImpl->didDrawAllLayers(frame);
341 } 347 }
342 348
343 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa sses) 349 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa sses)
344 { 350 {
345 LayerTreeHostImpl::FrameData frame; 351 LayerTreeHostImpl::FrameData frame;
346 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 352 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
347 m_hostImpl->drawLayers(frame);
348 m_hostImpl->didDrawAllLayers(frame);
349 353
350 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass. 354 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass.
351 ASSERT_EQ(6u, frame.renderPasses.size()); 355 ASSERT_EQ(6u, frame.renderPasses.size());
352 356
353 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame. 357 // The DelegatedRendererLayer should have added its contributing RenderPasse s to the frame.
354 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); 358 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id);
355 EXPECT_EQ(1, frame.renderPasses[1]->id.index); 359 EXPECT_EQ(1, frame.renderPasses[1]->id.index);
356 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); 360 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id);
357 EXPECT_EQ(2, frame.renderPasses[2]->id.index); 361 EXPECT_EQ(2, frame.renderPasses[2]->id.index);
358 362
359 // The DelegatedRendererLayer should have added copies of its quads to contr ibuting RenderPasses. 363 // The DelegatedRendererLayer should have added copies of its quads to contr ibuting RenderPasses.
360 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); 364 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size());
361 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect); 365 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect);
362 366
363 // Verify it added the right quads. 367 // Verify it added the right quads.
364 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); 368 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size());
365 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r ect); 369 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r ect);
366 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r ect); 370 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r ect);
367 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); 371 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size());
368 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect); 372 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r ect);
373
374 m_hostImpl->drawLayers(frame);
375 m_hostImpl->didDrawAllLayers(frame);
369 } 376 }
370 377
371 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) 378 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass)
372 { 379 {
373 LayerTreeHostImpl::FrameData frame; 380 LayerTreeHostImpl::FrameData frame;
374 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 381 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
375 m_hostImpl->drawLayers(frame);
376 m_hostImpl->didDrawAllLayers(frame);
377 382
378 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass. 383 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass.
379 ASSERT_EQ(6u, frame.renderPasses.size()); 384 ASSERT_EQ(6u, frame.renderPasses.size());
380 385
381 // The layer's target is the RenderPass owned by itself. 386 // The layer's target is the RenderPass owned by itself.
382 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id); 387 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id);
383 388
384 // The DelegatedRendererLayer should have added copies of quads in its root RenderPass to its target RenderPass. 389 // The DelegatedRendererLayer should have added copies of quads in its root RenderPass to its target RenderPass.
385 // The m_layerAfter also adds one quad. 390 // The m_layerAfter also adds one quad.
386 ASSERT_EQ(1u, frame.renderPasses[3]->quad_list.size()); 391 ASSERT_EQ(1u, frame.renderPasses[3]->quad_list.size());
387 392
388 // Verify it added the right quads. 393 // Verify it added the right quads.
389 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r ect); 394 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r ect);
395
396 m_hostImpl->drawLayers(frame);
397 m_hostImpl->didDrawAllLayers(frame);
390 } 398 }
391 399
392 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo difiedForTheTarget) 400 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo difiedForTheTarget)
393 { 401 {
394 LayerTreeHostImpl::FrameData frame; 402 LayerTreeHostImpl::FrameData frame;
395 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 403 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
396 m_hostImpl->drawLayers(frame);
397 m_hostImpl->didDrawAllLayers(frame);
398 404
399 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass. 405 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender erLayer added two contributing passes and its owned surface added one pass.
400 ASSERT_EQ(6u, frame.renderPasses.size()); 406 ASSERT_EQ(6u, frame.renderPasses.size());
401 407
402 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren derPass' quads do not need to be 408 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren derPass' quads do not need to be
403 // modified at all. 409 // modified at all.
404 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[3]->qua d_list[0]->quadTransform()); 410 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[3]->qua d_list[0]->quadTransform());
405 411
406 // Quads from non-root RenderPasses should not be shifted though. 412 // Quads from non-root RenderPasses should not be shifted though.
407 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); 413 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size());
408 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[0]->quadTransform()); 414 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[0]->quadTransform());
409 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[1]->quadTransform()); 415 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua d_list[1]->quadTransform());
410 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); 416 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size());
411 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua d_list[0]->quadTransform()); 417 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua d_list[0]->quadTransform());
418
419 m_hostImpl->drawLayers(frame);
420 m_hostImpl->didDrawAllLayers(frame);
412 } 421 }
413 422
414 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm plTest { 423 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm plTest {
415 public: 424 public:
416 DelegatedRendererLayerImplTestSharedData() 425 DelegatedRendererLayerImplTestSharedData()
417 : DelegatedRendererLayerImplTest() 426 : DelegatedRendererLayerImplTest()
418 { 427 {
419 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); 428 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1);
420 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate dRendererLayerImpl::create(2); 429 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate dRendererLayerImpl::create(2);
421 430
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 479
471 protected: 480 protected:
472 LayerImpl* m_rootLayerPtr; 481 LayerImpl* m_rootLayerPtr;
473 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; 482 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr;
474 }; 483 };
475 484
476 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData) 485 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData)
477 { 486 {
478 LayerTreeHostImpl::FrameData frame; 487 LayerTreeHostImpl::FrameData frame;
479 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 488 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
480 m_hostImpl->drawLayers(frame);
481 m_hostImpl->didDrawAllLayers(frame);
482 489
483 ASSERT_EQ(1u, frame.renderPasses.size()); 490 ASSERT_EQ(1u, frame.renderPasses.size());
484 EXPECT_EQ(1, frame.renderPasses[0]->id.layer_id); 491 EXPECT_EQ(1, frame.renderPasses[0]->id.layer_id);
485 EXPECT_EQ(0, frame.renderPasses[0]->id.index); 492 EXPECT_EQ(0, frame.renderPasses[0]->id.index);
486 493
487 const QuadList& quadList = frame.renderPasses[0]->quad_list; 494 const QuadList& quadList = frame.renderPasses[0]->quad_list;
488 ASSERT_EQ(4u, quadList.size()); 495 ASSERT_EQ(4u, quadList.size());
489 496
490 // All quads should share the same state. 497 // All quads should share the same state.
491 const SharedQuadState* sharedState = quadList[0]->shared_quad_state; 498 const SharedQuadState* sharedState = quadList[0]->shared_quad_state;
492 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); 499 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state);
493 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); 500 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state);
494 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); 501 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state);
495 502
496 // The state should be transformed only once. 503 // The state should be transformed only once.
497 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clipped_rect_in_targe t); 504 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clipped_rect_in_targe t);
498 gfx::Transform expected; 505 gfx::Transform expected;
499 expected.Translate(30, 30); 506 expected.Translate(30, 30);
500 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra nsform); 507 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra nsform);
508
509 m_hostImpl->drawLayers(frame);
510 m_hostImpl->didDrawAllLayers(frame);
501 } 511 }
502 512
503 } // namespace 513 } // namespace
504 } // namespace cc 514 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/direct_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698