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

Unified Diff: content/common/cc_messages.cc

Issue 448303002: Use custom ListContainer to allocate DrawQuads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perftest
Patch Set: fix win trybot compile error Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/common/cc_messages.cc
diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc
index 17a7913a8d1c804ad64e3ea24331c2208165a7e3..b1c34be339a5ccb402dc99231479a5947c17743f 100644
--- a/content/common/cc_messages.cc
+++ b/content/common/cc_messages.cc
@@ -299,8 +299,10 @@ void ParamTraits<cc::RenderPass>::Write(
size_t shared_quad_state_index = 0;
size_t last_shared_quad_state_index = kuint32max;
- for (size_t i = 0; i < p.quad_list.size(); ++i) {
- const cc::DrawQuad* quad = p.quad_list[i];
+ for (cc::QuadList::ConstIterator iter = p.quad_list.begin();
+ iter != p.quad_list.end();
+ ++iter) {
+ const cc::DrawQuad* quad = &*iter;
DCHECK(quad->rect.Contains(quad->visible_rect))
<< quad->material << " rect: " << quad->rect.ToString()
<< " visible_rect: " << quad->visible_rect.ToString();
@@ -393,13 +395,14 @@ static size_t ReserveSizeForRenderPassWrite(const cc::RenderPass& p) {
return to_reserve;
}
-template<typename QuadType>
-static scoped_ptr<cc::DrawQuad> ReadDrawQuad(const Message* m,
- PickleIterator* iter) {
- scoped_ptr<QuadType> quad(new QuadType);
- if (!ReadParam(m, iter, quad.get()))
- return scoped_ptr<QuadType>().template PassAs<cc::DrawQuad>();
- return quad.template PassAs<cc::DrawQuad>();
+template <typename QuadType>
+static cc::DrawQuad* ReadDrawQuad(const Message* m,
+ PickleIterator* iter,
+ cc::RenderPass* render_pass) {
+ QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>();
+ if (!ReadParam(m, iter, quad))
+ return NULL;
+ return quad;
}
bool ParamTraits<cc::RenderPass>::Read(
@@ -434,40 +437,40 @@ bool ParamTraits<cc::RenderPass>::Read(
if (!ReadParam(m, &temp_iter, &material))
return false;
- scoped_ptr<cc::DrawQuad> draw_quad;
+ cc::DrawQuad* draw_quad = NULL;
switch (material) {
case cc::DrawQuad::CHECKERBOARD:
- draw_quad = ReadDrawQuad<cc::CheckerboardDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::CheckerboardDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::DEBUG_BORDER:
- draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::IO_SURFACE_CONTENT:
- draw_quad = ReadDrawQuad<cc::IOSurfaceDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::IOSurfaceDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::PICTURE_CONTENT:
NOTREACHED();
return false;
case cc::DrawQuad::SURFACE_CONTENT:
- draw_quad = ReadDrawQuad<cc::SurfaceDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::SurfaceDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::TEXTURE_CONTENT:
- draw_quad = ReadDrawQuad<cc::TextureDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::TextureDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::RENDER_PASS:
- draw_quad = ReadDrawQuad<cc::RenderPassDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::RenderPassDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::SOLID_COLOR:
- draw_quad = ReadDrawQuad<cc::SolidColorDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::SolidColorDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::TILED_CONTENT:
- draw_quad = ReadDrawQuad<cc::TileDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::TileDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::STREAM_VIDEO_CONTENT:
- draw_quad = ReadDrawQuad<cc::StreamVideoDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::StreamVideoDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::YUV_VIDEO_CONTENT:
- draw_quad = ReadDrawQuad<cc::YUVVideoDrawQuad>(m, iter);
+ draw_quad = ReadDrawQuad<cc::YUVVideoDrawQuad>(m, iter, p);
break;
case cc::DrawQuad::INVALID:
break;
@@ -507,7 +510,6 @@ bool ParamTraits<cc::RenderPass>::Read(
}
draw_quad->shared_quad_state = p->shared_quad_state_list.back();
- p->quad_list.push_back(draw_quad.Pass());
}
return true;
@@ -534,10 +536,12 @@ void ParamTraits<cc::RenderPass>::Log(
LogParam(*p.shared_quad_state_list[i], l);
}
l->append("], [");
- for (size_t i = 0; i < p.quad_list.size(); ++i) {
- if (i)
+ for (cc::QuadList::ConstIterator iter = p.quad_list.begin();
+ iter != p.quad_list.end();
+ ++iter) {
+ if (iter != p.quad_list.begin())
l->append(", ");
- const cc::DrawQuad* quad = p.quad_list[i];
+ const cc::DrawQuad* quad = &*iter;
switch (quad->material) {
case cc::DrawQuad::CHECKERBOARD:
LogParam(*cc::CheckerboardDrawQuad::MaterialCast(quad), l);

Powered by Google App Engine
This is Rietveld 408576698