| 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 "cc/base/math_util.h" | 7 #include "cc/base/math_util.h" |
| 8 #include "cc/base/scoped_ptr_vector.h" | 8 #include "cc/base/scoped_ptr_vector.h" |
| 9 #include "cc/output/copy_output_request.h" | 9 #include "cc/output/copy_output_request.h" |
| 10 #include "cc/quads/checkerboard_draw_quad.h" | 10 #include "cc/quads/checkerboard_draw_quad.h" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 82 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 83 shared_state->SetAll(gfx::Transform(), | 83 shared_state->SetAll(gfx::Transform(), |
| 84 gfx::Size(), | 84 gfx::Size(), |
| 85 gfx::Rect(), | 85 gfx::Rect(), |
| 86 gfx::Rect(), | 86 gfx::Rect(), |
| 87 false, | 87 false, |
| 88 1, | 88 1, |
| 89 SkXfermode::kSrcOver_Mode, | 89 SkXfermode::kSrcOver_Mode, |
| 90 0); | 90 0); |
| 91 | 91 |
| 92 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad = | 92 CheckerboardDrawQuad* checkerboard_quad = |
| 93 CheckerboardDrawQuad::Create(); | 93 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 94 checkerboard_quad->SetNew( | 94 checkerboard_quad->SetNew( |
| 95 pass->shared_quad_state_list.back(), gfx::Rect(), gfx::Rect(), SkColor()); | 95 pass->shared_quad_state_list.back(), gfx::Rect(), gfx::Rect(), SkColor()); |
| 96 pass->quad_list.push_back(checkerboard_quad.PassAs<DrawQuad>()); | |
| 97 | 96 |
| 98 RenderPass::Id new_id(63, 4); | 97 RenderPass::Id new_id(63, 4); |
| 99 | 98 |
| 100 scoped_ptr<RenderPass> copy = pass->Copy(new_id); | 99 scoped_ptr<RenderPass> copy = pass->Copy(new_id); |
| 101 EXPECT_EQ(new_id, copy->id); | 100 EXPECT_EQ(new_id, copy->id); |
| 102 EXPECT_RECT_EQ(pass->output_rect, copy->output_rect); | 101 EXPECT_RECT_EQ(pass->output_rect, copy->output_rect); |
| 103 EXPECT_EQ(pass->transform_to_root_target, copy->transform_to_root_target); | 102 EXPECT_EQ(pass->transform_to_root_target, copy->transform_to_root_target); |
| 104 EXPECT_RECT_EQ(pass->damage_rect, copy->damage_rect); | 103 EXPECT_RECT_EQ(pass->damage_rect, copy->damage_rect); |
| 105 EXPECT_EQ(pass->has_transparent_background, copy->has_transparent_background); | 104 EXPECT_EQ(pass->has_transparent_background, copy->has_transparent_background); |
| 106 EXPECT_EQ(0u, copy->quad_list.size()); | 105 EXPECT_EQ(0u, copy->quad_list.size()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 133 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); | 132 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); |
| 134 shared_state1->SetAll(gfx::Transform(), | 133 shared_state1->SetAll(gfx::Transform(), |
| 135 gfx::Size(1, 1), | 134 gfx::Size(1, 1), |
| 136 gfx::Rect(), | 135 gfx::Rect(), |
| 137 gfx::Rect(), | 136 gfx::Rect(), |
| 138 false, | 137 false, |
| 139 1, | 138 1, |
| 140 SkXfermode::kSrcOver_Mode, | 139 SkXfermode::kSrcOver_Mode, |
| 141 0); | 140 0); |
| 142 | 141 |
| 143 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad1 = | 142 CheckerboardDrawQuad* checkerboard_quad1 = |
| 144 CheckerboardDrawQuad::Create(); | 143 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 145 checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(), | 144 checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(), |
| 146 gfx::Rect(1, 1, 1, 1), | 145 gfx::Rect(1, 1, 1, 1), |
| 147 gfx::Rect(1, 1, 1, 1), | 146 gfx::Rect(1, 1, 1, 1), |
| 148 SkColor()); | 147 SkColor()); |
| 149 pass->quad_list.push_back(checkerboard_quad1.PassAs<DrawQuad>()); | |
| 150 | 148 |
| 151 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad2 = | 149 CheckerboardDrawQuad* checkerboard_quad2 = |
| 152 CheckerboardDrawQuad::Create(); | 150 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 153 checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(), | 151 checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(), |
| 154 gfx::Rect(2, 2, 2, 2), | 152 gfx::Rect(2, 2, 2, 2), |
| 155 gfx::Rect(2, 2, 2, 2), | 153 gfx::Rect(2, 2, 2, 2), |
| 156 SkColor()); | 154 SkColor()); |
| 157 pass->quad_list.push_back(checkerboard_quad2.PassAs<DrawQuad>()); | |
| 158 | 155 |
| 159 // And two quads using another shared state. | 156 // And two quads using another shared state. |
| 160 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); | 157 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); |
| 161 shared_state2->SetAll(gfx::Transform(), | 158 shared_state2->SetAll(gfx::Transform(), |
| 162 gfx::Size(2, 2), | 159 gfx::Size(2, 2), |
| 163 gfx::Rect(), | 160 gfx::Rect(), |
| 164 gfx::Rect(), | 161 gfx::Rect(), |
| 165 false, | 162 false, |
| 166 1, | 163 1, |
| 167 SkXfermode::kSrcOver_Mode, | 164 SkXfermode::kSrcOver_Mode, |
| 168 0); | 165 0); |
| 169 | 166 |
| 170 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad3 = | 167 CheckerboardDrawQuad* checkerboard_quad3 = |
| 171 CheckerboardDrawQuad::Create(); | 168 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 172 checkerboard_quad3->SetNew(pass->shared_quad_state_list.back(), | 169 checkerboard_quad3->SetNew(pass->shared_quad_state_list.back(), |
| 173 gfx::Rect(3, 3, 3, 3), | 170 gfx::Rect(3, 3, 3, 3), |
| 174 gfx::Rect(3, 3, 3, 3), | 171 gfx::Rect(3, 3, 3, 3), |
| 175 SkColor()); | 172 SkColor()); |
| 176 pass->quad_list.push_back(checkerboard_quad3.PassAs<DrawQuad>()); | |
| 177 | 173 |
| 178 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad4 = | 174 CheckerboardDrawQuad* checkerboard_quad4 = |
| 179 CheckerboardDrawQuad::Create(); | 175 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 180 checkerboard_quad4->SetNew(pass->shared_quad_state_list.back(), | 176 checkerboard_quad4->SetNew(pass->shared_quad_state_list.back(), |
| 181 gfx::Rect(4, 4, 4, 4), | 177 gfx::Rect(4, 4, 4, 4), |
| 182 gfx::Rect(4, 4, 4, 4), | 178 gfx::Rect(4, 4, 4, 4), |
| 183 SkColor()); | 179 SkColor()); |
| 184 pass->quad_list.push_back(checkerboard_quad4.PassAs<DrawQuad>()); | |
| 185 | 180 |
| 186 // A second render pass with a quad. | 181 // A second render pass with a quad. |
| 187 RenderPass::Id contrib_id(4, 1); | 182 RenderPass::Id contrib_id(4, 1); |
| 188 gfx::Rect contrib_output_rect(10, 15, 12, 17); | 183 gfx::Rect contrib_output_rect(10, 15, 12, 17); |
| 189 gfx::Transform contrib_transform_to_root = | 184 gfx::Transform contrib_transform_to_root = |
| 190 gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); | 185 gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); |
| 191 gfx::Rect contrib_damage_rect(11, 16, 10, 15); | 186 gfx::Rect contrib_damage_rect(11, 16, 10, 15); |
| 192 bool contrib_has_transparent_background = true; | 187 bool contrib_has_transparent_background = true; |
| 193 | 188 |
| 194 scoped_ptr<TestRenderPass> contrib = TestRenderPass::Create(); | 189 scoped_ptr<TestRenderPass> contrib = TestRenderPass::Create(); |
| 195 contrib->SetAll(contrib_id, | 190 contrib->SetAll(contrib_id, |
| 196 contrib_output_rect, | 191 contrib_output_rect, |
| 197 contrib_damage_rect, | 192 contrib_damage_rect, |
| 198 contrib_transform_to_root, | 193 contrib_transform_to_root, |
| 199 contrib_has_transparent_background); | 194 contrib_has_transparent_background); |
| 200 | 195 |
| 201 SharedQuadState* contrib_shared_state = | 196 SharedQuadState* contrib_shared_state = |
| 202 contrib->CreateAndAppendSharedQuadState(); | 197 contrib->CreateAndAppendSharedQuadState(); |
| 203 contrib_shared_state->SetAll(gfx::Transform(), | 198 contrib_shared_state->SetAll(gfx::Transform(), |
| 204 gfx::Size(2, 2), | 199 gfx::Size(2, 2), |
| 205 gfx::Rect(), | 200 gfx::Rect(), |
| 206 gfx::Rect(), | 201 gfx::Rect(), |
| 207 false, | 202 false, |
| 208 1, | 203 1, |
| 209 SkXfermode::kSrcOver_Mode, | 204 SkXfermode::kSrcOver_Mode, |
| 210 0); | 205 0); |
| 211 | 206 |
| 212 scoped_ptr<CheckerboardDrawQuad> contrib_quad = | 207 CheckerboardDrawQuad* contrib_quad = |
| 213 CheckerboardDrawQuad::Create(); | 208 contrib->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 214 contrib_quad->SetNew(contrib->shared_quad_state_list.back(), | 209 contrib_quad->SetNew(contrib->shared_quad_state_list.back(), |
| 215 gfx::Rect(3, 3, 3, 3), | 210 gfx::Rect(3, 3, 3, 3), |
| 216 gfx::Rect(3, 3, 3, 3), | 211 gfx::Rect(3, 3, 3, 3), |
| 217 SkColor()); | 212 SkColor()); |
| 218 contrib->quad_list.push_back(contrib_quad.PassAs<DrawQuad>()); | |
| 219 | 213 |
| 220 // And a RenderPassDrawQuad for the contributing pass. | 214 // And a RenderPassDrawQuad for the contributing pass. |
| 221 scoped_ptr<RenderPassDrawQuad> pass_quad = RenderPassDrawQuad::Create(); | 215 scoped_ptr<RenderPassDrawQuad> pass_quad = RenderPassDrawQuad::Create(); |
| 222 pass_quad->SetNew(pass->shared_quad_state_list.back(), | 216 pass_quad->SetNew(pass->shared_quad_state_list.back(), |
| 223 contrib_output_rect, | 217 contrib_output_rect, |
| 224 contrib_output_rect, | 218 contrib_output_rect, |
| 225 contrib_id, | 219 contrib_id, |
| 226 false, // is_replica | 220 false, // is_replica |
| 227 0, // mask_resource_id | 221 0, // mask_resource_id |
| 228 contrib_damage_rect, | 222 contrib_damage_rect, |
| 229 gfx::RectF(), // mask_uv_rect | 223 gfx::RectF(), // mask_uv_rect |
| 230 FilterOperations(), | 224 FilterOperations(), |
| 231 FilterOperations()); | 225 FilterOperations()); |
| 232 pass->quad_list.push_back(pass_quad.PassAs<DrawQuad>()); | |
| 233 | 226 |
| 234 pass_list.push_back(pass.PassAs<RenderPass>()); | 227 pass_list.push_back(pass.PassAs<RenderPass>()); |
| 235 pass_list.push_back(contrib.PassAs<RenderPass>()); | 228 pass_list.push_back(contrib.PassAs<RenderPass>()); |
| 236 | 229 |
| 237 // Make a copy with CopyAll(). | 230 // Make a copy with CopyAll(). |
| 238 RenderPassList copy_list; | 231 RenderPassList copy_list; |
| 239 RenderPass::CopyAll(pass_list, ©_list); | 232 RenderPass::CopyAll(pass_list, ©_list); |
| 240 | 233 |
| 241 CompareRenderPassLists(pass_list, copy_list); | 234 CompareRenderPassLists(pass_list, copy_list); |
| 242 } | 235 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 262 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); | 255 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); |
| 263 shared_state1->SetAll(gfx::Transform(), | 256 shared_state1->SetAll(gfx::Transform(), |
| 264 gfx::Size(1, 1), | 257 gfx::Size(1, 1), |
| 265 gfx::Rect(), | 258 gfx::Rect(), |
| 266 gfx::Rect(), | 259 gfx::Rect(), |
| 267 false, | 260 false, |
| 268 1, | 261 1, |
| 269 SkXfermode::kSrcOver_Mode, | 262 SkXfermode::kSrcOver_Mode, |
| 270 0); | 263 0); |
| 271 | 264 |
| 272 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad1 = | 265 CheckerboardDrawQuad* checkerboard_quad1 = |
| 273 CheckerboardDrawQuad::Create(); | 266 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 274 checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(), | 267 checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(), |
| 275 gfx::Rect(1, 1, 1, 1), | 268 gfx::Rect(1, 1, 1, 1), |
| 276 gfx::Rect(1, 1, 1, 1), | 269 gfx::Rect(1, 1, 1, 1), |
| 277 SkColor()); | 270 SkColor()); |
| 278 pass->quad_list.push_back(checkerboard_quad1.PassAs<DrawQuad>()); | |
| 279 | 271 |
| 280 // A shared state with no quads, they were culled. | 272 // A shared state with no quads, they were culled. |
| 281 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); | 273 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); |
| 282 shared_state2->SetAll(gfx::Transform(), | 274 shared_state2->SetAll(gfx::Transform(), |
| 283 gfx::Size(2, 2), | 275 gfx::Size(2, 2), |
| 284 gfx::Rect(), | 276 gfx::Rect(), |
| 285 gfx::Rect(), | 277 gfx::Rect(), |
| 286 false, | 278 false, |
| 287 1, | 279 1, |
| 288 SkXfermode::kSrcOver_Mode, | 280 SkXfermode::kSrcOver_Mode, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 303 SharedQuadState* shared_state4 = pass->CreateAndAppendSharedQuadState(); | 295 SharedQuadState* shared_state4 = pass->CreateAndAppendSharedQuadState(); |
| 304 shared_state4->SetAll(gfx::Transform(), | 296 shared_state4->SetAll(gfx::Transform(), |
| 305 gfx::Size(2, 2), | 297 gfx::Size(2, 2), |
| 306 gfx::Rect(), | 298 gfx::Rect(), |
| 307 gfx::Rect(), | 299 gfx::Rect(), |
| 308 false, | 300 false, |
| 309 1, | 301 1, |
| 310 SkXfermode::kSrcOver_Mode, | 302 SkXfermode::kSrcOver_Mode, |
| 311 0); | 303 0); |
| 312 | 304 |
| 313 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad2 = | 305 CheckerboardDrawQuad* checkerboard_quad2 = |
| 314 CheckerboardDrawQuad::Create(); | 306 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 315 checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(), | 307 checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(), |
| 316 gfx::Rect(3, 3, 3, 3), | 308 gfx::Rect(3, 3, 3, 3), |
| 317 gfx::Rect(3, 3, 3, 3), | 309 gfx::Rect(3, 3, 3, 3), |
| 318 SkColor()); | 310 SkColor()); |
| 319 pass->quad_list.push_back(checkerboard_quad2.PassAs<DrawQuad>()); | |
| 320 | 311 |
| 321 pass_list.push_back(pass.PassAs<RenderPass>()); | 312 pass_list.push_back(pass.PassAs<RenderPass>()); |
| 322 | 313 |
| 323 // Make a copy with CopyAll(). | 314 // Make a copy with CopyAll(). |
| 324 RenderPassList copy_list; | 315 RenderPassList copy_list; |
| 325 RenderPass::CopyAll(pass_list, ©_list); | 316 RenderPass::CopyAll(pass_list, ©_list); |
| 326 | 317 |
| 327 CompareRenderPassLists(pass_list, copy_list); | 318 CompareRenderPassLists(pass_list, copy_list); |
| 328 } | 319 } |
| 329 | 320 |
| 330 } // namespace | 321 } // namespace |
| 331 } // namespace cc | 322 } // namespace cc |
| OLD | NEW |