OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/common/cc_messages.h" | 5 #include "content/common/cc_messages.h" |
6 | 6 |
7 #include "cc/output/compositor_frame.h" | 7 #include "cc/output/compositor_frame.h" |
8 #include "cc/output/filter_operations.h" | 8 #include "cc/output/filter_operations.h" |
9 #include "cc/quads/draw_quad.h" | 9 #include "cc/quads/draw_quad.h" |
10 #include "cc/quads/largest_draw_quad.h" | 10 #include "cc/quads/largest_draw_quad.h" |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 l->append(") "); | 293 l->append(") "); |
294 } | 294 } |
295 | 295 |
296 void ParamTraits<cc::RenderPass>::Write( | 296 void ParamTraits<cc::RenderPass>::Write( |
297 Message* m, const param_type& p) { | 297 Message* m, const param_type& p) { |
298 WriteParam(m, p.id); | 298 WriteParam(m, p.id); |
299 WriteParam(m, p.output_rect); | 299 WriteParam(m, p.output_rect); |
300 WriteParam(m, p.damage_rect); | 300 WriteParam(m, p.damage_rect); |
301 WriteParam(m, p.transform_to_root_target); | 301 WriteParam(m, p.transform_to_root_target); |
302 WriteParam(m, p.has_transparent_background); | 302 WriteParam(m, p.has_transparent_background); |
303 WriteParam(m, p.referenced_surfaces); | |
304 WriteParam(m, p.quad_list.size()); | 303 WriteParam(m, p.quad_list.size()); |
305 | 304 |
306 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = | 305 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = |
307 p.shared_quad_state_list.begin(); | 306 p.shared_quad_state_list.begin(); |
308 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = | 307 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = |
309 p.shared_quad_state_list.end(); | 308 p.shared_quad_state_list.end(); |
310 for (const auto& quad : p.quad_list) { | 309 for (const auto& quad : p.quad_list) { |
311 DCHECK(quad->rect.Contains(quad->visible_rect)) | 310 DCHECK(quad->rect.Contains(quad->visible_rect)) |
312 << quad->material << " rect: " << quad->rect.ToString() | 311 << quad->material << " rect: " << quad->rect.ToString() |
313 << " visible_rect: " << quad->visible_rect.ToString(); | 312 << " visible_rect: " << quad->visible_rect.ToString(); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 | 376 |
378 // Whether the quad points to a new shared quad state for each quad. | 377 // Whether the quad points to a new shared quad state for each quad. |
379 to_reserve += p.quad_list.size() * sizeof(bool); | 378 to_reserve += p.quad_list.size() * sizeof(bool); |
380 | 379 |
381 // Shared quad state is only written when a quad contains a shared quad state | 380 // Shared quad state is only written when a quad contains a shared quad state |
382 // that has not been written. | 381 // that has not been written. |
383 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); | 382 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); |
384 | 383 |
385 // The largest quad type, verified by a unit test. | 384 // The largest quad type, verified by a unit test. |
386 to_reserve += p.quad_list.size() * cc::LargestDrawQuadSize(); | 385 to_reserve += p.quad_list.size() * cc::LargestDrawQuadSize(); |
387 | |
388 // The actual list of referenced surfaces. | |
389 to_reserve += p.referenced_surfaces.size() * sizeof(cc::SurfaceId); | |
390 return to_reserve; | 386 return to_reserve; |
391 } | 387 } |
392 | 388 |
393 template <typename QuadType> | 389 template <typename QuadType> |
394 static cc::DrawQuad* ReadDrawQuad(const Message* m, | 390 static cc::DrawQuad* ReadDrawQuad(const Message* m, |
395 base::PickleIterator* iter, | 391 base::PickleIterator* iter, |
396 cc::RenderPass* render_pass) { | 392 cc::RenderPass* render_pass) { |
397 QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>(); | 393 QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>(); |
398 if (!ReadParam(m, iter, quad)) | 394 if (!ReadParam(m, iter, quad)) |
399 return NULL; | 395 return NULL; |
400 return quad; | 396 return quad; |
401 } | 397 } |
402 | 398 |
403 bool ParamTraits<cc::RenderPass>::Read(const Message* m, | 399 bool ParamTraits<cc::RenderPass>::Read(const Message* m, |
404 base::PickleIterator* iter, | 400 base::PickleIterator* iter, |
405 param_type* p) { | 401 param_type* p) { |
406 cc::RenderPassId id; | 402 cc::RenderPassId id; |
407 gfx::Rect output_rect; | 403 gfx::Rect output_rect; |
408 gfx::Rect damage_rect; | 404 gfx::Rect damage_rect; |
409 gfx::Transform transform_to_root_target; | 405 gfx::Transform transform_to_root_target; |
410 bool has_transparent_background; | 406 bool has_transparent_background; |
411 std::vector<cc::SurfaceId> referenced_surfaces; | |
412 size_t quad_list_size; | 407 size_t quad_list_size; |
413 | 408 |
414 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || | 409 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || |
415 !ReadParam(m, iter, &damage_rect) || | 410 !ReadParam(m, iter, &damage_rect) || |
416 !ReadParam(m, iter, &transform_to_root_target) || | 411 !ReadParam(m, iter, &transform_to_root_target) || |
417 !ReadParam(m, iter, &has_transparent_background) || | 412 !ReadParam(m, iter, &has_transparent_background) || |
418 !ReadParam(m, iter, &referenced_surfaces) || | |
419 !ReadParam(m, iter, &quad_list_size)) | 413 !ReadParam(m, iter, &quad_list_size)) |
420 return false; | 414 return false; |
421 | 415 |
422 p->SetAll(id, | 416 p->SetAll(id, |
423 output_rect, | 417 output_rect, |
424 damage_rect, | 418 damage_rect, |
425 transform_to_root_target, | 419 transform_to_root_target, |
426 has_transparent_background); | 420 has_transparent_background); |
427 p->referenced_surfaces.swap(referenced_surfaces); | |
428 | 421 |
429 for (size_t i = 0; i < quad_list_size; ++i) { | 422 for (size_t i = 0; i < quad_list_size; ++i) { |
430 cc::DrawQuad::Material material; | 423 cc::DrawQuad::Material material; |
431 base::PickleIterator temp_iter = *iter; | 424 base::PickleIterator temp_iter = *iter; |
432 if (!ReadParam(m, &temp_iter, &material)) | 425 if (!ReadParam(m, &temp_iter, &material)) |
433 return false; | 426 return false; |
434 | 427 |
435 cc::DrawQuad* draw_quad = NULL; | 428 cc::DrawQuad* draw_quad = NULL; |
436 switch (material) { | 429 switch (material) { |
437 case cc::DrawQuad::DEBUG_BORDER: | 430 case cc::DrawQuad::DEBUG_BORDER: |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 LogParam(p.id, l); | 499 LogParam(p.id, l); |
507 l->append("), "); | 500 l->append("), "); |
508 LogParam(p.output_rect, l); | 501 LogParam(p.output_rect, l); |
509 l->append(", "); | 502 l->append(", "); |
510 LogParam(p.damage_rect, l); | 503 LogParam(p.damage_rect, l); |
511 l->append(", "); | 504 l->append(", "); |
512 LogParam(p.transform_to_root_target, l); | 505 LogParam(p.transform_to_root_target, l); |
513 l->append(", "); | 506 l->append(", "); |
514 LogParam(p.has_transparent_background, l); | 507 LogParam(p.has_transparent_background, l); |
515 l->append(", "); | 508 l->append(", "); |
516 LogParam(p.referenced_surfaces, l); | |
517 l->append(", "); | |
518 | 509 |
519 l->append("["); | 510 l->append("["); |
520 for (const auto& shared_quad_state : p.shared_quad_state_list) { | 511 for (const auto& shared_quad_state : p.shared_quad_state_list) { |
521 if (shared_quad_state != p.shared_quad_state_list.front()) | 512 if (shared_quad_state != p.shared_quad_state_list.front()) |
522 l->append(", "); | 513 l->append(", "); |
523 LogParam(*shared_quad_state, l); | 514 LogParam(*shared_quad_state, l); |
524 } | 515 } |
525 l->append("], ["); | 516 l->append("], ["); |
526 for (const auto& quad : p.quad_list) { | 517 for (const auto& quad : p.quad_list) { |
527 if (quad != p.quad_list.front()) | 518 if (quad != p.quad_list.front()) |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 l->append("TextureDrawQuad::OverlayResources(["); | 841 l->append("TextureDrawQuad::OverlayResources(["); |
851 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { | 842 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { |
852 LogParam(p.size_in_pixels[i], l); | 843 LogParam(p.size_in_pixels[i], l); |
853 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) | 844 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) |
854 l->append(", "); | 845 l->append(", "); |
855 } | 846 } |
856 l->append("])"); | 847 l->append("])"); |
857 } | 848 } |
858 | 849 |
859 } // namespace IPC | 850 } // namespace IPC |
OLD | NEW |