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

Side by Side Diff: cc/quads/render_pass.cc

Issue 404563005: Make RenderPass::Id an isolated class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: one more case in mojo Created 6 years, 4 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 unified diff | Download patch
« no previous file with comments | « cc/quads/render_pass.h ('k') | cc/quads/render_pass_draw_quad.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/quads/render_pass.h" 5 #include "cc/quads/render_pass.h"
6 6
7 #include "base/debug/trace_event_argument.h" 7 #include "base/debug/trace_event_argument.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
10 #include "cc/debug/traced_value.h" 10 #include "cc/debug/traced_value.h"
(...skipping 12 matching lines...) Expand all
23 #include "cc/quads/tile_draw_quad.h" 23 #include "cc/quads/tile_draw_quad.h"
24 #include "cc/quads/yuv_video_draw_quad.h" 24 #include "cc/quads/yuv_video_draw_quad.h"
25 25
26 namespace { 26 namespace {
27 const size_t kDefaultNumSharedQuadStatesToReserve = 32; 27 const size_t kDefaultNumSharedQuadStatesToReserve = 32;
28 const size_t kDefaultNumQuadsToReserve = 128; 28 const size_t kDefaultNumQuadsToReserve = 128;
29 } 29 }
30 30
31 namespace cc { 31 namespace cc {
32 32
33 void* RenderPass::Id::AsTracingId() const {
34 COMPILE_ASSERT(sizeof(size_t) <= sizeof(void*), // NOLINT
35 size_t_bigger_than_pointer);
36 return reinterpret_cast<void*>(base::HashPair(layer_id, index));
37 }
38
39 scoped_ptr<RenderPass> RenderPass::Create() { 33 scoped_ptr<RenderPass> RenderPass::Create() {
40 return make_scoped_ptr(new RenderPass()); 34 return make_scoped_ptr(new RenderPass());
41 } 35 }
42 36
43 scoped_ptr<RenderPass> RenderPass::Create(size_t num_layers) { 37 scoped_ptr<RenderPass> RenderPass::Create(size_t num_layers) {
44 return make_scoped_ptr(new RenderPass(num_layers)); 38 return make_scoped_ptr(new RenderPass(num_layers));
45 } 39 }
46 40
47 RenderPass::RenderPass() : id(Id(-1, -1)), has_transparent_background(true) { 41 RenderPass::RenderPass()
42 : id(RenderPassId(-1, -1)), has_transparent_background(true) {
48 shared_quad_state_list.reserve(kDefaultNumSharedQuadStatesToReserve); 43 shared_quad_state_list.reserve(kDefaultNumSharedQuadStatesToReserve);
49 quad_list.reserve(kDefaultNumQuadsToReserve); 44 quad_list.reserve(kDefaultNumQuadsToReserve);
50 } 45 }
51 46
52 RenderPass::RenderPass(size_t num_layers) 47 RenderPass::RenderPass(size_t num_layers)
53 : id(Id(-1, -1)), has_transparent_background(true) { 48 : id(RenderPassId(-1, -1)), has_transparent_background(true) {
54 // Each layer usually produces one shared quad state, so the number of layers 49 // Each layer usually produces one shared quad state, so the number of layers
55 // is a good hint for what to reserve here. 50 // is a good hint for what to reserve here.
56 shared_quad_state_list.reserve(num_layers); 51 shared_quad_state_list.reserve(num_layers);
57 quad_list.reserve(kDefaultNumQuadsToReserve); 52 quad_list.reserve(kDefaultNumQuadsToReserve);
58 } 53 }
59 54
60 RenderPass::~RenderPass() { 55 RenderPass::~RenderPass() {
61 TRACE_EVENT_OBJECT_DELETED_WITH_ID( 56 TRACE_EVENT_OBJECT_DELETED_WITH_ID(
62 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), 57 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"),
63 "cc::RenderPass", id.AsTracingId()); 58 "cc::RenderPass", id.AsTracingId());
64 } 59 }
65 60
66 scoped_ptr<RenderPass> RenderPass::Copy(Id new_id) const { 61 scoped_ptr<RenderPass> RenderPass::Copy(RenderPassId new_id) const {
67 scoped_ptr<RenderPass> copy_pass(Create()); 62 scoped_ptr<RenderPass> copy_pass(Create());
68 copy_pass->SetAll(new_id, 63 copy_pass->SetAll(new_id,
69 output_rect, 64 output_rect,
70 damage_rect, 65 damage_rect,
71 transform_to_root_target, 66 transform_to_root_target,
72 has_transparent_background); 67 has_transparent_background);
73 return copy_pass.Pass(); 68 return copy_pass.Pass();
74 } 69 }
75 70
76 // static 71 // static
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 pass_quad->render_pass_id); 109 pass_quad->render_pass_id);
115 } else { 110 } else {
116 copy_pass->CopyFromAndAppendDrawQuad( 111 copy_pass->CopyFromAndAppendDrawQuad(
117 quad, copy_pass->shared_quad_state_list[sqs_i]); 112 quad, copy_pass->shared_quad_state_list[sqs_i]);
118 } 113 }
119 } 114 }
120 out->push_back(copy_pass.Pass()); 115 out->push_back(copy_pass.Pass());
121 } 116 }
122 } 117 }
123 118
124 void RenderPass::SetNew(Id id, 119 void RenderPass::SetNew(RenderPassId id,
125 const gfx::Rect& output_rect, 120 const gfx::Rect& output_rect,
126 const gfx::Rect& damage_rect, 121 const gfx::Rect& damage_rect,
127 const gfx::Transform& transform_to_root_target) { 122 const gfx::Transform& transform_to_root_target) {
128 DCHECK_GT(id.layer_id, 0); 123 DCHECK_GT(id.layer_id, 0);
129 DCHECK_GE(id.index, 0); 124 DCHECK_GE(id.index, 0);
130 DCHECK(damage_rect.IsEmpty() || output_rect.Contains(damage_rect)) 125 DCHECK(damage_rect.IsEmpty() || output_rect.Contains(damage_rect))
131 << "damage_rect: " << damage_rect.ToString() 126 << "damage_rect: " << damage_rect.ToString()
132 << " output_rect: " << output_rect.ToString(); 127 << " output_rect: " << output_rect.ToString();
133 128
134 this->id = id; 129 this->id = id;
135 this->output_rect = output_rect; 130 this->output_rect = output_rect;
136 this->damage_rect = damage_rect; 131 this->damage_rect = damage_rect;
137 this->transform_to_root_target = transform_to_root_target; 132 this->transform_to_root_target = transform_to_root_target;
138 133
139 DCHECK(quad_list.empty()); 134 DCHECK(quad_list.empty());
140 DCHECK(shared_quad_state_list.empty()); 135 DCHECK(shared_quad_state_list.empty());
141 } 136 }
142 137
143 void RenderPass::SetAll(Id id, 138 void RenderPass::SetAll(RenderPassId id,
144 const gfx::Rect& output_rect, 139 const gfx::Rect& output_rect,
145 const gfx::Rect& damage_rect, 140 const gfx::Rect& damage_rect,
146 const gfx::Transform& transform_to_root_target, 141 const gfx::Transform& transform_to_root_target,
147 bool has_transparent_background) { 142 bool has_transparent_background) {
148 DCHECK_GT(id.layer_id, 0); 143 DCHECK_GT(id.layer_id, 0);
149 DCHECK_GE(id.index, 0); 144 DCHECK_GE(id.index, 0);
150 145
151 this->id = id; 146 this->id = id;
152 this->output_rect = output_rect; 147 this->output_rect = output_rect;
153 this->damage_rect = damage_rect; 148 this->damage_rect = damage_rect;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 } 189 }
195 190
196 SharedQuadState* RenderPass::CreateAndAppendSharedQuadState() { 191 SharedQuadState* RenderPass::CreateAndAppendSharedQuadState() {
197 shared_quad_state_list.push_back(make_scoped_ptr(new SharedQuadState)); 192 shared_quad_state_list.push_back(make_scoped_ptr(new SharedQuadState));
198 return shared_quad_state_list.back(); 193 return shared_quad_state_list.back();
199 } 194 }
200 195
201 RenderPassDrawQuad* RenderPass::CopyFromAndAppendRenderPassDrawQuad( 196 RenderPassDrawQuad* RenderPass::CopyFromAndAppendRenderPassDrawQuad(
202 const RenderPassDrawQuad* quad, 197 const RenderPassDrawQuad* quad,
203 const SharedQuadState* shared_quad_state, 198 const SharedQuadState* shared_quad_state,
204 RenderPass::Id render_pass_id) { 199 RenderPassId render_pass_id) {
205 RenderPassDrawQuad* copy_quad = 200 RenderPassDrawQuad* copy_quad =
206 CopyFromAndAppendTypedDrawQuad<RenderPassDrawQuad>(quad); 201 CopyFromAndAppendTypedDrawQuad<RenderPassDrawQuad>(quad);
207 copy_quad->shared_quad_state = shared_quad_state; 202 copy_quad->shared_quad_state = shared_quad_state;
208 copy_quad->render_pass_id = render_pass_id; 203 copy_quad->render_pass_id = render_pass_id;
209 return copy_quad; 204 return copy_quad;
210 } 205 }
211 206
212 DrawQuad* RenderPass::CopyFromAndAppendDrawQuad( 207 DrawQuad* RenderPass::CopyFromAndAppendDrawQuad(
213 const DrawQuad* quad, 208 const DrawQuad* quad,
214 const SharedQuadState* shared_quad_state) { 209 const SharedQuadState* shared_quad_state) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 case DrawQuad::RENDER_PASS: 242 case DrawQuad::RENDER_PASS:
248 case DrawQuad::INVALID: 243 case DrawQuad::INVALID:
249 LOG(FATAL) << "Invalid DrawQuad material " << quad->material; 244 LOG(FATAL) << "Invalid DrawQuad material " << quad->material;
250 break; 245 break;
251 } 246 }
252 quad_list.back()->shared_quad_state = shared_quad_state; 247 quad_list.back()->shared_quad_state = shared_quad_state;
253 return quad_list.back(); 248 return quad_list.back();
254 } 249 }
255 250
256 } // namespace cc 251 } // namespace cc
OLDNEW
« no previous file with comments | « cc/quads/render_pass.h ('k') | cc/quads/render_pass_draw_quad.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698