OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "cc/quads/render_pass.h" | 5 #include "cc/quads/render_pass.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 73 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
74 pass->SetAll(id, | 74 pass->SetAll(id, |
75 output_rect, | 75 output_rect, |
76 damage_rect, | 76 damage_rect, |
77 transform_to_root, | 77 transform_to_root, |
78 has_transparent_background); | 78 has_transparent_background); |
79 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest()); | 79 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest()); |
80 | 80 |
81 // Stick a quad in the pass, this should not get copied. | 81 // Stick a quad in the pass, this should not get copied. |
82 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 82 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
83 shared_state->SetAll(gfx::Transform(), | 83 shared_state->SetAll(gfx::Transform(), gfx::Size(), gfx::Rect(), gfx::Rect(), |
84 gfx::Size(), | 84 false, 1, SkBlendMode::kSrcOver, 0); |
85 gfx::Rect(), | |
86 gfx::Rect(), | |
87 false, | |
88 1, | |
89 SkXfermode::kSrcOver_Mode, | |
90 0); | |
91 | 85 |
92 SolidColorDrawQuad* color_quad = | 86 SolidColorDrawQuad* color_quad = |
93 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 87 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
94 color_quad->SetNew(pass->shared_quad_state_list.back(), gfx::Rect(), | 88 color_quad->SetNew(pass->shared_quad_state_list.back(), gfx::Rect(), |
95 gfx::Rect(), SkColor(), false); | 89 gfx::Rect(), SkColor(), false); |
96 | 90 |
97 RenderPassId new_id(63, 4); | 91 RenderPassId new_id(63, 4); |
98 | 92 |
99 std::unique_ptr<RenderPass> copy = pass->Copy(new_id); | 93 std::unique_ptr<RenderPass> copy = pass->Copy(new_id); |
100 EXPECT_EQ(new_id, copy->id); | 94 EXPECT_EQ(new_id, copy->id); |
(...skipping 22 matching lines...) Expand all Loading... |
123 | 117 |
124 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 118 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
125 pass->SetAll(id, | 119 pass->SetAll(id, |
126 output_rect, | 120 output_rect, |
127 damage_rect, | 121 damage_rect, |
128 transform_to_root, | 122 transform_to_root, |
129 has_transparent_background); | 123 has_transparent_background); |
130 | 124 |
131 // Two quads using one shared state. | 125 // Two quads using one shared state. |
132 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); | 126 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); |
133 shared_state1->SetAll(gfx::Transform(), | 127 shared_state1->SetAll(gfx::Transform(), gfx::Size(1, 1), gfx::Rect(), |
134 gfx::Size(1, 1), | 128 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
135 gfx::Rect(), | |
136 gfx::Rect(), | |
137 false, | |
138 1, | |
139 SkXfermode::kSrcOver_Mode, | |
140 0); | |
141 | 129 |
142 SolidColorDrawQuad* color_quad1 = | 130 SolidColorDrawQuad* color_quad1 = |
143 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 131 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
144 color_quad1->SetNew(pass->shared_quad_state_list.back(), | 132 color_quad1->SetNew(pass->shared_quad_state_list.back(), |
145 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), SkColor(), | 133 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), SkColor(), |
146 false); | 134 false); |
147 | 135 |
148 SolidColorDrawQuad* color_quad2 = | 136 SolidColorDrawQuad* color_quad2 = |
149 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 137 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
150 color_quad2->SetNew(pass->shared_quad_state_list.back(), | 138 color_quad2->SetNew(pass->shared_quad_state_list.back(), |
151 gfx::Rect(2, 2, 2, 2), gfx::Rect(2, 2, 2, 2), SkColor(), | 139 gfx::Rect(2, 2, 2, 2), gfx::Rect(2, 2, 2, 2), SkColor(), |
152 false); | 140 false); |
153 | 141 |
154 // And two quads using another shared state. | 142 // And two quads using another shared state. |
155 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); | 143 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); |
156 shared_state2->SetAll(gfx::Transform(), | 144 shared_state2->SetAll(gfx::Transform(), gfx::Size(2, 2), gfx::Rect(), |
157 gfx::Size(2, 2), | 145 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
158 gfx::Rect(), | |
159 gfx::Rect(), | |
160 false, | |
161 1, | |
162 SkXfermode::kSrcOver_Mode, | |
163 0); | |
164 | 146 |
165 SolidColorDrawQuad* color_quad3 = | 147 SolidColorDrawQuad* color_quad3 = |
166 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 148 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
167 color_quad3->SetNew(pass->shared_quad_state_list.back(), | 149 color_quad3->SetNew(pass->shared_quad_state_list.back(), |
168 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), | 150 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), |
169 false); | 151 false); |
170 | 152 |
171 SolidColorDrawQuad* color_quad4 = | 153 SolidColorDrawQuad* color_quad4 = |
172 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 154 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
173 color_quad4->SetNew(pass->shared_quad_state_list.back(), | 155 color_quad4->SetNew(pass->shared_quad_state_list.back(), |
(...skipping 10 matching lines...) Expand all Loading... |
184 | 166 |
185 std::unique_ptr<RenderPass> contrib = RenderPass::Create(); | 167 std::unique_ptr<RenderPass> contrib = RenderPass::Create(); |
186 contrib->SetAll(contrib_id, | 168 contrib->SetAll(contrib_id, |
187 contrib_output_rect, | 169 contrib_output_rect, |
188 contrib_damage_rect, | 170 contrib_damage_rect, |
189 contrib_transform_to_root, | 171 contrib_transform_to_root, |
190 contrib_has_transparent_background); | 172 contrib_has_transparent_background); |
191 | 173 |
192 SharedQuadState* contrib_shared_state = | 174 SharedQuadState* contrib_shared_state = |
193 contrib->CreateAndAppendSharedQuadState(); | 175 contrib->CreateAndAppendSharedQuadState(); |
194 contrib_shared_state->SetAll(gfx::Transform(), | 176 contrib_shared_state->SetAll(gfx::Transform(), gfx::Size(2, 2), gfx::Rect(), |
195 gfx::Size(2, 2), | 177 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
196 gfx::Rect(), | |
197 gfx::Rect(), | |
198 false, | |
199 1, | |
200 SkXfermode::kSrcOver_Mode, | |
201 0); | |
202 | 178 |
203 SolidColorDrawQuad* contrib_quad = | 179 SolidColorDrawQuad* contrib_quad = |
204 contrib->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 180 contrib->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
205 contrib_quad->SetNew(contrib->shared_quad_state_list.back(), | 181 contrib_quad->SetNew(contrib->shared_quad_state_list.back(), |
206 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), | 182 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), |
207 false); | 183 false); |
208 | 184 |
209 // And a RenderPassDrawQuad for the contributing pass. | 185 // And a RenderPassDrawQuad for the contributing pass. |
210 std::unique_ptr<RenderPassDrawQuad> pass_quad = | 186 std::unique_ptr<RenderPassDrawQuad> pass_quad = |
211 base::WrapUnique(new RenderPassDrawQuad); | 187 base::WrapUnique(new RenderPassDrawQuad); |
(...skipping 24 matching lines...) Expand all Loading... |
236 | 212 |
237 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 213 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
238 pass->SetAll(id, | 214 pass->SetAll(id, |
239 output_rect, | 215 output_rect, |
240 damage_rect, | 216 damage_rect, |
241 transform_to_root, | 217 transform_to_root, |
242 has_transparent_background); | 218 has_transparent_background); |
243 | 219 |
244 // A shared state with a quad. | 220 // A shared state with a quad. |
245 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); | 221 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); |
246 shared_state1->SetAll(gfx::Transform(), | 222 shared_state1->SetAll(gfx::Transform(), gfx::Size(1, 1), gfx::Rect(), |
247 gfx::Size(1, 1), | 223 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
248 gfx::Rect(), | |
249 gfx::Rect(), | |
250 false, | |
251 1, | |
252 SkXfermode::kSrcOver_Mode, | |
253 0); | |
254 | 224 |
255 SolidColorDrawQuad* color_quad1 = | 225 SolidColorDrawQuad* color_quad1 = |
256 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 226 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
257 color_quad1->SetNew(pass->shared_quad_state_list.back(), | 227 color_quad1->SetNew(pass->shared_quad_state_list.back(), |
258 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), SkColor(), | 228 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), SkColor(), |
259 false); | 229 false); |
260 | 230 |
261 // A shared state with no quads, they were culled. | 231 // A shared state with no quads, they were culled. |
262 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); | 232 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); |
263 shared_state2->SetAll(gfx::Transform(), | 233 shared_state2->SetAll(gfx::Transform(), gfx::Size(2, 2), gfx::Rect(), |
264 gfx::Size(2, 2), | 234 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
265 gfx::Rect(), | |
266 gfx::Rect(), | |
267 false, | |
268 1, | |
269 SkXfermode::kSrcOver_Mode, | |
270 0); | |
271 | 235 |
272 // A second shared state with no quads. | 236 // A second shared state with no quads. |
273 SharedQuadState* shared_state3 = pass->CreateAndAppendSharedQuadState(); | 237 SharedQuadState* shared_state3 = pass->CreateAndAppendSharedQuadState(); |
274 shared_state3->SetAll(gfx::Transform(), | 238 shared_state3->SetAll(gfx::Transform(), gfx::Size(2, 2), gfx::Rect(), |
275 gfx::Size(2, 2), | 239 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
276 gfx::Rect(), | |
277 gfx::Rect(), | |
278 false, | |
279 1, | |
280 SkXfermode::kSrcOver_Mode, | |
281 0); | |
282 | 240 |
283 // A last shared state with a quad again. | 241 // A last shared state with a quad again. |
284 SharedQuadState* shared_state4 = pass->CreateAndAppendSharedQuadState(); | 242 SharedQuadState* shared_state4 = pass->CreateAndAppendSharedQuadState(); |
285 shared_state4->SetAll(gfx::Transform(), | 243 shared_state4->SetAll(gfx::Transform(), gfx::Size(2, 2), gfx::Rect(), |
286 gfx::Size(2, 2), | 244 gfx::Rect(), false, 1, SkBlendMode::kSrcOver, 0); |
287 gfx::Rect(), | |
288 gfx::Rect(), | |
289 false, | |
290 1, | |
291 SkXfermode::kSrcOver_Mode, | |
292 0); | |
293 | 245 |
294 SolidColorDrawQuad* color_quad2 = | 246 SolidColorDrawQuad* color_quad2 = |
295 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 247 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
296 color_quad2->SetNew(pass->shared_quad_state_list.back(), | 248 color_quad2->SetNew(pass->shared_quad_state_list.back(), |
297 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), | 249 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), |
298 false); | 250 false); |
299 | 251 |
300 pass_list.push_back(std::move(pass)); | 252 pass_list.push_back(std::move(pass)); |
301 | 253 |
302 // Make a copy with CopyAll(). | 254 // Make a copy with CopyAll(). |
303 RenderPassList copy_list; | 255 RenderPassList copy_list; |
304 RenderPass::CopyAll(pass_list, ©_list); | 256 RenderPass::CopyAll(pass_list, ©_list); |
305 | 257 |
306 CompareRenderPassLists(pass_list, copy_list); | 258 CompareRenderPassLists(pass_list, copy_list); |
307 } | 259 } |
308 | 260 |
309 } // namespace | 261 } // namespace |
310 } // namespace cc | 262 } // namespace cc |
OLD | NEW |