| Index: cc/quads/render_pass.cc
|
| diff --git a/cc/quads/render_pass.cc b/cc/quads/render_pass.cc
|
| index 6cb59d8efe541852f8e40f3ec21e33e7d065d738..e487c0963824d58f842e479f29c20711642c682c 100644
|
| --- a/cc/quads/render_pass.cc
|
| +++ b/cc/quads/render_pass.cc
|
| @@ -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,6 +31,11 @@ const size_t kDefaultNumQuadsToReserve = 128;
|
|
|
| namespace cc {
|
|
|
| +QuadList::QuadList(size_t default_size_to_reserve)
|
| + : ListContainer<DrawQuad>(sizeof(kLargestDrawQuad),
|
| + default_size_to_reserve) {
|
| +}
|
| +
|
| scoped_ptr<RenderPass> RenderPass::Create() {
|
| return make_scoped_ptr(new RenderPass());
|
| }
|
| @@ -39,17 +45,19 @@ scoped_ptr<RenderPass> RenderPass::Create(size_t num_layers) {
|
| }
|
|
|
| RenderPass::RenderPass()
|
| - : id(RenderPassId(-1, -1)), has_transparent_background(true) {
|
| + : 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(RenderPassId(-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() {
|
| @@ -89,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 =
|
| @@ -174,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();
|
|
|