Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / cc / quads / render_pass.cc
index 43bb7cd..e487c09 100644 (file)
@@ -13,6 +13,7 @@
 #include "cc/quads/debug_border_draw_quad.h"
 #include "cc/quads/draw_quad.h"
 #include "cc/quads/io_surface_draw_quad.h"
+#include "cc/quads/largest_draw_quad.h"
 #include "cc/quads/picture_draw_quad.h"
 #include "cc/quads/render_pass_draw_quad.h"
 #include "cc/quads/shared_quad_state.h"
@@ -30,10 +31,9 @@ const size_t kDefaultNumQuadsToReserve = 128;
 
 namespace cc {
 
-void* RenderPass::Id::AsTracingId() const {
-  COMPILE_ASSERT(sizeof(size_t) <= sizeof(void*),  // NOLINT
-                 size_t_bigger_than_pointer);
-  return reinterpret_cast<void*>(base::HashPair(layer_id, index));
+QuadList::QuadList(size_t default_size_to_reserve)
+    : ListContainer<DrawQuad>(sizeof(kLargestDrawQuad),
+                              default_size_to_reserve) {
 }
 
 scoped_ptr<RenderPass> RenderPass::Create() {
@@ -44,17 +44,20 @@ scoped_ptr<RenderPass> RenderPass::Create(size_t num_layers) {
   return make_scoped_ptr(new RenderPass(num_layers));
 }
 
-RenderPass::RenderPass() : id(Id(-1, -1)), has_transparent_background(true) {
+RenderPass::RenderPass()
+    : id(RenderPassId(-1, -1)),
+      has_transparent_background(true),
+      quad_list(kDefaultNumQuadsToReserve) {
   shared_quad_state_list.reserve(kDefaultNumSharedQuadStatesToReserve);
-  quad_list.reserve(kDefaultNumQuadsToReserve);
 }
 
 RenderPass::RenderPass(size_t num_layers)
-    : id(Id(-1, -1)), has_transparent_background(true) {
+    : id(RenderPassId(-1, -1)),
+      has_transparent_background(true),
+      quad_list(kDefaultNumQuadsToReserve) {
   // Each layer usually produces one shared quad state, so the number of layers
   // is a good hint for what to reserve here.
   shared_quad_state_list.reserve(num_layers);
-  quad_list.reserve(kDefaultNumQuadsToReserve);
 }
 
 RenderPass::~RenderPass() {
@@ -63,7 +66,7 @@ RenderPass::~RenderPass() {
       "cc::RenderPass", id.AsTracingId());
 }
 
-scoped_ptr<RenderPass> RenderPass::Copy(Id new_id) const {
+scoped_ptr<RenderPass> RenderPass::Copy(RenderPassId new_id) const {
   scoped_ptr<RenderPass> copy_pass(Create());
   copy_pass->SetAll(new_id,
                     output_rect,
@@ -94,16 +97,17 @@ void RenderPass::CopyAll(const ScopedPtrVector<RenderPass>& in,
           copy_pass->CreateAndAppendSharedQuadState();
       copy_shared_quad_state->CopyFrom(source->shared_quad_state_list[i]);
     }
-    for (size_t i = 0, sqs_i = 0; i < source->quad_list.size(); ++i) {
-      while (source->quad_list[i]->shared_quad_state !=
-             source->shared_quad_state_list[sqs_i]) {
+    size_t sqs_i = 0;
+    for (QuadList::Iterator iter = source->quad_list.begin();
+         iter != source->quad_list.end();
+         ++iter) {
+      while (iter->shared_quad_state != source->shared_quad_state_list[sqs_i]) {
         ++sqs_i;
         DCHECK_LT(sqs_i, source->shared_quad_state_list.size());
       }
-      DCHECK(source->quad_list[i]->shared_quad_state ==
-             source->shared_quad_state_list[sqs_i]);
+      DCHECK(iter->shared_quad_state == source->shared_quad_state_list[sqs_i]);
 
-      DrawQuad* quad = source->quad_list[i];
+      DrawQuad* quad = &*iter;
 
       if (quad->material == DrawQuad::RENDER_PASS) {
         const RenderPassDrawQuad* pass_quad =
@@ -121,7 +125,7 @@ void RenderPass::CopyAll(const ScopedPtrVector<RenderPass>& in,
   }
 }
 
-void RenderPass::SetNew(Id id,
+void RenderPass::SetNew(RenderPassId id,
                         const gfx::Rect& output_rect,
                         const gfx::Rect& damage_rect,
                         const gfx::Transform& transform_to_root_target) {
@@ -140,7 +144,7 @@ void RenderPass::SetNew(Id id,
   DCHECK(shared_quad_state_list.empty());
 }
 
-void RenderPass::SetAll(Id id,
+void RenderPass::SetAll(RenderPassId id,
                         const gfx::Rect& output_rect,
                         const gfx::Rect& damage_rect,
                         const gfx::Transform& transform_to_root_target,
@@ -179,9 +183,11 @@ void RenderPass::AsValueInto(base::debug::TracedValue* value) const {
   value->EndArray();
 
   value->BeginArray("quad_list");
-  for (size_t i = 0; i < quad_list.size(); ++i) {
+  for (QuadList::ConstIterator iter = quad_list.begin();
+       iter != quad_list.end();
+       ++iter) {
     value->BeginDictionary();
-    quad_list[i]->AsValueInto(value);
+    iter->AsValueInto(value);
     value->EndDictionary();
   }
   value->EndArray();
@@ -201,7 +207,7 @@ SharedQuadState* RenderPass::CreateAndAppendSharedQuadState() {
 RenderPassDrawQuad* RenderPass::CopyFromAndAppendRenderPassDrawQuad(
     const RenderPassDrawQuad* quad,
     const SharedQuadState* shared_quad_state,
-    RenderPass::Id render_pass_id) {
+    RenderPassId render_pass_id) {
   RenderPassDrawQuad* copy_quad =
       CopyFromAndAppendTypedDrawQuad<RenderPassDrawQuad>(quad);
   copy_quad->shared_quad_state = shared_quad_state;